Spring BlazeDs 集成问题
来源:互联网 发布:洛阳农村淘宝招聘 编辑:程序博客网 时间:2024/04/30 17:52
环境:
- Spring blazeDS Integration 1.0.0 release
- blazeDS 3.2.0.3978
- jdk1.6.0_06
- flex sdk 3.2.0
- flex builder 3
在web.xml中配置DispatcherServlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>flex_server</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/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>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>flex_server</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/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>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
在flex-servlet.xml中定义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:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx" 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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/flex
http://www.springframework.org/schema/flex/spring-flex-1.0.xsd">
<flex:message-broker />
<!-- premiumService是普通的业务bean -->
<flex:remoting-destination ref="premiumService"/>
</beans>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx" 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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/flex
http://www.springframework.org/schema/flex/spring-flex-1.0.xsd">
<flex:message-broker />
<!-- premiumService是普通的业务bean -->
<flex:remoting-destination ref="premiumService"/>
</beans>
这样在remoting-config.xml中就不需要定义destination了
<?xml version="1.0" encoding="UTF-8"?>
<service id="remoting-service"
class="flex.messaging.services.RemotingService">
<adapters>
<adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>
</adapters>
<default-channels>
<channel ref="my-amf"/>
</default-channels>
<!--注释掉,否则启动会报错或出现其他问题
<destination id="premiumService">
<properties>
<source>org.hag.flex.service.PremiumService</source>
</properties>
</destination>
-->
</service>
<service id="remoting-service"
class="flex.messaging.services.RemotingService">
<adapters>
<adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>
</adapters>
<default-channels>
<channel ref="my-amf"/>
</default-channels>
<!--注释掉,否则启动会报错或出现其他问题
<destination id="premiumService">
<properties>
<source>org.hag.flex.service.PremiumService</source>
</properties>
</destination>
-->
</service>
测试
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="premiumService.getPremiumList()">
<mx:Script>
<![CDATA[
<!-- 省略import -->
private function resultHandler(evt:ResultHandler):void
{
Alert.show(evt.result.toString());
}
private function faultHandler(evt:FaultHandler):void
{
Alert.show(evt.fault.toString());
}
]]>
</mx:Script>
<mx:RemoteObject id="premiumService" ref="premiumService"
result="resultHandler(event)" fault="faultHandler(event)"/>
</mx:Application>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="premiumService.getPremiumList()">
<mx:Script>
<![CDATA[
<!-- 省略import -->
private function resultHandler(evt:ResultHandler):void
{
Alert.show(evt.result.toString());
}
private function faultHandler(evt:FaultHandler):void
{
Alert.show(evt.fault.toString());
}
]]>
</mx:Script>
<mx:RemoteObject id="premiumService" ref="premiumService"
result="resultHandler(event)" fault="faultHandler(event)"/>
</mx:Application>
结果这时候报错,destination "premiumService" either does not exists....
原因是mxml编译时要根据remoting-config.xml来处理destination的定义,而我们把premiumService定义在了spring bean中,所以它根本就不知道premiumService的存在。取消掉remoting-config.xml的注释,再次对mxml进行编译(如修改后保存),在浏览器中清除缓存、刷新,OK,结果出来了。
注意在tomcat启动时又要把remoting-config.xml定义的destination注释掉,否则会出问题(那是由于blazeds找到两个相同的destination)。或者干脆在其他地方建立一个文件专门用于mxml的编译。
- Spring BlazeDs 集成问题
- Spring + BlazeDS RC1集成指南
- Spring + BlazeDS RC1集成指南
- Spring + BlazeDS RC1集成指南
- BlazeDS集成调试问题分析
- BlazeDS 与Spring集成指(Spring BlazeDS Integration1.0)
- spring和BlazeDS 集成配置后台
- Spring官方已经出来Spring 与 BlazeDS 集成的解决方案
- BlazeDS Spring Security Integration问题一点总结
- Flash+BlazeDS+Spring+MySQL 中文乱码问题
- 构建全栈式Flex、BlazeDS和Spring集成解决方案
- spring集成blazeds,使用@RemoteDestination实现远程服务
- Flex与Java EE集成,依赖Spring\blazeds
- 使用BlazeDS实现Java和Flex通信(2)---BlazeDS 与Spring集成指南
- Spring BlazeDS
- spring集成JSF问题
- Flex4 中使用Spring flex 来集成BlazeDS 进行远程调用
- spring集成blazeds,使用@RemoteDestination实现远程服务-悄悄俏俏
- 指针赋值时的相容性
- SOAP 简单对象访问协议
- IIS与127.0.0.1访问问题
- 【Stone from other hills】音视频同步原理[ffmpeg]
- 光伏逆变器的选择
- Spring BlazeDs 集成问题
- 公司绝不会告诉你的20大秘密 值得一看很受用
- asp数字分页示例共三个
- RegQueryValueEx 读取 DWORD
- 用友的一道java笔试题(多态,Override)
- 【Stones from other hills】音频/视频同步算法
- 成语典故(1)
- 当程序员变成软件项目经理
- bl_startup.S分析