加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex+blazeDS+Spring+Tomcat的整合

发布时间:2020-12-15 04:55:44 所属栏目:百科 来源:网络整理
导读:最近因为有时间,所以就弄了弄Flex和Java的整合。用到技术和工具主要是Flex,blazeDS,Spring,Tomcat。在网上看了一些整合的文章,大都差不多。现在我把我自己弄通了的例子和里面的思路。和注意的一些问题全部都写出来。希望给刚开始弄的朋友有一些帮助。要

最近因为有时间,所以就弄了弄Flex和Java的整合。用到技术和工具主要是Flex,blazeDS,Spring,Tomcat。在网上看了一些整合的文章,大都差不多。现在我把我自己弄通了的例子和里面的思路。和注意的一些问题全部都写出来。希望给刚开始弄的朋友有一些帮助。要是有什么地方错了,请大家提出来哈。

  • 准备

???????? 我用的是:MyEclipse_6.5.0GA_E3.3.2_Installer_A

??????????????????????? tomcat6.0

??????????????????????? FB3_WWEJ

??????????????????????? JDK1.6

??????????????????????? blazeDS

  • 环境的搭建

???? 新建一个Java web工程,取名为TestSpring(我的是这样)

??????? 用blazeDS.war集成Flex和tomcat,

????????? 1):把你下载的blazeDS.war和samples.war和ds-console.war放到你tomcat安装路径下的webapps中。当你启动tomcat时,会产生一个blazeds文件夹,这个文件夹里面包含了META-INF和WEB-INF两个文件。WEB-INF里面的文件就会关键了。

????????? 2):给建立的Java web工程添加blazeDS

?????????????????? 把tomcat路径webapps/blazeds/WEB-INF/lib下的所有JAR包全面放到Java web工程(就是现在建立的TestSpring)中的WebRoot/WEB-INF/lib下。

?????????????????? 把tomcat路径webapps/blazeds/WEB-INF/flex这个文件夹,复制到Java web工程(就是现在建立的TestSpring)中的WebRoot/WEB-INF下。

?????????????????? 把tomcat路径webapps/blazeds/WEB-INF下的WEB.XML文件里面的,<listenter/><servlet/>??? <servlet-mapping/>里面的内容拷贝到Java web工程(就是现在建立的TestSpring)中的WebRoot/WEB-INF下的WEB.XML里面。

?????????????? 以上的作用是让自己的Java web工程具备blazeDS功能。

下面我现在将前后台的代码贴出来,大家好看看。例子是在网上看的,不是自己写的哈

首先是后台的代码:

在MYEC里面建立一个Java web工程,取名为TestSpring

按照上面的步骤进行。

在cn.org.coral.core.flex.factory目录下建立,FlexSpringFactory和SpringFactoryInstance两个类。

代码分别是

package cn.org.coral.core.flex.factory;

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 ins) {
? SpringFactoryInstance factoryInstance=(SpringFactoryInstance)ins;
? return factoryInstance.lookup();
}

public void initialize(String arg0,ConfigMap arg1) {
? // TODO Auto-generated method stub

}

}

package cn.org.coral.core.flex.factory;

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

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

public class SpringFactoryInstance extends FactoryInstance {
public SpringFactoryInstance(FlexSpringFactory factory,String id,ConfigMap properties)
{
? super(factory,properties);
}

public Object lookup()
{
? ApplicationContext appContext=WebApplicationContextUtils.getWebApplicationContext(FlexContext.getServletConfig().getServletContext());
? String beanName=this.getSource();
? try
? {
?? return? appContext.getBean(beanName);
? }catch(NoSuchBeanDefinitionException ec)
? {
?? ServiceException e=new ServiceException();
?? throw e;
? }catch? (BeansException bexc)??
??????? {??
?? ServiceException e = new? ServiceException();??
?? throw? e;??
???? }
}

}

打开TestSpring工程的WebRoot/WEB-INF/flex下的remoting-config.xml。在此XML文件中添加

<destination id ="flexSpringBeanTest">???
?????? <properties>???
?????????????? <factory>springFactory</factory>????
?????????????? <source>flexObjectTest</source>???
?????? </properties>???
</destination> 里面的内容就不解释了哈。

打开TestSpring工程的WebRoot/WEB-INF/flex下的services-config.xml。在此XML文件中添加

<factories>?
????? <factory id="springFactory" class="cn.org.coral.core.flex.factory.FlexSpringFactory"/>???
</factories>

打开WebRoot/WEB-INF下的WEB.XML文件。在此添加SRING的信息

<context-param>
?????? <param-name>contextConfigLocation</param-name>
?????? <param-value>/WEB-INF/classes/applicationContext.xml</param-value>

</context-param>

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

? 此时后台基本OK了。

现在开始配置前台

在FlexBuilder新建一个Flex Project

点击NEXT

Root folder:选择在Tomcat中部署的Java web工程,就是我们前面新建的TestSpring

Root URL:在Tomcat服务器的启动上加上TestSpring,说明我们要启动到TestSpring工程

Context root:编译后Flex的保持路径

点击完成。

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.AsyncToken;
???????? import mx.rpc.AbstractOperation;?
??????????? import mx.rpc.events.ResultEvent;?
??????????? import mx.controls.Alert;?
??????????? private function callRO(str:String):void{?
??????????????? //Alert.show("flexSpringBeanTest");
?????????????
??????????????? firstRO.say(str);?
??????????????? firstRO.addEventListener(ResultEvent.RESULT,getROResult);?
??????????? }?
?????????????
??????????? private function getROResult(e:ResultEvent) :void {?
??????????????? Alert.show(e.result.toString());?
??????????? }?
??????????? //flexObjectTest?
??????? ]]>?
??? </mx:Script>?
??????
??? <mx:RemoteObject id="firstRO" destination="flexSpringBeanTest"/>?
??? <mx:TextInput x="109" y="28" id="input" text="hello!"/>?
??? <mx:Button x="270" y="28" click="callRO(input.text)" label="请求"/>?
</mx:Application>

然后点击新建的FLEX工程中点击属性,点击Flex Build Path出现:

????????

? Output folder:Flex工程的文件的输出路径

? Output folder URL:Flex工程在Tomcat服务器中的启动路径

再选择Flex Compiler

再选择Flex server

Context Root:你的工程的跟目录

最后点击OK。

最后把后台编译好的代码,就是/WEB-INF/classes下的代码,复制到Tomcat中blazeDS的相同目录下。

行了

最后启动Tomcat,试试吧

最好看看blazeDS的工作原理。http://www.javaeye.com/topic/267521.这篇文章可以看看,希望可以对你有帮助。

如果按照上面说的运行不起的话。可以给我留言。我是运行OK了的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读