zoukankan      html  css  js  c++  java
  • Spring BlazeDs 集成问题

    环境:

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


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


    这样在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>


    测试

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


    结果这时候报错,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的编译。

  • 相关阅读:
    php中的抽象方法和抽象类,简单明了,一点通
    PHP_保留两位小数并且四舍五入(可用于精度计算)_保留两位小数并且不四舍五入
    如何使用php生成唯一ID的4种方法
    Redis案例——商品秒杀,购物车
    centos+python2+apache2+django环境搭建
    前端上传图片并显示
    通过容器提交镜像(docker commit)以及推送镜像(docker push)
    Name or service not known原因大全
    VMware Workstation 与 Device/Credential Guard 不兼容.在禁用 Device/Credenti
    win10家庭版VMware,禁用Device/Credential Guard不兼容问题
  • 原文地址:https://www.cnblogs.com/muyuge/p/6152651.html
Copyright © 2011-2022 走看看