Flex+blazeDS+Spring+Tomcat的整合

本文详细介绍了使用Flex、blazeDS、Spring和Tomcat进行整合的过程。从环境搭建到前后台代码实现,提供了完整的示例及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近因为有时间,所以就弄了弄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,id,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了的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值