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了的。

相关文章

一:display:flex布局display:flex是一种布局方式。它即可以...
1. flex设置元素垂直居中对齐在之前的一篇文章中记载过如何...
移动端开发知识点pc端软件和移动端apppc端软件是什么,有哪些...
最近挺忙的,准备考试,还有其他的事,没时间研究东西,快周...
display:flex;把容器设置为弹性盒模型(设置为弹性盒模型之后...
我在网页上运行了一个Flex应用程序,我想使用Command←组合键...