- 浏览: 674491 次
- 性别:
- 来自: 珠海
文章分类
最新评论
-
qq826928141:
longxing898 写道请教:使用jtds连接sql 20 ...
rapid-framework v3.9新版本发布 -
qq826928141:
美味人间 写道大哥,这个代码生成器怎么无法获取表和列的备注信息 ...
rapid-framework v3.9新版本发布 -
walle1027:
能发一下的测试代码吗?
rabbitmq性能测试 -
在世界的中心呼喚愛:
好东西,我就是参考这个!!!
iBatis3基于方言(Dialect)的分页 -
暂不存在:
怎么将{key}中的值替换掉
rapid系列:发布一款动态构造sql的工具: XsqlBuilder
注:后面使用SBI替代Spring BlazeDS Integration
1.介绍:
为了使flex客户端能够直接调用服务端的spring bean,SBI提供的此种功能,SBI使用DispatchServlet代理转发MessageBrokerServlet的请求,增加了一些无用的类及相关配置,
而其实完成相同的功能,最简只需两个类即可.
2.扩展实现
BlazeDS本身提供一个AbstractBootstrapService的类用于扩展,该类主要是在BlazeDS初始化时用于动态创建 services, destinations, and adapters. rapid扩展了该类,用于将spring applicationContext的bean自动导出为destination,以供flex客户端调用. SpringRemotingDestinationBootstrapService 自动导出包含"@RemoteObject标注及以FlexService结尾"的Spring Bean为RemotingDestination
public class SpringRemotingDestinationBootstrapService extends AbstractBootstrapService { public static final String DEFAULT_INCLUDE_END_WITH_BEANS = "FlexService"; private String destChannel; private String destSecurityConstraint; private String destScope; private String destAdapter; private String destFactory; private String serviceId; private String includeEndsWithBeans; public void initialize(String id, ConfigMap properties) { serviceId = properties.getPropertyAsString("service-id", "remoting-service"); destFactory = properties.getPropertyAsString("dest-factory", "spring"); destAdapter = properties.getProperty("dest-adapter"); destScope = properties.getProperty("dest-scope"); destSecurityConstraint = properties.getProperty("dest-security-constraint"); destChannel = properties.getPropertyAsString("dest-channel","my-amf"); includeEndsWithBeans = properties.getPropertyAsString("includeEndsWithBeans",DEFAULT_INCLUDE_END_WITH_BEANS); Service remotingService = broker.getService(serviceId); if(remotingService == null) { throw createServiceException("not found Service with serviceId:"+serviceId); } createSpringDestinations(remotingService); } private ServiceException createServiceException(String message) { ServiceException ex = new ServiceException(); ex.setMessage(message); return ex; } private void createSpringDestinations(Service remotingService) { WebApplicationContext wac = WebApplicationContextUtils.getWebApplicationContext(broker.getInitServletContext()); List<String> addedBeanNames = new ArrayList(); for(String beanName : wac.getBeanDefinitionNames()) { Class type = wac.getType(beanName); boolean isCreateSpringDestination = type.isAnnotationPresent(RemotingObject.class) || beanName.endsWith(includeEndsWithBeans) || isCreateDestination(beanName,type); if(isCreateSpringDestination) { createSpringDestination(remotingService, beanName); addedBeanNames.add(beanName); } } System.out.println("[Auto Export Spring to RemotingDestination],beanNames="+addedBeanNames); } protected boolean isCreateDestination(String beanName,Class type) { return false; } /* <!-- 动态生成的配置内容 --> <destination id="sampleVerbose"> <channels> <channel ref="my-secure-amf" /> </channels> <adapter ref="java-object" /> <security> <security-constraint ref="sample-users" /> </security> <properties> <source>my.company.SampleService</source> <scope>session</scope> <factory>myJavaFactory</factory> </properties> </destination> */ protected void createSpringDestination(Service service, String destinationId) { flex.messaging.services.remoting.RemotingDestination destination = (flex.messaging.services.remoting.RemotingDestination)service.createDestination(destinationId); destination.setSource(destinationId); destination.setFactory(destFactory); if(destAdapter != null) destination.createAdapter(destAdapter); if(destScope != null) destination.setScope(destScope); if(destSecurityConstraint != null) destination.setSecurityConstraint(destSecurityConstraint); if(destChannel != null) destination.addChannel(destChannel); service.addDestination(destination); } }
3.配置
将该类与网上的SpringFactory结合,即可使用. 以下为service-config.xml中关于自动导出的配置.
<!-- 创建Spring RemotingDestination使用,与spring-remoting-service配合使用 --> <factories> <factory id="spring" class="cn.org.rapid_framework.flex.messaging.factories.SpringFactory"/> </factories> <services> <service-include file-path="remoting-config.xml" /> <service-include file-path="proxy-config.xml" /> <service-include file-path="messaging-config.xml" /> <!-- 自动导出包含"@RemoteObject标注及以FlexService结尾"的Spring Bean为RemotingDestination FlexService结尾可以通过includeEndsWithBeans变量指定 --> <service id="spring-remoting-service" class="cn.org.rapid_framework.flex.messaging.services.SpringRemotingDestinationBootstrapService"> <!-- 其它生成的RemotingDestination默认属性 --> <properties> <!-- <service-id></service-id> <dest-factory></dest-factory> <dest-adapter></dest-adapter> <dest-scope></dest-scope> <dest-channel></dest-channel> <dest-security-constraint></dest-security-constraint> <includeEndsWithBeans></includeEndsWithBeans> --> </properties> </service> </services>
4.flex客户端调用
//简单示例调用 this.blogFlexService = new RemoteObject("blogFlexService"); //这里需要指定endpoint,因为是动态的RemotingDestination,而静态的RemotingDestination ,flex编译器会将endpoint编译进源代码. //这个也是flex编译器需要指定配置文件而导致使用flex经常会犯的错误之一. this.blogFlexService.endpoint = '../messagebroker/amf';
5.结论
与SBI相比,更加简单即可完成相同功能。并且通过AbstractBootstrapService,你可以很容易的完成将Java Bean, Or EJB3的session bean导出为destinations以供flex客户端直接调用.
具体使用请下载rapidframework并查看flex插件
rapid官方网站: http://www.rapid-framework.org.cn
评论
3 楼
fhjxp
2010-02-22
正确的配置导致错误的结果,一个正确的配置没办法使用
2 楼
badqiu
2010-02-22
你在后台应该可以看到:
[Auto Export Spring to RemotingDestination],beanNames=[userInfoFlexService]
这样就证明你的配置正确,就可以直接调用userInfoFlexService了。
[Auto Export Spring to RemotingDestination],beanNames=[userInfoFlexService]
这样就证明你的配置正确,就可以直接调用userInfoFlexService了。
1 楼
fhjxp
2010-02-22
为什么我按照这样做后老出现错误提示:xxx not availabel in the specified
发表评论
-
rapid-framework v3.9新版本发布
2010-07-13 21:17 13595hi,all 本次新版本发布最主要的更新内容 ... -
为velocity,freemarker提供jsp:include功能
2010-06-13 19:26 11466一.介绍 使用JSP的都知道jsp:include指令,可以 ... -
rapid-framework发布新版本: v3.5
2010-03-23 19:01 4562本次的主要更新内容是重新拾起flex,重整了flex插件. 而 ... -
扩展freemarker,velocity,实现模板的管道操作
2010-01-12 20:54 4663操作系统中有一个很重要的功能,就是可以使用管道,即将前一个应用 ... -
扩展Velocity,实现模板的继承
2009-12-28 12:00 5549与我之前的扩展freemarker类似,现新增加三个指令:bl ... -
扩展freemarker,实现模板的继承
2009-12-22 10:11 9301现扩展freemarker,新增加三个指令: @ ... -
spring REST中的内容协商(同一资源,多种展现:xml,json,html)
2009-12-21 14:14 21811接上一篇对spring rest的描述. ... -
在jsp中实现"类"的继承关系
2009-12-09 17:59 72881.介绍 使用过python django模板 ... -
rapid-framework发布v3.0 版本
2009-11-11 09:46 4971虽然spring 3.0及ibatis3还未发布,但rap ... -
iBatis3基于方言(Dialect)的分页
2009-10-19 09:29 23838(注:以下代码是基于ibatis3 beta4的扩展,ibat ... -
rapid-framework发布v2.5.0版本
2009-09-21 09:54 2304赶在国庆之前发布一个版本,庆祝国庆,:) 更新内 ... -
rapid-framework工具类介绍一: 异步IO类
2009-05-08 01:16 2315在一些特殊的场合,我们可能需要使用异步的IO来大幅提高性能. ... -
rapid-validation发布v1.5版本
2008-12-09 11:44 8265在线演示:http://www.rapid-framework ... -
rapid-framework v2.x路线图
2008-09-09 20:43 2724在1.0.2发布以后,很多同学认为切换至struts2 ... -
rapid-framework v1.0.x带控制条的演示视频放出
2008-08-20 13:28 2050很多同学报怨rapid-framework的演示视频太快,现在 ... -
rapid-framework发布v1.0.2版本
2008-08-13 11:39 2707该版本主要增加的相关文档导航,及一些模板及目录的调整 在线文档 ... -
动态构造sql利器:rapid-xsqlbuider 详细说明
2008-08-06 09:07 5071特性列表: 动态构造sql条件语句,提供sql拼接与使用占 ... -
很高兴大家下载rapid-framework
2008-08-04 11:42 7208看到有很多人下载,心情蛮爽的,这个就是做开源最高兴的吧. 大家 ... -
正式发布类似rails的框架:rapid-framework,文档补充中...
2008-07-29 09:11 5150基于spring,struts(struts2),hibe ... -
最适合实际开发需要的:<代码生成器>发布:rapid-generator-v1.0
2008-07-22 09:05 4320现阶段内置模板可以生成的包括: 可以生成java的hibern ...
相关推荐
**Spring BlazeDS Integration 1.0.0** 是一个关键的框架,它为Spring应用程序与Adobe Flex客户端之间的通信提供了一种高效且灵活的解决方案。这个版本的发布标志着开发者可以更轻松地利用Flex的富互联网应用(RIA)...
综上所述,Spring BlazeDS Integration 提供了一个高效且灵活的途径,让Spring后端服务与Flex前端应用无缝对接,从而在企业级应用开发中实现强大的交互性和用户体验。通过文档"Flex与Java通讯文档三",读者可以深入...
Spring BlazeDS Integration则是Spring社区为方便Spring与BlazeDS集成而开发的一套工具,它简化了两者之间的通信,允许开发者利用Spring的强大功能来处理业务逻辑,并通过BlazeDS将这些逻辑暴露给Flex前端。...
Spring BlazeDS Integration是Spring框架的一个组件,它提供了与Adobe Flex的无缝集成,允许后端Java服务与前端Flex客户端进行通信。这个项目demo提供了实际操作的例子,帮助开发者理解和实现Spring与Flex的结合。 ...
1. 调用远程服务:在Flex客户端通过代理类调用服务器端的Spring Bean方法,实现数据交互。 2. 数据绑定:使用Flex的DataBinding特性,实现在Flex组件和后台数据模型之间的双向绑定。 七、异常处理与安全考虑 1. ...
Spring通过Spring BlazeDS Integration项目实现了与BlazDS的无缝对接。该项目提供了一组Spring Bean定义,使得在Spring应用上下文中配置BlazDS服务变得更加简单。通过Spring,你可以声明式地定义...
整合Flex和Spring的关键在于让Flex客户端能够方便地访问Spring管理的Bean,而BlazeDS和Spring BlazeDS Integration就是为了实现这一目标。BlazeDS是Adobe的开源项目,它提供了一个中间层,使得基于Flex的前端能够...
6. **部署与测试**:将工程打包部署到支持Java EE的服务器,如Apache Tomcat,然后通过Flex客户端进行测试,确保Flex能正确调用Spring服务。 软件环境要求包括Java 1.5或以上版本、Tomcat 6或以上版本、Spring 2.5...
Spring BlazeDS Integration还支持与BlazeDS Message Service的集成,从而实现更丰富的实时通信功能。 总之,Spring BlazeDS Integration为构建基于Spring的RIA提供了强大的支持,使得开发者能够充分利用Spring的...
1. **Spring框架版本**:确保使用的Spring框架版本与BlazeDS Integration兼容。 2. **Adobe BlazeDS**:需要安装并配置Adobe BlazeDS服务器端组件,它提供了与Flex客户端通信的能力。 3. **支持的Java版本**:确保...
- **Spring-BlazeDS Integration**: 这是Spring社区提供的一个模块,简化了BlazeDS与Spring的集成,提供了配置和服务的声明式声明。 - **配置服务代理**: 使用`<flex:message-broker>`标签配置BlazeDS,并通过`...
2. **创建Flex客户端**:在Flex项目中,我们需要创建服务代理(Service Proxy)来调用Spring服务。Flex使用HTTPService或RemotingDestination来与Spring服务通信。如果是使用AMF,可以实现更高效的数据传输。 3. **...
Spring BlazeDS Integration提供了与BlazeDS的集成,BlazeDS是一个开源项目,负责处理Flex与Java之间的通信。而STS则是一个强大的开发环境,支持Spring和Flex的开发。 接下来,搭建SpringFlex项目的第一步是配置...
Spring BlazeDS Integration或Spring Web Services提供了支持AMF的能力,使得Flex客户端可以直接调用Spring服务层的方法。 2. **Spring BlazeDS Integration**:这是Spring项目的一个子模块,用于集成BlazeDS,...
4. Spring BlazeDS Integration 1.5.0:这个库是Spring与BlazeDS的集成模块,帮助简化配置和使用过程。 然后,我们将搭建一个基于Hibernate 3.5.5和Spring 3.0.3的Web项目。首先,创建一个名为fbsh-server的Java ...
通过使用 Spring BlazeDS Integration,可以轻松地在 Flex 客户端和 Spring 服务之间建立双向数据绑定,实现高效的远程调用(Remote Procedure Call,RPC)机制。 Spring Flex 提供了以下关键组件和特性: 1. **...
在Flex应用程序中,我们通常利用远程对象(RemoteObject)或Web服务(如Hessian)来调用Spring管理的Bean中的方法和访问其属性,从而为用户提供动态、丰富的用户界面。 首先,让我们深入理解Flex与Spring的集成过程...
1. **Spring-BlazeDS-Project**: 提供了Spring与BlazeDS的集成支持,包括配置工具、适配器和自定义标签库,使得在Spring应用中添加Flex组件变得简单。 2. **Spring Actionscript Framework (SAF)**: SAF是Spring ...