环境
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一下项目,会重新生成。
分享到:
相关推荐
MyEclipseFlexSpringStrutsHibernateBlazeds整合,带说明和源码,myeclipse直接导入即可
### Flex SSH 框架整合应用详解 #### 一、基础知识概述 - **Flex**: 是一种用于构建桌面和移动设备的高性能、丰富的互联网应用程序(RIA)的开源框架。它使用MXML(一种XML方言)来定义用户界面,并使用...
网络上好多Myeclipse8.5+flex4.5+Blazeds+SSH环境搭建及实例,个人实验过程中出现了不少问题,通过从网络上搜索各种资源,最后成功整合,以供大家学习。当然,还有部分内容没有修改完,但至少能够成功运行
搭建MyEclipse8.5与Flex4.5、Blazeds和SSH的开发环境涉及到多个步骤,主要包括安装和配置各种组件。以下是对每个步骤的详细解释: 1. **JDK安装**:首先需要安装Java Development Kit (JDK),这是进行Java开发的...
Flex和SSH整合是Web开发中的一个关键技术组合,主要用于构建富互联网应用程序(RIA)。Flex作为客户端的用户界面框架,提供动态、交互式的图形界面,而SSH(Spring、Struts和Hibernate)则是Java后端的MVC框架,负责...
在IT行业中,构建高效、可扩展的企业级应用是至关重要的,而"flex4+spring3+struts2+hibernate3+blazeds整合实例"是一个典型的Java Web开发架构,它结合了前端的Flex技术和后端的SSH(Spring、Struts2、Hibernate)...
在实际开发中,为了实现“FLEX整合ssh”,开发者需要配置Blazeds服务器,设置Flex与Java的通信通道,编写Flex客户端的MXML和ActionScript代码来调用后端服务,同时在Java后端编写Struts2 Action、Spring Bean和...
**SSH整合Flex** SSH(Spring、Struts2、Hibernate)是一种经典的Java Web开发框架组合,它结合了Spring的依赖注入、Struts2的MVC模式和Hibernate的对象关系映射技术,为开发者提供了一套高效、稳定的开发环境。而...
在本实例中,我们将探讨如何将Flex前端与SSH后端进行有效整合,以实现高效的数据交互和功能丰富的Web应用。 首先,让我们深入理解Flex的核心概念。Flex使用MXML和ActionScript来创建用户界面,MXML是一种声明式语言...
SSH(Spring、Struts、Hibernate)是常见的Java企业级开发框架,BlazeDS可以轻松地将Flex与SSH框架集成。通过在services-config.xml中定义相应的通道和服务,Flex客户端可以直接调用后端的Spring Bean或Hibernate...
7. **整合过程**:集成Flex和SSH涉及到几个关键步骤,包括设置Flex Builder或MyEclipse的Blazeds配置,编写ActionScript代码与后端服务交互,配置Struts2的Action和Result,以及在Spring中定义Bean和数据源。...
在Flex和SSH的整合中,Flex通常作为客户端,负责展示用户界面和与用户的交互。SSH则作为服务器端,处理业务逻辑和数据访问。这种结合通常通过AMF(Action Message Format)协议实现,它允许Flex客户端高效地与服务器...
在现代的Web开发中,Flex作为一个强大的富客户端技术,常常需要与服务器端的框架进行交互,SSH(Struts、Spring、Hibernate)作为经典的Java Web开发框架,提供了强大的后端支持。将Flex与SSH整合,能够实现前后端的...
SSH+Flex配置是一种常见的Java Web开发技术组合,用于构建高效、可扩展的Web应用程序。SSH分别代表Struts2(一个MVC框架)、Hibernate(一个对象关系映射框架)和Spring(一个全面的企业级应用框架)。Flex是Adobe...
标题 "Flex+Spring+Hibernate整合视频学习交流part_2" 提示我们这是一段关于将Flex、Spring和Hibernate这三个技术框架整合使用的视频教程的第二部分。这个整合是为了解决前端用户界面、业务逻辑层和服务数据访问层...
cass安装程序,HTML5视频(MP4)播放器 .net Winform窗体设计器Demo flex4+spring3+struts2+hibernate3+blazeds整合实例 自己总结的ssh,ssi项目部署文档和实例文档 C语言100例_C++100例+经典、实用、趣味程序设计编程...