环境
Myeclipse 6.0 ,flex builder 3,blazeds
BlazeDS是一个基于服务器的Java远程调用(remoting)和Web消息传递(messaging)技术,使得后台的Java应用程序和运行在浏览器上的Flex应用程序能够相互通信。整合时只需将相关jar宝拷过来。
Ssh2配置无需多说
FLEX和J2EE交互,一般有HTTP,Web Services 和 AMF几种方式。通常使用BlazeDS,来利用AMF协议让FLEX和J2EE交互。
AMF(Action Message Format)是ActionScript对象序列化后的二进制流。用于Adobe Flash应用和远端服务的通讯。由于它是基于二进制的数据传输,所以相对于XML SOAP,json,WebService等基于字符串的数据格式,有数据体积小和效率高的特点。
1、考入blazeDS依赖的jar包
backport-util-concurrent.jar
commons-httpclient.jar
commons-logging.jar
flex-messaging-common.jar
flex-messaging-core.jar
flex-messaging-proxy.jar
flex-messaging-remoting.jar
2、j2ee后台建立一个service接口,和service的实现类,这里写了最简单两个类。
public interface FlexService {
public void test();
}
@Service("flexService")
public class IFlexService implements FlexService{
public void test() {
System.out.println("J2EE 收到flex请求");
}
}
3、
Web.xml添加以下内容
<listener>
<listener-class>flex.messaging.HttpFlexSession</listener-class>
</listener>
此监听器负责监听 Flex 远程调用请求,并进行一些初始化设置
<servlet>
<servlet-name>messageBroker</servlet-name>
<servlet-class>flex.messaging.MessageBrokerServlet</servlet-class>
<init-param>
<param-name>services.configuration.file</param-name>
<param-value>/WEB-INF/flex/services-config.xml</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>messageBroker</servlet-name>
<url-pattern>/messagebroker/*</url-pattern>
</servlet-mapping>
此servlet是处理 Flex 远程调用请求的 Servlet
4、配置blazeds所需的配置文件,需要放在/WEB-INF/flex/目录下,blazeDS 读取 services-config.xml 配置文件,该配置文件又引用了 remoting-config.xml、proxy-config.xml 和 messaging-config.xml 这 3 个配置文件,所以,一共需要 4 个配置文件。
由于 BlazeDS 需要将 Java 接口 FlexService 暴露给 Flex 前端,因此,我们在配置文件 remoting-config.xml 中将 FlexService 接口声明为一个服务:
首先将这四个文件考入/WEB-INF/flex下(如果没有,新建此目录)
Remoting-config.xml加入
<destination id="flexService">
<properties>
<source>com.ssh2.service.IFlexService</source>
<scope>application</scope>
</properties>
</destination>
Source为flex调用的服务类实现类
或者
Remoting-config.xml加入
<destination id="flexService">
<properties>
<factory>flexFactory</factory>
<source>flexService</source>
<scope>application</scope>
</properties>
</destination>
Services-config.xml加入
<factories>
<factory id="flexFactory" class="com.ssh2.service.FlexFactoryImpl"/>
</factories>
这种情况。需要另外实现两个类
public class FlexFactoryImpl 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 instanceInfo) {
return instanceInfo.lookup();
}
public void initialize(String id, ConfigMap configMap) {
}
}
和
class SpringFactoryInstance extends FactoryInstance {
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 {
return appContext.getBean(beanName);
}
catch (Exception e) {
}
return null;
}
}
BlazeDS 将首先创建 FlexFactory 的实例—— FlexFactoryImpl;
当接收到 Flex 前端的远程调用请求时,BlazeDS 通过 FlexFactory 创建 FactoryInstance 对象,并传入请求的 Service ID。在这个应用程序中,被创建的 FactoryInstance 实际对象是 SpringFactoryInstance;
FactoryInstance 的 lookup() 方法被调用,在 SpringFactoryInstance 中,首先查找 Spring 容器,然后,通过 Bean 的 ID 查找 Bean,最终,FlexService 接口的实例被返回。
这种通过 BlazeDS 调用 FlexService 你可以另外做一些处理。
5、flex builder 3 创建flex项目
启动j2ee服务端
打开flex builder3 选择新建flex项目
应用服务器类型选择j2ee,use remote object access service选择
livecycle data services.
点击下一步
Root folder::服务器(此处tomcat)发布的项目路径,其下面需要能找到/WEB-INF/flex/
Root URL:j2ee服务端运行url地址
点击finish
编辑默认的mxml文件
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:RemoteObject id="flexServiceRO" destination="flexService">
<mx:method name="test"/>
</mx:RemoteObject>
<mx:Script>
<![CDATA[
import flash.utils.*;
import mx.controls.Alert;
import mx.rpc.AbstractOperation;
import mx.rpc.remoting.mxml.RemoteObject;
private function test():void{
Alert.show("Select a color:","Color Selection");
// flexServiceRO.send();
var ro : RemoteObject= new RemoteObject();
ro.destination = "flexService";
ro.concurrency = "last";
ro.makeObjectsBindable = true;
ro.showBusyCursor = false;
var op : AbstractOperation = ro.getOperation("test");
op.send();
}
]]>
</mx:Script>
<mx:Button label="发送请求" click="test();">
</mx:Button>
</mx:Application>
点击发送请求
发现j2ee服务端打印了。说明调用成功了。
注意:1、struts2配置的拦截器会拦截 /* 的请求
所以。可以重写StrutsPrepareAndExecuteFilter类。让他不拦截flex调用请求
public class MyStrutsPrepareAndExecuteFilter extends StrutsPrepareAndExecuteFilter {
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
// TODO Auto-generated method stub
String requestURI = ((HttpServletRequest) arg0).getRequestURI();
if(requestURI != null && requestURI.contains("/messagebroker"))
arg2.doFilter(arg0, arg1);
else
super.doFilter(arg0, arg1, arg2);
}
}
配入web.xml
2、如果删除了flex builder编辑输出的文件夹中的内容。可以clean一下项目,会重新生成。
分享到:
相关推荐
Flex技术本身和Java就有很强的关联性,它提供了一个基于Eclipse的IDE和BlazeDS.BlazeDS是个基于服务端的Java远程调用和Web消息的一个开源的技术。有许多应用都是以Java为后端处理的。Flex用于前端。由于Java和Flex...
Flex4+BlazeDS整合 项目源码
myeclipse+flex4+blazeds整合配,安装到实例测试,全部到位,一例就会。
MyEclipseFlexSpringStrutsHibernateBlazeds整合,带说明和源码,myeclipse直接导入即可
从网上搜索“Flex+BlazeDS整合J2ee示例”,可以找到flex+blazeds的配置过程,按照说明一步一步来就可以,此为完成后的源代码。
flex+Cairngorm+blazeds整合.doc
网络上好多Myeclipse8.5+flex4.5+Blazeds+SSH环境搭建及实例,个人实验过程中出现了不少问题,通过从网络上搜索各种资源,最后成功整合,以供大家学习。当然,还有部分内容没有修改完,但至少能够成功运行
flex+BlazeDS整合j2ee开发环境的配置过程,实现flex调用java类
Flex+Blazeds与J2ee整合 Flex+Blazeds与J2ee整合
Flex 应用,BlazeDS通信,Flex 应用,BlazeDS通信
Flex Spring BlazeDS整个web工程,其中FlexServer是整合后的myeclipse web project工程,FlexText是Flex测试工程。在tomcat中运行测试无误。
原创作品手录 前言:本讲是继【第三讲:WEB项目-集成Flex3+BlazeDS3.2+Spring2.5.6】...2、易于集成到原有的Struts2+Spring2的项目中,依旧使用Struts2的MVC,添加借助于Spring的DispatcherServlet整合入Flex的功能;
通过mysql数据库,成功搭建 Myeclipse8.5+flex4.5+Blazeds+SSH环境搭建
Flex4+Blazeds4.0+Spring3.0+hibernate2.5.2整合笔记,自己看了不少网上所说,都没配置成功,后来通过spring的一个插件搞定了,希望对大家有帮助吧!
使用BlazeDS实现flex与java 整合 使用BlazeDS实现flex与java 整合 flex+java
該文檔提供了MyEclipse_8.5_flex4+Blazeds配置的整個過程,文檔中包括文字和圖片,形象生動
Flex4+BlazeDS+Spring+Hibernate 整合源码博文源码
前言:本讲是在【第四讲:WEB项目-集成Flex3+BlazeDS3.2+Spring2.5.6+iBatis2.3.4】的基础上添加iBatis,此次集成其实质是Spring与Struts2的整合而已 目标:WEB项目-集成Flex3+BlazeDS3.2+Spring2.5.6+iBatis2.3.4+...
关于Myeclipse8.5+flex4+Blazeds+SSH的环境搭建,步骤清晰,让你能快速掌握该搭建方法