将Spring与Flex整合(基于嵌入式tomcat)
来源:互联网 发布:使命召唤14知乎 编辑:程序博客网 时间:2024/06/11 14:31
--->点击阅读更多
前言: 在用嵌入式Tomcat做Java与Flex通信的服务器时遇到了一个很大的困难,从刚开始遇见问题到解决问题足足花了我半年多的时间。虽然现在看待当时那个问题真的很简单,可是我在想,如果我当时放弃了,那么现在我说不定没有这种成就感。学习的道路是曲折的,遇到困难也在所难免,可是最关键的是我们遇见怎样的困难都能坚持下去,因为,问题总有解决的一天。
Spring是一个非常流行的轻量级企业框架,主要用来管理JavaBean,因此也被大量企业开发人员所青睐。Spring社区现在支持Flex,我们也可以将Spring配置文件中的bean用于Flex的destination属性。
在学习之前,你需要知道在嵌入式tomcat中怎么将Java与Flex整合在一起,如果你不知道,请看我之前写的一篇文章:图文并茂、手把手教你怎么将Java项目与Flex4整合
好了,现在开始整合。
首先准备Spring所必需的jar包,我用的版本是spring-framework-3.0.5.RELEASE版本的,将解压缩后的jar包都复制到WebRoot目录下的jar文件夹里。当然你还需要将Spring与Flex整合在一起的一个插件jar包添加进去,我选择的是spring-flex-core-1.5.2.RELEASE.jar,如下图所示:
接下来在src目录下新建一个Spring管理JavaBean的配置文件applicationContext.xml,如下所示:
- <?xml version="1.0"encoding="GBK"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.0.xsd
- http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-2.0.xsd
- http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
- </beans>
接下来在WebRoot/WEB-INF目录下的web.xml文件中指定配置文件的路径并添加Spring配置文件监听器,代码如下所示:
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>
- classpath*:applicationContext.xml
- </param-value>
- </context-param>
- <!--Spring ApplicationContext 配置文件监听器-->
- <listener>
- <listener-class>
- org.springframework.web.context.ContextLoaderListener
- </listener-class>
- </listener>
- <!--
- Spring Introspector 防内存泄露监听器,它负责处理由JavaBeans Introspector的使用而引起的缓冲泄露
- -->
- <listener>
- <listener-class>
- org.springframework.web.util.IntrospectorCleanupListener
- </listener-class>
- </listener>
接下来新建两个java文件,一个是FlexSpringFactory.java,代码如下所示:
- package com.ldfsoft.common;
- import flex.messaging.FactoryInstance;
- import flex.messaging.FlexFactory;
- import flex.messaging.config.ConfigMap;
- public class FlexSpringFactory implements FlexFactory {
- public FactoryInstance createFactoryInstance(String id, ConfigMap properties) {
- SpringFactoryInstance instance = new SpringFactoryInstance(this, id,
- properties);
- instance.setSource(properties.getPropertyAsString(SOURCE, instance
- .getId()));
- return instance;
- }
- public Object lookup(FactoryInstance inst) {
- SpringFactoryInstance factoryInstance = (SpringFactoryInstance) inst;
- return factoryInstance.lookup();
- }
- public void initialize(String arg0, ConfigMap arg1) {
- }
- }
另一个是SpringFactoryInstance.java,代码如下所示:
- package com.ldfsoft.common;
- import org.springframework.beans.BeansException;
- import org.springframework.beans.factory.NoSuchBeanDefinitionException;
- import org.springframework.context.ApplicationContext;
- import org.springframework.web.context.support.WebApplicationContextUtils;
- import flex.messaging.FactoryInstance;
- import flex.messaging.config.ConfigMap;
- import flex.messaging.services.ServiceException;
- public class SpringFactoryInstance extends FactoryInstance
- {
- SpringFactoryInstance(FlexSpringFactory factory, String id, ConfigMapproperties)
- {
- super (factory, id, properties);
- }
- 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();
- throw e;
- }
- catch (BeansException bexc)
- {
- ServiceException e = new ServiceException();
- throw e;
- }
- }
- }
好了,现在开始在Flex配置文件里配置。
在service-config.xml配置文件里注册FlexSpringFactory,代码如下所示:
- <factories>
- <factory id="springFactory"class="com.ldfsoft.common.FlexSpringFactory">
- </factory>
- </factories>
好了,配置完成了,我们测试一下。
我们将前面建的一个Java文件SayHello.java(点击这里查看)在Spring的配置文件里注册,如下所示:
- <bean id="sayHello"class="com.ldfsoft.service.SayHello"/>
接下来在remoting-config.xml配置文件里这样配置:
- <destination id="sayHello">
- <properties>
- <factory>springFactory</factory>
- <source>sayHello</source>
- </properties>
- </destination>
而我们在Flex的mxml文件中与Java通信时直接引用destination的id属性即可,如果你运行成功,说明你也配置成功了,祝你好运!
--->点击阅读更多
- 将Spring与Flex整合(基于嵌入式tomcat)
- Java与Flex学习笔记(7)----将Spring与Flex整合(基于嵌入式tomcat)(2012-07-24 更新)
- Flex与Spring 的整合
- Flex+blazeDS+Spring+Tomcat的整合
- Flex+blazeDS+Spring+Tomcat的整合
- Flex+blazeDS+Spring+Tomcat的整合
- mybatis与spring整合(基于配置文件)
- mybatis与spring整合(基于配置文件)
- mybatis与spring整合(基于Annotation)
- mybatis与spring整合(基于配置文件)
- mybatis与spring整合(基于配置文件)
- mybatis与spring整合(基于Annotation)
- mybatis与spring整合(基于配置文件)
- mybatis与spring整合(基于Annotation)
- mybatis与spring整合(基于配置文件)
- mybatis与spring整合(基于配置文件)
- mybatis与spring整合(基于配置文件)
- mybatis与spring整合(基于配置文件)
- Win7部署asp.net网站,问题逐个突破<一>---Win7 IIS 部署网站,同局域网中电脑无法访问解决方案
- Web相关Cache介绍
- 用ExternalInterface实现Flex与外部容器交互
- 火狐下firebug调试工具的使用
- Flex带进度条的多文件上传(基于Servlet)
- 将Spring与Flex整合(基于嵌入式tomcat)
- 装饰设计模式
- 有关Tomcat配置的问题Error Creating Deployment
- 理解Flash中的事件机制
- Android MVC模式
- 巨人们的道理
- 12306验证码识别
- 2.Java内存回收机制
- cximage在VC6.0下编译错误的解决方法