注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

让一切都逝去吧

排骨炖泥菜/猪肝炒苹果/鱼籽狗肉汤/狗头薏米汤

 
 
 

日志

 
 

Flex整合Spring  

2008-12-18 17:33:23|  分类: Flex |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

利用别人写的SpringFactory类,将FlexSpring整合在一起,配置步骤如下:

1.添加Spring,在web.xml文件里添加配置

<context-param>

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

    <param-value>/WEB-INF/applicationContext.xml</param-value>

</context-param>

   

<listener>

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

</listener>

 

2.flexservices-config.xml文件里添加Spring工厂

<factories>

    <factory id="spring" class="com.flex.factories.SpringFactory"/>

</factories>

 

3.Spring里面定义bean

<bean id="testClass" class="com.....TestService">

    <property name="dataSource" ref="dataSource"/>

</bean>

 

4.flex的远程对象配置文件里配置远程对象,这里要指定远程对象的创建工厂为第2步配置的工厂,远程对象的source要指向Spring里定义的bean

<destination id="test">

    <properties>

    <factory>spring</factory>

    <source>testClass</source>

    </properties>

</destination>

 

5.在页面就可以使用远程对象了

private function send():void{

    test.doSomething(...);

}

...

<mx:RemoteObject id="test" destination="test" result="..."/>

贴上SpringFactory类:
package com.flex.factories;

import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;

import flex.messaging.FactoryInstance;
import flex.messaging.FlexFactory;
import flex.messaging.config.ConfigMap;
import flex.messaging.services.ServiceException;

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


  评论这张
 
阅读(2306)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017