BlazeDS -- Flex 与 Java 互通之旅

1、工程配置web.xml引入BlazeDS

 

    <!-- Spring configuration for listener-->

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

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

        <servlet-name>MessageBrokerServlet</servlet-name>

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

    </servlet-mapping>

 

 

 

 

2、remoting-config.xml

<destination id="userServiceDestination">
<properties>
<factory>spring</factory>
<source>userService</source>
</properties>
</destination> 

<factories>

<factory id="spring" class="com.youcity.website.back.factory.SpringFactory"/> 

</factories>

 

 

 

3、SpringFactory.java

 

 

public class SpringFactory implements FlexFactory

{

    private static final String SOURCE = "source";

 

    public void initialize(String id, ConfigMap configMap) {}

 

    public FactoryInstance createFactoryInstance(String id, ConfigMap properties)

    {

        SpringFactoryInstance instance = new SpringFactoryInstance(this, id, properties);

        instance.setSource(properties.getPropertyAsString(SOURCE, instance.getId()));

        return instance;

    } // end method createFactoryInstance()

 

    public Object lookup(FactoryInstance inst)

    {

        SpringFactoryInstance factoryInstance = (SpringFactoryInstance) inst;

        return factoryInstance.lookup();

    } 

 

 

    static class SpringFactoryInstance extends FactoryInstance

    {

        SpringFactoryInstance(SpringFactory factory, String id, ConfigMap properties)

        {

            super(factory, id, properties);

        }

 

 

        public String toString()

        {

            return "SpringFactory instance for id=" + getId() + " source=" + getSource() + " scope=" + getScope();

        }

 

        public Object lookup() 

        {

            ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(flex.messaging.FlexContext.getServletConfig().getServletContext());

            String beanName = getSource();

 

            try

            {

                return appContext.getBean(beanName);

            }

            catch (NoSuchBeanDefinitionException nexc)

            {

                ServiceException e = new ServiceException();

                String msg = "Spring service named '" + beanName + "' does not exist.";

                e.setMessage(msg);

                e.setRootCause(nexc);

                e.setDetails(msg);

                e.setCode("Server.Processing");

                throw e;

            }

            catch (BeansException bexc)

            {

                ServiceException e = new ServiceException();

                String msg = "Unable to create Spring service named '" + beanName + "' ";

                e.setMessage(msg);

                e.setRootCause(bexc);

                e.setDetails(msg);

                e.setCode("Server.Processing");

                throw e;

            } 

        }

 

    } 

 

 

 

 

4、java bean

< bean   id = "userService"    class = "com.youcity.website.back.sample.UserServiceImpl"/ >   

 

public  String hello(String str){

return   "Hello: "  + str;

}  

 

 

5、flex调用

 

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

< mx:Application   xmlns:mx = "http://www.adobe.com/2006/mxml"   layout = "absolute" >   

< mx:Script >   

<![CDATA[  

import mx.rpc.events.ResultEvent;  

import mx.controls.Alert;  

 private function callHello(str:String):void{  

Alert.show("userServiceDestination");  

                //调用java bean 方法

Hello. hello(str);  

Hello.addEventListener(ResultEvent.RESULT,getHelloResult);  

}  

        //回调函数,出来返回数据

private function getHelloResult(e:ResultEvent) :void {  

Alert.show(e.result.toString());  

}  

 

]]>   

 </ mx:Script >   

< mx:RemoteObject   id = "Hello"   destination = "userServiceDestination" />   

< mx:TextInput   x = "109"   y = "28"   id = "input"   text = "World!" />   

< mx:Button   x = "270"   y = "28"   click = "callHello(input.text)"   label = "hello" />   

</ mx:Application >   

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值