June 2010 Update: This original blog post was written prior to the release of Spring Flex Scaffolding support in MyEclipse for Spring 8.6. Why read this tutorial, when you can build an entire Spring Flex CRUD app using your own tables or code in a matter of seconds?  This tutorial is now productized in the MyEclipse for Spring 8.6 release. Download and try it today! Check out the what’s generated blog or the getting started video.
In Part 1 of Accelerate Spring Flex development with Skyway + BlazeDS, I covered prerequisites, development environment setup, project creation, and scaffolding a domain object in Skyway.  In Part 2, I will discuss adding the necessary pieces to get a Spring application Flex enabled through BlazeDS remoting.
This blog is divided into 2 parts:

web.xml

  1. 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.
  2. 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>
  3. 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

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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.
  2. 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

< Page 1 | 2

Bookmark and Share

Tags: , , , , , , ,

{ 6 Comments }
  1. Niel Eyde says:

    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?

  2. Leonardo Varela says:

    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

  3. Leonardo Varela says:

    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…

  4. M. Zach says:

    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

  5. M. Zach says:

    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

  6. Dave Meurer says:

    M.Zach,
    regarding your errors above – have you tried running the sample project listed in Page 2 > References?

Leave a Reply