当前位置: 网学 > 编程文档 > JAVA > 正文

将 Flex 集成到 Java EE 应用程序的最佳实践

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/08/05
器中查找 FlexService:

清单 9. SpringFactoryInstance class
 class SpringFactoryInstance extends FactoryInstance {     private Log log = LogFactory.getLog(getClass());     SpringFactoryInstance(FlexFactory factory, String id, ConfigMap properties) {         super(factory, id, properties);     }     public Object lookup() {         ApplicationContext appContext = WebApplicationContextUtils.                 getRequiredWebApplicationContext(                     FlexContext.getServletConfig().getServletContext()         );         String beanName = getSource();         try {             log.info("Lookup bean from Spring ApplicationContext: " + beanName);             return appContext.getBean(beanName);         }         catch (NoSuchBeanDefinitionException nex) {             ...         }         catch (BeansException bex) {             ...         }         catch (Exception ex) {             ...         }     } } 

FlexFactoryImpl 负责实例化 SpringFactoryInstance 并通过 SpringFactoryInstance 的 lookup() 方法查找 FlexService 接口对象:

清单 10. FlexFactoryImpl class
 public class FlexFactoryImpl implements FlexFactory {     private Log log = LogFactory.getLog(getClass());     public FactoryInstance createFactoryInstance(String id, ConfigMap properties) {         log.info("Create FactoryInstance.");         SpringFactoryInstance instance = new SpringFactoryInstance(this, id, properties);         instance.setSource(properties.getPropertyAsString(SOURCE, instance.getId()));         return instance;     }     public Object lookup(FactoryInstance instanceInfo) {         log.info("Lookup service object.");         return instanceInfo.lookup();     }     public void initialize(String id, ConfigMap configMap) {     } } 

以下是 BlazeDS 查找 FlexService 接口的过程:

  1. BlazeDS 将首先创建 FlexFactory 的实例—— FlexFactoryImpl;
  2. 当接收到 Flex 前端的远程调用请求时,BlazeDS 通过 FlexFactory 创建 FactoryInstance 对象,并传入请求的 Service ID。在这个应用程序中,被创建的 FactoryInstance 实际对象是 SpringFactoryInstance;
  3. FactoryInstance 的 lookup() 方法被调用,在 SpringFactoryInstance 中,首先查找 Spring 容器,然后,通过 Bean 的 ID 查找 Bean,最终,FlexService 接口的实例被返回。

注意到 destination 的 id 并没有写死在代码中,而是通过以下语句获得的:

清单 11. 获取 destination 的 ID
 properties.getPropertyAsString(SOURCE, instance.getId()) 

Property 的 SOURCE 属性由 BlazeDS 读取 XML 配置文件获得:

清单 12. 配置 destination 的 id
 <destination id="flexService">     <properties>         <factory>flexFactory</factory>         <source>flexService</source>         <scope>application</scope>     </properties> </destination> 

如果您没有使用 Spring 框架,也不要紧,只需修改 FactoryInstance 的 lookup() 方法。例如,对于一个 EJB 来说,lookup() 方法应该通过 JNDI 查找返回远程接口。无论应用程序结构如何,我们的最终目标是向 BlazeDS 返回一个 FlexService 的实例对象。

开发 Flex 客户端

首先安装 Flex Build

  • 上一篇资讯: Java与Flex通信
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号