上篇文章提到java与flex结合,这种方法简单,但缺点也很明显,不利于大型项目的开发与管理,然而现在几乎所有J2ee,JAVAEE项目都会用到spring框架,所以spring与flex结合就是一种必然。
令人高兴的是spring组织也早就意识到了这一点,推出了一款spring与flex结合的插件:Spring BlazeDS Integration
下载地址是:http://s3.amazonaws.com/dist.springframework.org/milestone/FLEX/spring-flex-1.5.0.RC1-dist.zip
通过sbi我们可以很轻松的用spring来控制java和flex的配置,而不必在flex的配置文件中配置大量的remoteObject了。
下面开始整合spring和flex:
1.首先新建一个web工程,名称为spring_flex_demo;
2.通过上篇文章我们知道flex通过blazeds可以与java结合,所以这里也离不开它,解压官网下载的blazeds.war到我们的工程web目录下,替换原来的文件内容。
3.右键单击项目选择“添加/修改项目类型”,选择“添加flex项目类型”,然后按我上篇文章,blazeds与java结合的例子配置,配置成功后开始准备整合spring了。
4.拷贝sbi 的jar包到lib目录下,拷贝spring的jar到lib下。
5.下面开始配置spring,首先配置web.xml。
删除原blazeds的内容,添加sbi的配置
<!-- The front controller of this Spring Web application, responsible for handling all application requests --> <servlet> <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/config/web-application-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- Map all /messagbroker requests to the DispatcherServlet for handling --> <servlet-mapping> <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> <url-pattern>/messagebroker/*</url-pattern> </servlet-mapping>
其实这段话可以在sbi的文档中找到。
6.如果你想用springMVC,则可以配置成下列情况:
<context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/spring/*-context.xml </param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>flex</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>flex</servlet-name> <url-pattern>/messagebroker/*</url-pattern> </servlet-mapping> <servlet> <servlet-name>spring-mvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring-mvc</servlet-name> <url-pattern>/spring/*</url-pattern> </servlet-mapping>
完整的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<!-- The front controller of this Spring Web application, responsible for handling all application requests -->
<servlet>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/web-application-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Map all /messagbroker requests to the DispatcherServlet for handling -->
<servlet-mapping>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<url-pattern>/messagebroker/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
</web-app>
标红地方可以根据情况自行更改
7.更改spring配置文件:
新建一个web-application-config.xml文件,插入以下内容:
<?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"> </beans>
这个配置文件已经添加了对flex标签的支持。
8.添加flex内容:
在web-application-config.xml添加:
<!-- Bootstraps and exposes the BlazeDS MessageBroker --> <bean id="_messageBroker" class="org.springframework.flex.core.MessageBrokerFactoryBean" > <property name="servicesConfigPath" value="WEB-INF/flex/services-config.xml" /> </bean>
再添加
<!-- Maps request paths at /* to the BlazeDS MessageBroker --> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <value> /*=_messageBroker </value> </property> </bean> <!-- Dispatches requests mapped to a MessageBroker --> <bean class="org.springframework.flex.servlet.MessageBrokerHandlerAdapter"/>
至此spring配置算是基本完成了
9.下面配置flex,打开WEB-INF/flex/services-config.xml 修改“<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">“为
<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"/> <properties> <polling-enabled>false</polling-enabled> </properties> </channel-definition>
大功告成!