Accelerate Spring Flex development with Skyway + BlazeDS (Part 2/2)
This blog is divided into 2 parts:
- Part 1: Setup & CRUD
- Part 2: Adding Spring Flex
web.xml
- Turn off web.xml generation: At this point, you may want to turn off Skyway code generation for the web.xml since we will manually add code into the web.xml for spring-flex. To do this, double-click the Spring DSL visual artifact and go to the Code Generation tab. In the Code Generation section, find the Web Deployment Descriptor / web.xml row, and uncheck the Generate checkbox. Save the Spring DSL visual artifact. Skyway does have merging capabilities in the web.xml, so this step is optional.
- Add the messagebroker servlet mapping: Insert the following code where the servlet mappings are defined. This mapping is used by the Flex remoting object.
<servlet-mapping> <servlet-name>BodyBuilder Servlet</servlet-name> <url-pattern>/messagebroker/*</url-pattern> </servlet-mapping> - Add the flex context file: Find where the BodyBuilder Servlet is defined. In the param-value element for the contextConfigLocation, add /WEB-INF/flex-servlet.xml,. So the resulting servlet block should look like:
<servlet> <description>generated-servlet</description> <servlet-name>BodyBuilder Servlet</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/flex-servlet.xml, classpath:BodyBuilder-generated-web-context.xml, classpath:BodyBuilder-web-context.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
flex-servlet.xml
- Add a file, named flex-servlet.xml, to the Web Project > WebContent/WEB-INF folder with the following contents:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:flex="http://www.springframework.org/schema/flex" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/flex http://www.springframework.org/schema/flex/spring-flex-1.0.xsd"> <flex:message-broker/> <!-- Expose the ContestantService bean for BlazeDS remoting --> <flex:remoting-destination ref="ContestantService" /> </beans>
services-config.xml
- When adding the Flex Project Nature, it adds a handful of files to the Web Project > WebContent/WEB-INF/flex folder. Feel free to use whatever Flex provides. However, to just get remoting up and running on a channel, all you need in the services-config.xml file is the following:
<?xml version="1.0" encoding="UTF-8"?> <services-config> <services> <default-channels> <channel ref="my-amf"/> </default-channels> </services> <channels> <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel"> <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/> </channel-definition> </channels></services-config>NOTE: Anytime this file is udpated or modified, you’ll want to force a recompile of the swf file. These configurations are compiled into the flash file.
Add jars
- The following jars need to be added either through classpath containers or the WEB-INF/lib folder. Both can be found in the spring-flex download (with dependencies):
- org.codehaus.jackson-1.0.0.jar
- org.springframework.flex-1.0.1.RELEASE.jar
Flex UI – main.mxml
- To get a simple list view of the Body Builder Contestants, all that is needed is a remoting object defined, a data grid, and a button to load the data:
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:RemoteObject id="ro" destination="ContestantService"/> <mx:DataGrid dataProvider="{ro.loadContestants.lastResult}" width="100%" height="50%"/> <mx:Button label="Get Contestants" click="ro.loadContestants()"/> </mx:Application>
A couple final project tweaks
- Flex Server: The last tweak to make is in the Web Project Properties > Flex Server. Change the Root URL to http://localhost:8400 (if using the turnkey BlazeDS server), and the Context Root to /BodyBuilder-Web. Click Validate Location. If it does not validate, you should still be able to click OK.
- Logging: The Flex Project Nature adds a commons-logging.properties file to the WEB-INF/classes folder. Feel free to delete or tweak that file as necessary as it won’t show the Spring Hibernate logs that you may be used to with Skyway upon server startup.
Run it on BlazeDS
If the BlazeDS tomcat server was added to the Eclipse Server view, just add the BodyBuilder-Web project to the server and run! (you may want to add some data to your Contestant table first)
Potential Errors
[RPC Fault faultString="[MessagingError message='Destination 'ContestantService' either does not exist or the destination has no channels defined (and the application does not define any default channels.)']” faultCode=”InvokeFailed” faultDetail=”Couldn’t establish a connection to ‘ContestantService’”]
I thought the above error was important to mention since I received it about 300 times :-) This usually means something is wrong with the services-config.xml file in the flex folder, or it hasn’t been compiled into the SWF file. Ensure the file exists, and sometimes forcing a recompile of the mxml file does the trick.
References
- spring-flex: http://www.springsource.org/spring-flex, what I found particularly helpful was the distribution download with the samples. Kudos to Christophe Coenraets for creating the test drive samples.
- Skyway docs: http://www.skywayperspectives.org/portal/web/guest/documentation
- Sample Project(s): BodyBuilder-SpringFlex This is the resulting Skyway/Flex project from this blog. BodyBuilder-CRUD is the sample project providing all CRUD operations in flex side by side with Spring MVC.
- Skyway Flex Extensions: One could imagine this becoming a pretty easy extension to Skyway’s generation framework. Stay tuned! And visit the GWT Extension blog for more details.
Tags: blazeDS, Code Generation, ria, Scaffolding, skyway, Skyway Builder 6.3, spring, spring-flex








December 17th, 2009 at 2:48 pm
Very nice blog post Dave. The things in part 2 of the blog seem like something that could be an extension to Skyway Builder to automatically generate for you. I wonder if the Spring and Flex community would be interested in a extension to Builder that would do that?
December 19th, 2009 at 3:42 am
I saw your comment on my blog post: (http://leonardovarela.com/blog/wordpress/?p=8) and immediately started reading about your product. Looks very promising and definitely worth improving.
It is a very interesting extension to your already interesting product. For a code generator I would like to see the generation of the configuration files being automated, and the generation of the web.xml modified to handle Flex projects seamlessly.
I would also like to see some kind of MVC architectural approach on the Flex side to actually take advantage of the power of Flex, its flexibility, robustness and richness. Once this added a unit test approach using eaither Flex unit or Fluint. In the long run it would be nice to see different architectural approaches/options/combinations, i.e. Cairngorm, Cairngorm + IoC Flex, Pasta, Prana, PureMVC, Cairgorm + Spring ActionScript…. etc
I would also like to see some build solution automatically integrated, so a building process either with Antennae(http://code.google.com/p/antennae/) or even much better Flex Mojos (http://flexmojos.sonatype.org/).
I hope this helps!
Leonardo Varela
December 19th, 2009 at 8:58 am
I tried your product, And generated all the back-end with all the ‘goodies’, and It saved me a lot of time! Good job. I’m going to try to extract it from Eclipse, add maven, and add Spring ActionScript and Cairngorm…LEt see how it goes…
December 20th, 2009 at 9:10 am
Hi Dave,
first of all thank you for setting up this tutorial. I can imagine that is not easy to find a way for the very first time. So thank you for your tutorial!
I followed your instructions, here are my comments:
Concerning your services-config:
Heres is your very first version:
The default blazeds turnkey messaging-config referrs to a
Therefore there need to be a definition in the servcies-config as well. Or the chanel under “messaging-config” have to be adusted
I would set up logging as well, to get a message to a console if something goes wrong, and its good to configure redeploy to avoid restarts.
Here is the servcies.config I used:
<!– Uncomment the correct app server
–>
<!–
Basic
guests
accountants
employees
managers
–>
true
4
<!–
false
false
–>
[BlazeDS]
false
false
false
false
Endpoint.*
Service.*
Configuration
true
20
{context.root}/WEB-INF/flex/services-config.xml
{context.root}/WEB-INF/flex/remoting-config.xml
{context.root}/WEB-INF/web.xml
<!–
{context.root}/WEB-INF/flex/proxy-config.xml
{context.root}/WEB-INF/flex/messaging-config.xml
{context.root}/WEB-INF/flex/data-management-config.xml
–>
After finishing the tutorial I am getting still the some errors in the console, when I start the server, see at the end.
When I choose main.mxml runs as “Flex Application” and click “get contestants” I get the error:
[RPC Fault faultString="[MessagingError message='Destination 'ContestantService' either does not exist or the destination has no channels defined (and the application does not define any default channels.)']” faultCode=”InvokeFailed” faultDetail=”Couldn’t establish a connection to ‘ContestantService’”]
at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::invoke()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:263]
at mx.rpc.remoting.mxml::Operation/http://www.adobe.com/2006/flex/mx/internal::invoke()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\remoting\mxml\Operation.as:197]
at mx.rpc.remoting::Operation/send()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\remoting\Operation.as:113]
at Function/http://adobe.com/AS3/2006/builtin::apply()
at mx.rpc.remoting.mxml::Operation/send()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\remoting\mxml\Operation.as:170]
at Function/http://adobe.com/AS3/2006/builtin::apply()
at mx.rpc::AbstractService/http://www.adobe.com/2006/actionscript/flash/proxy::callProperty()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AbstractService.as:290]
at main/___main_Button1_click()[C:\web\ws\ec\ganymede-ee\BodyBuilder-Web\flex_src\main.mxml:9]
When I copy your complete (!) content from the “Web-INF” folder to my project I do not get any errors. So there seems to be a change/setting, which is not mentioned in your tutorial so far?
Althought I did get any errors on startup, I do when I click the “Get contestants” button in the flex app I get the following error message, where does the “SkywayDB” com from?
20.12.2009 14:49:40 org.apache.catalina.core.StandardWrapperValve invoke
SCHWERWIEGEND: Servlet.service() for servlet default threw exception
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named ‘SkywayDB’ is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:387)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:968)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:246)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:168)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:885)
at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.lookupEntityManagerFactory(OpenEntityManagerInViewFilter.java:151)
at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.lookupEntityManagerFactory(OpenEntityManagerInViewFilter.java:134)
at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:852)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:584)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1508)
at java.lang.Thread.run(Thread.java:619)
So I did not get it to work so far.
Can you please help me with this, I tried it 7 times so far.
Thank you!
M. Zach
Here are the mentioned error messages from the console after following the instructions:
20.12.2009 14:40:51 org.apache.catalina.core.AprLifecycleListener init
INFO: Loaded Apache Tomcat Native library 1.1.16.
20.12.2009 14:40:51 org.apache.catalina.core.AprLifecycleListener init
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
20.12.2009 14:40:52 org.apache.coyote.http11.Http11AprProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-8400
20.12.2009 14:40:52 org.apache.coyote.ajp.AjpAprProtocol init
INFO: Initializing Coyote AJP/1.3 on ajp-8009
20.12.2009 14:40:52 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 866 ms
20.12.2009 14:40:52 org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
20.12.2009 14:40:52 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.14
20.12.2009 14:40:53 org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
No properties path set – looking for transactions.properties in classpath…
transactions.properties not found – looking for jta.properties in classpath…
Using init file: /C:/web/bin/blazeds/tomcat/webapps/BodyBuilder-Web/WEB-INF/classes/jta.properties
20.12.2009 14:40:55 org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet ‘BodyBuilder Servlet’
20.12.2009 14:40:56 org.apache.catalina.core.ApplicationContext log
SCHWERWIEGEND: StandardWrapper.Throwable
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘_messageBrokerDefaultHandlerMapping’: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘_messageBroker’: Invocation of init method failed; nested exception is org.springframework.beans.factory.BeanInitializationException: MessageBroker initialization failed; nested exception is java.lang.NullPointerException
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:402)
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:316)
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:282)
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:126)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4045)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4351)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘_messageBroker’: Invocation of init method failed; nested exception is org.springframework.beans.factory.BeanInitializationException: MessageBroker initialization failed; nested exception is java.lang.NullPointerException
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1337)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.AbstractBeanFactory.isSingleton(AbstractBeanFactory.java:366)
at org.springframework.context.support.AbstractApplicationContext.isSingleton(AbstractApplicationContext.java:897)
at org.springframework.web.servlet.handler.AbstractUrlHandlerMapping.registerHandler(AbstractUrlHandlerMapping.java:294)
at org.springframework.web.servlet.handler.SimpleUrlHandlerMapping.registerHandlers(SimpleUrlHandlerMapping.java:129)
at org.springframework.web.servlet.handler.SimpleUrlHandlerMapping.initApplicationContext(SimpleUrlHandlerMapping.java:103)
at org.springframework.context.support.ApplicationObjectSupport.initApplicationContext(ApplicationObjectSupport.java:119)
at org.springframework.web.context.support.WebApplicationObjectSupport.initApplicationContext(WebApplicationObjectSupport.java:69)
at org.springframework.context.support.ApplicationObjectSupport.setApplicationContext(ApplicationObjectSupport.java:73)
at org.springframework.context.support.ApplicationContextAwareProcessor.postProcessBeforeInitialization(ApplicationContextAwareProcessor.java:70)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:350)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1330)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
… 33 more
Caused by: org.springframework.beans.factory.BeanInitializationException: MessageBroker initialization failed; nested exception is java.lang.NullPointerException
at org.springframework.flex.core.MessageBrokerFactoryBean.afterPropertiesSet(MessageBrokerFactoryBean.java:185)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1368)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1334)
… 54 more
Caused by: java.lang.NullPointerException
at org.springframework.util.ReflectionUtils.makeAccessible(ReflectionUtils.java:381)
at org.springframework.flex.core.MessageBrokerFactoryBean.setInitServletContext(MessageBrokerFactoryBean.java:311)
at org.springframework.flex.core.MessageBrokerFactoryBean.afterPropertiesSet(MessageBrokerFactoryBean.java:141)
… 56 more
20.12.2009 14:40:56 org.apache.catalina.core.StandardContext loadOnStartup
SCHWERWIEGEND: Servlet /BodyBuilder-Web threw load() exception
java.lang.NullPointerException
at org.springframework.util.ReflectionUtils.makeAccessible(ReflectionUtils.java:381)
at org.springframework.flex.core.MessageBrokerFactoryBean.setInitServletContext(MessageBrokerFactoryBean.java:311)
at org.springframework.flex.core.MessageBrokerFactoryBean.afterPropertiesSet(MessageBrokerFactoryBean.java:141)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1368)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1334)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.AbstractBeanFactory.isSingleton(AbstractBeanFactory.java:366)
at org.springframework.context.support.AbstractApplicationContext.isSingleton(AbstractApplicationContext.java:897)
at org.springframework.web.servlet.handler.AbstractUrlHandlerMapping.registerHandler(AbstractUrlHandlerMapping.java:294)
at org.springframework.web.servlet.handler.SimpleUrlHandlerMapping.registerHandlers(SimpleUrlHandlerMapping.java:129)
at org.springframework.web.servlet.handler.SimpleUrlHandlerMapping.initApplicationContext(SimpleUrlHandlerMapping.java:103)
at org.springframework.context.support.ApplicationObjectSupport.initApplicationContext(ApplicationObjectSupport.java:119)
at org.springframework.web.context.support.WebApplicationObjectSupport.initApplicationContext(WebApplicationObjectSupport.java:69)
at org.springframework.context.support.ApplicationObjectSupport.setApplicationContext(ApplicationObjectSupport.java:73)
at org.springframework.context.support.ApplicationContextAwareProcessor.postProcessBeforeInitialization(ApplicationContextAwareProcessor.java:70)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:350)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1330)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:402)
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:316)
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:282)
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:126)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4045)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4351)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
20.12.2009 14:40:59 org.apache.coyote.http11.Http11AprProtocol start
INFO: Starting Coyote HTTP/1.1 on http-8400
20.12.2009 14:40:59 org.apache.coyote.ajp.AjpAprProtocol start
INFO: Starting Coyote AJP/1.3 on ajp-8009
20.12.2009 14:40:59 org.apache.catalina.startup.Catalina start
INFO: Server startup in 6862 ms
December 20th, 2009 at 9:24 am
Hi Dave, Niel,
>I wonder if the Spring and Flex community would be interested in a >extension to Builder that would do that?
Interested? We will love it! Please, please when can we use it?
M. Zach
December 29th, 2009 at 12:27 pm
M.Zach,
regarding your errors above – have you tried running the sample project listed in Page 2 > References?