配置Flex+BlazeDS+Spring

 

开发环境:Eclipse+Flex Builder.其中Flex Builder可以集成到Eclipse.

1.         准备程序包:BlazeDS的开发包.Spring-Flex 1.0

2.         创建一个web项目.把源代码目录改为javasrc以便和flex的源代码区分开来.

3.         创建java服务类.代码如下:

package cn.hk.demo.service.impl;

 

import cn.hk.demo.service.HelloService;

 

public class HelloServiceImpl implements HelloService

{

 

        public String sayHello()

        {

           return "Hello Flex with Spring and BlazeDS";

        }

 

}

4.         配置BlazeDS环境.

解压blazeds.war.WEB-INF中的flex目录放到工程的WEB-INF目录下.里面的.xml文件是配置flexjava通信的默认channeljava adapter.如果不进行其他的配置可以不对这些文件进行修改.web.xml中添加flexlistener代码如下:

<listener>

<listener-class>flex.messaging.HttpFlexSession</listener-class>

</listener>

接着添加BlazeDS的依赖包就可以完成BlazeDS的配置.

5.         增加Spring支持.

Spring-flexjar添加的项目运行库中.配置web.xml加入以下内容:

<servlet>

<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <init-param>

        <param-name>contextConfigLocation</param-name>

        <param-value>/WEB-INF/spring-config.xml</param-value>

    </init-param>

    <load-on-startup>1</load-on-startup>

</servlet>

 <servlet-mapping>

<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>

<url-pattern>/messagebroker/*</url-pattern>

<servlet-mapping>

以上是添加Spring DispatcherServlet配置.Spring DispatcherServlet来转发Flex的请求.这样可以让后台的代码利用Spring的特性.并且服务也可以通过Spring来暴露.

WEB-INF中创建spring-config.xml文件.在不结合Spring的情况下BlazeDSServlet是需要在web.xml中配置.现在只须把BlazeDS的相关类托管给Spring容器.spring-config.xml的配置如下:

<bean id="_messageBroker"

                   class="org.springframework.flex.core.MessageBrokerFactoryBean">

</bean>

<bean

         class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

         <property name="mappings">

                   <value>/*=_messageBroker</value>

         </property>

</bean>

<bean class="org.springframework.flex.servlet.MessageBrokerHandlerAdapter" />

接着配置需要暴露的服务类:

<bean id="hello" class="org.springframework.flex.remoting.RemotingDestinationExporter">

         <property name="messageBroker" ref="_messageBroker"/>

         <property name="service" ref="helloService"/>

</bean>

        

<bean id="helloService" class="com.newland.demo.service.impl.HelloServiceImpl">

</bean>

至此后台整合完成.将项目发布到服务器中,启动服务器.

6.         添加Flex客户端.

如果Flex Builder不是独立的话.右击项目选择Flex Projec Nature->Add Flex Projec Nature

如果Flex Builder是独立的话.直接新建Flex项目.

选择后台技术为J2EE.

配置服务器路径,路径必须很发布的项目一致.修改flex文件输出目录,这个名称可以自己命名:

如果是集成环境的话还需要配置一下项目的Flex SDK路径.独立的Flex Builder就不用.

7.         编写客户端代码

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init();" backgroundColor="White">

       <mx:Script>

              <![CDATA[

                     import mx.managers.IBrowserManager;

                     import mx.rpc.events.FaultEvent;

                     import mx.rpc.events.ResultEvent;

                     import mx.managers.BrowserManager;

                     import mx.controls.Alert;

                     import mx.rpc.remoting.mxml.RemoteObject;

                    

                     private function init():void

                     {

                            var browerManager:IBrowserManager  =BrowserManager.getInstance();

                            browerManager.init();

                            var url:String=browerManager.url;

                            var urls:Array=url.split("/");

                            var remote:RemoteObject=new RemoteObject();

                            remote.destination="hello";

                            remote.addEventListener(ResultEvent.RESULT,result);

                            remote.addEventListener(FaultEvent.FAULT,fault);

                            remote.endpoint="http://"+urls[2]+"/"+urls[3]+"/messagebroker/amf"

                            remote.sayHello();

                     }

                    

                     private function result(event:ResultEvent):void

                     {

                            Alert.show(event.result.toString(),"成功");

                     }

                     private function fault(event:FaultEvent):void

                     {

                            Alert.show(event.fault.toString(),"失败");

                     }

              ]]>

       </mx:Script>

</mx:Application>

 

RemoteObject对象的destination是要访问的服务的名称,也就是Spring所暴露出的服务的id.需要注意的是RemoteObject对象的endpoint的路径.如果不配置的话将找不到destination.

 

====================================================

 

实习的时候整的东西...  remote.endpoint="http://"+urls[2]+"/"+urls[3]+"/messagebroker/amf"这个有更好的写法

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值