加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

BlazeDs + Spring 整合

发布时间:2020-12-15 04:26:14 所属栏目:百科 来源:网络整理
导读:在Flex + BlazeDS + java 整合完成的基础上 1. 修改web.xml配置文件。原来是通过blazeds拦截,现在改成用spring 拦截。 ?xml version="1.0" encoding="UTF-8"?!DOCTYPE web-app PUBLIC "-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN" "http://jav

在Flex + BlazeDS + java 整合完成的基础上

1. 修改web.xml配置文件。原来是通过blazeds拦截,现在改成用spring 拦截。

<?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>

    <display-name>BlazeDS</display-name>
    <description>BlazeDS Application</description>

    <!-- Http Flex Session attribute and binding listener support -->
    <listener>
        <listener-class>flex.messaging.HttpFlexSession</listener-class>
    </listener>

     <!-- 定义 spring flex 集成的配置,使用单独的配置文件。
        不使用在一个applicatonContext.xml中import springFlex.xml的方法 
        spring flex 一定要用DispatcherServlet 方法。不能用ContextLoaderListener -->
    <servlet>
        <servlet-name>MessagebrokerServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/applicationContext.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <!-- Map /spring/* requests to the DispatcherServlet -->
    <servlet-mapping>
        <servlet-name>MessagebrokerServlet</servlet-name>
        <url-pattern>/messagebroker/*</url-pattern>
    </servlet-mapping>
    <!-- 定义 spring flex 集成的配置  结束-->

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
    </welcome-file-list>

    <!-- for WebSphere deployment,please uncomment -->
    <!--
    <resource-ref>
        <description>Flex Messaging WorkManager</description>
        <res-ref-name>wm/MessagingWorkManager</res-ref-name>
        <res-type>com.ibm.websphere.asynchbeans.WorkManager</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>
    -->

</web-app>

2. 添加Spring配置文件:applicationContext.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.5.xsd">

	<!-- spring 配置文件来定义 -->
	<flex:message-broker>
		<flex:message-service default-channels="my-amf,my-polling-amf" />
	</flex:message-broker>
	<bean id="hello" class="test.HelloWord">
		<flex:remoting-destination/>
	</bean>
</beans>

3.Flex客户端调用

<?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"
			   creationComplete="application1_creationCompleteHandler(event)">
	
	<fx:Script>
		<![CDATA[
			import mx.controls.Alert;
			import mx.events.FlexEvent;
			import mx.rpc.events.FaultEvent;
			import mx.rpc.events.ResultEvent;
			
			
			protected function application1_creationCompleteHandler(event:FlexEvent):void
			{
				ro.getName("XOXOXO");
			}
			
			protected function ro_resultHandler(event:ResultEvent):void
			{
				Alert.show(event.result as String);
				
			}
			
			protected function ro_faultHandler(event:FaultEvent):void
			{
				Alert.show(event.fault.faultString);	
			}
			
		]]>
	</fx:Script>
	
	<fx:Declarations>
		<s:RemoteObject id="ro"
						result="ro_resultHandler(event)"
						fault="ro_faultHandler(event)"
						destination="hello"/>
	</fx:Declarations>
</s:Application>

* 启动服务器,开始运行,弹出 发送失败。原因是因为没有定义endpoint的,但是有不希望在Flex客户端中硬编码写入endpoint。怎么解决呢?

1. 先在Flex项目中添加一个编译参数:-services "D:carsonsoftcommhomewebappsDLUvsServerWEB-INFflexservices-config.xml"

2. 在services-config.xml中添加默认的通道和端点:

<services>
	<service-include file-path="remoting-config.xml" />
	<service-include file-path="proxy-config.xml" />
	<service-include file-path="messaging-config.xml" />
	<default-channels>
		<channel ref="my-amf" />
	</default-channels>
</services>
Spring + BlazeDS 整合完毕。很简单吧。不过我整合的时候发了将近一天。走了不少弯路呀。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读