*** 6/8 UPDATE:  We have now added Flex Scaffolding in MyEclipse for Spring 8.6!!  Create an entire Spring Flex CRUD app in a matter of seconds.  Try it by downloading the 8.6 milestone. Check out the what's generated blog or the getting started video.

UPDATES: This blog has been updated for MyEclipse for Spring 8.5, Spring 3.0, and Flash Builder 4.  If you are looking for the previous version that includes the MyEclipse for Spring milestone, Spring 2.5, and Flex Builder 3, download the archived pdf.

In Part 1 of this example, I covered prerequisites, project creation and setup, and scaffolding in MyEclipse for Spring.  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. 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>ClassicFlexCars Servlet</servlet-name>
        <url-pattern>/messagebroker/*</url-pattern>
    </servlet-mapping>
  2. Add the flex context file: Find where the ClassicFlexCars 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>ClassicFlexCars 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:ClassicFlexCars-generated-web-context.xml,
              classpath:ClassicFlexCars-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 ClassicFlexCars > WebRoot/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-3.0.xsd
     http://www.springframework.org/schema/flex
     http://www.springframework.org/schema/flex/spring-flex-1.0.xsd">        
    
         <flex:message-broker/>
    
         <!-- Expose the ProductService bean for BlazeDS remoting -->
         <flex:remoting-destination ref="ProductService" />
    
    </beans>

services-config.xml

  1. When adding the Flex Project Type, it adds a handful of files to the WebRoot/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 the spring-flex jar

  1. Add The following jar either through classpath containers or the WEB-INF/lib folder.  This jar can be found at the spring-flex download:
    • org.springframework.flex-1.0.3.RELEASE.jar

Flex UI - ClassicFlexCars.mxml

  1. To get a simple list view of the miniature cars, 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"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
    
        <fx:Declarations>
            <s:RemoteObject id="ro" destination="ProductService" />
        </fx:Declarations>
    
        <s:VGroup horizontalAlign="left">
            <mx:AdvancedDataGrid dataProvider="{ro.loadProducts.lastResult}"/>
            <s:Button label="Get Cars" click="ro.loadProducts()"/>
        </s:VGroup>
    </s:Application>
    

Run it on BlazeDS

Add the BlazeDS tomcat server to the MyEclipse Server view by right-clicking the Servers pane and clicking Configure Server Connector.  Configure the Tomcat 6.x server to point to the BlazeDS tomcat directory.  Then add the ClassicFlexCars project to the server and run!  Browse to http://localhost:8400/ClassicFlexCars/ClassicFlexCars.html

References

< Page 1 | 2

Related Posts

How Developers Can Get in on the Pokémon Go Craze Unless you’ve been living under a rock, you’ve heard of Pokémon Go. This mobile app uses GPS to combine the virtual world and the real world. Back in the day, I logged many hours playing Pokémon on an old Nintendo Game Boy. Now, Pokémon Go has gotten me outside hunting for Pokémon because I want to "catch’em all"!I must not be the only nostalgic Po...
How Working from Home Got Me out of the House I feel privileged to work for a company with a virtual workplace. I know some of you will read this and think it must be lonely to work from home, but that’s not the case. Genuitec’s annual team building trips have been a great way to stay connected with my team. These trips have also helped me realize how much I enjoy discovering new places.Let’s ...
You’re Not Nearly as Good as You Think You A... “Ignorance more frequently begets confidence than does knowledge.”— Charles DarwinYou’re a good driver, right? Better than average you’d say? Pretty smart too I’d wager. Of course smarter than average; I won’t even ask because you’re reading our blog. How about entrepreneurship? I bet you could start a new company and do at least as good as the ave...
Stable With a Side of CI5 The time to move to MyEclipse 2016 is now.After months of very arduous work, MyEclipse 2016 Stable 1.0 is finally here! This is definitely one of the most exciting releases of the year (so far!). Why? Because we not only continued maintaining and improving core Java EE features, but we are also focusing on providing support for the Full Stack devel...

Posted on Feb 16th 2010