当前位置: 代码迷 >> Web前端 >> BlazeDS 配备
  详细解决方案

BlazeDS 配备

热度:720   发布时间:2012-06-26 10:04:13.0
BlazeDS 配置

关于服务端的发布很简单,按照官网上介绍的,将blazeds.war下下来后,按照示例建一个blazeds的web project?

下面是我project目录的截图

其中可能需要改动的就是remoting-config.xml和web.xml两个文件,其他配置文件默认不需要改动

我的remoting-config.xml如下

复制代码
<?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="helloWorld">
        <properties>
            <source>svr.HelloWorld</source>
        </properties>
    </destination>
    <destination id="bdserver">
        <properties>
            <source>svr.BDServer</source>
        </properties>
    </destination>    
</service>
复制代码

我的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>

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

    <!-- MessageBroker Servlet -->
    <servlet>
        <servlet-name>MessageBrokerServlet</servlet-name>
        <display-name>MessageBrokerServlet</display-name>
        <servlet-class>
            flex.messaging.MessageBrokerServlet
        </servlet-class>
        <init-param>
            <param-name>services.configuration.file</param-name>
            <param-value>/WEB-INF/flex/services-config.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
            
    <servlet>        
      <servlet-name>InitServlet</servlet-name>
      <servlet-class>servlets.InitServlet</servlet-class>
      <load-on-startup>3</load-on-startup>        
    </servlet>

    <!-- RDSDispatchServlet相关配置 默认是注释掉的,如果需要Flash Builder通过data/service服务能连接的话,这边需要去掉注释 -->
    <servlet>
    <servlet-name>RDSDispatchServlet</servlet-name>
    <display-name>RDSDispatchServlet</display-name>
    <servlet-class>flex.rds.server.servlet.FrontEndServlet</servlet-class>
    <init-param>
    <param-name>useAppserverSecurity</param-name>
    <param-value>false</param-value><!-- 此处默认值是true,通过Flash Builder来生成相关服务时,需改为false,即不同相关用户名、密码来验证 -->
    </init-param>        
    <load-on-startup>10</load-on-startup>
    </servlet>
    
    <servlet-mapping id="RDS_DISPATCH_MAPPING">
    <servlet-name>RDSDispatchServlet</servlet-name>
    <url-pattern>/CFIDE/main/ide.cfm</url-pattern>
    </servlet-mapping>
    <!-- 以上是RDSDispatchServlet相关配置  -->

    <servlet-mapping>
        <servlet-name>MessageBrokerServlet</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>

    <!-- 1111 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>
复制代码


至此发布,服务端就算ok了,

?

?

remoteobject:

主要代码如下:

复制代码
        <s:ChannelSet id="channelSet">
            <s:AMFChannel id="amfchannel" url="http://192.168.6.19:8008/blazeds/messagebroker/amf"/>
        </s:ChannelSet>
        <s:RemoteObject id="ro" destination="bdserver" 
                        channelSet="{channelSet}" result="onResult(event)" fault="onFault(event)">
        </s:RemoteObject>
复制代码

这样通过ro这个对象就可以直接调用其发布的方法了

?

连接blazeds生成相关代理文件:

此处需要注意的是如果你的客户端的项目的context root和服务端的webcontext不一致的话就不能生成,会报错,拿我的这个做个列子,我服务端的webcontext是blazeds,而现在客户端的项目webcontext是JNBus,这样会报错,如果你客户端的目录名和服务器的一致就没问题了,但如果不一致的话咋办呢?其实可以临时调整下这个flex project 的context root,改完生成服务代理之后再调整过来,就ok了,改的地方如下图, root url和context root的JNBus换成blazeds

生成之后会自动生成如下的东西:

这样代理文件就算生成好了,下面就看怎么用了,下面是主要代码:

复制代码
    <fx:Declarations>        
        <s:ChannelSet id="channelSet">
            <s:AMFChannel id="amfchannel" url="http://192.168.6.19:8008/blazeds/messagebroker/amf"/>
        </s:ChannelSet>

        <s:CallResponder id="getCarCountResult" result="getCarCountResult_resultHandler(event)" />
    </fx:Declarations>


            private function init(): void {
                this.bdServer = new Bdserver();
                this.bdServer.channelSet = this.channelSet;
                this.getCarCountResult.token = this.bdServer.getCarCount();
            }
复制代码

这样总算可以了