使用Spring BlazeDS Integration集成Java和Flex
?Spring BlazeDS Integration项目地址http://www.springsource.org/spring-flex,其中的Reference Documentation还没中文版,自己啃了几天,搞出个demo,在这里做个笔记备忘。
?
1. 准备好以下jar包
?
SpringHibernate(如果需要的话)BlazeDSSpring-flex?
2. 先用MyEclipse建立Web工程,再加入Flex。
PS:在工程的属性中Flex Builder Path的源代码,把src目录改成flex_src(src习惯用来放java的源代码)
?
3. 配置
如果下载了BlazeDS.war,把WEB-INF目录下的flex目录复制到项目的WEB-INF目录。
如果没有下载,手工在WEB-INF建个flex目录,再新建一个services-config.xml文件。添加以下的配置:
<?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" /> </channel-definition> <channel-definition id="my-polling-amf" /> <properties> <polling-enabled>true</polling-enabled> <polling-interval-seconds>4</polling-interval-seconds> </properties></channel-definition></channels></services-config>
?接下来在web.xml加上:
<servlet><servlet-name>flexServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring/*.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>flexServlet</servlet-name><url-pattern>/messagebroker/*</url-pattern></servlet-mapping>
?接下来就是spring的配置了,在WEB-INF下建一个spring目录,用来存放spring的配置文件。
新建一个base.xml文件,引入flex的命名空间
xmlns:flex="http://www.springframework.org/schema/flex"
配置?<flex:message-broker />就会把Spring拦截到的消息交给BlazeDS处理了。
如果要把业务方法暴露给flex调用,只需要在<beans>加上<flex:remoting-destination/>就可以了
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:flex="http://www.springframework.org/schema/flex"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsdhttp://www.springframework.org/schema/flexhttp://www.springframework.org/schema/flex/spring-flex-1.0.xsd"default-autowire="byName"><!-- Flex的AMF协议配置 --><flex:message-broker /><bean id="userService" class="blue.system.service.UserService"><flex:remoting-destination/></bean></beans>
?
4. flex客户端
<mx:RemoteObject id="userSerice"?endpoint=http://localhost:8080/demo/messagebroker/amf/>
就可以用userService来调用java端的方法了