- 浏览: 151204 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
陈碧滔:
java获取工程目录路径 -
stevenjohn:
楼主能上传一下源代码吗?
ActiveMQ5.0实战三:使用Spring发送,消费topic和queue消息 -
指挥家:
讲的很好!
Foxmail6收发Web mail邮箱邮件实现原理 -
azhqiang:
谢谢你啊。呵呵
flex最全的表单验证
转载:http://yunzhongxia.iteye.com/blog/565249
- 为什么要消息?
工行直连要用到深证通数据交换平台(MDEP),MDEP的请求是不同步的。托管行每天会推过来一些头寸报表信息,这些信息要及时的反应给业务人员。另外,文件扫描和预警都要及时的通知给业务人员。因此,平台利用Blazeds的消息。值得说明的一点是:BlazeDS 是一个基于服务器的 Java 远程控制 (remoting) 和 Web 消息传递 (messaging) 技术,以LGPL(Lesser GNU Public License)公共许可证书发布。它能够使得后端的 Java 应用程序和运行在浏览器上的 Adobe Flex 应用程序相互通信。在Java应用服务器上,它以servlet的形式存在, 因此可以在任何标准Java网络应用中运用它。Blazeds的消息机制是采用不断的轮询来实现的,因此性能不怎么好,并发数最大为100,LCDS的消息机制是采用java的NIO,最高并发数是1000,Blazeds和LCDS相比性能还是比较差的,不过***系统的用户数比较少的情况下,Blazeds还是可以的,毕竟,客户都是比较吝啬的,有免费的肯定不想掏钱买昂贵的LCDS。
2. 消息适配器该用哪一个?
- <adapters>
- <adapter-definition id="actionscript"
- class="flex.messaging.services.messaging.adapters.ActionScriptAdapter"
- default="true" />
- <adapter-definition id="jms"
- class="flex.messaging.services.messaging.adapters.JMSAdapter" />
- </adapters>
<adapters> <adapter-definition id="actionscript" class="flex.messaging.services.messaging.adapters.ActionScriptAdapter" default="true" /> <adapter-definition id="jms" class="flex.messaging.services.messaging.adapters.JMSAdapter" /> </adapters>
Blazeds提供了两种消息适配器,actionscript和jms.项目一期用的是actionscript适配器,但是有的时候发现文件扫描的消息不能发送到客户端,一直也没有找到原因,关键是Log里面找不到原因。二期应该会有大量的消息要推送到前端,因此打算用jms消息适配器。消息先发送到消息服务器上,flex端订阅消息,如果服务器上有消息在客户端就显示出来。消息服务器很多都是收费的,开源的有ActiveMQ、OPENJMS等。
3.消息服务器该用哪个?
ActiveMQ 是Apache的产品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。在网上查阅了一下关于ActiveMQ 的文档也比较多,而且是开放源代码的,blazeds的官方文档上的例子就是用的ActiveMQ作为消息服务器,因此消息服务器就选它了。
4. 如何搭建环境?
首先要在J2EE服务器(tomcat6)中提供消息服务(JNDI)。在WebRoot/WETA-INFw文件夹下新建一个context.xml.文件的内容如下:
- <Context privileged="true" antiResourceLocking="false"
- antiJARLocking="false" reloadable="false">
- <!-- Resourced needed for JMS -->
- <Resource name="jms/flex/TopicConnectionFactory"
- type="org.apache.activemq.ActiveMQConnectionFactory"
- description="JMS Connection Factory"
- factory="org.apache.activemq.jndi.JNDIReferenceFactory"
- brokerURL="tcp://localhost:61616"
- brokerName="LocalActiveMQBroker" />
- <Resource name="jms/topic/flex/simpletopic"
- type="org.apache.activemq.command.ActiveMQTopic"
- description="my Topic"
- factory="org.apache.activemq.jndi.JNDIReferenceFactory"
- physicalName="FlexTopic" />
- <Resource name="jms/flex/QueueConnectionFactory"
- type="org.apache.activemq.ActiveMQConnectionFactory"
- description="JMS Connection Factory"
- factory="org.apache.activemq.jndi.JNDIReferenceFactory"
- brokerURL="tcp://localhost:61616"
- brokerName="LocalActiveMQBroker" />
- <Resource name="jms/queue/flex/simplequeue"
- type="org.apache.activemq.command.ActiveMQQueue"
- description="my Queue"
- factory="org.apache.activemq.jndi.JNDIReferenceFactory"
- physicalName="FlexQueue" />
- <!--
- <Valve className="flex.messaging.security.TomcatValve" />
- -->
- </Context>
<Context privileged="true" antiResourceLocking="false" antiJARLocking="false" reloadable="false"> <!-- Resourced needed for JMS --> <Resource name="jms/flex/TopicConnectionFactory" type="org.apache.activemq.ActiveMQConnectionFactory" description="JMS Connection Factory" factory="org.apache.activemq.jndi.JNDIReferenceFactory" brokerURL="tcp://localhost:61616" brokerName="LocalActiveMQBroker" /> <Resource name="jms/topic/flex/simpletopic" type="org.apache.activemq.command.ActiveMQTopic" description="my Topic" factory="org.apache.activemq.jndi.JNDIReferenceFactory" physicalName="FlexTopic" /> <Resource name="jms/flex/QueueConnectionFactory" type="org.apache.activemq.ActiveMQConnectionFactory" description="JMS Connection Factory" factory="org.apache.activemq.jndi.JNDIReferenceFactory" brokerURL="tcp://localhost:61616" brokerName="LocalActiveMQBroker" /> <Resource name="jms/queue/flex/simplequeue" type="org.apache.activemq.command.ActiveMQQueue" description="my Queue" factory="org.apache.activemq.jndi.JNDIReferenceFactory" physicalName="FlexQueue" /> <!-- <Valve className="flex.messaging.security.TomcatValve" /> --> </Context>
备注:其实通过上面的配置后,在tomcat6\conf\Catalina\localhost文件下生成了一个utmost.xml文件。关于上面的配置,请继续关注我的博客,我会在以后的写博客的。
修改WEB-INF/flex/messaging-config.xml文件。
- <?xml version="1.0" encoding="UTF-8"?>
- <service id="message-service" class="flex.messaging.services.MessageService">
- <adapters>
- <adapter-definition id="actionscript"
- class="flex.messaging.services.messaging.adapters.ActionScriptAdapter"
- default="false" />
- <adapter-definition id="jms"
- class="flex.messaging.services.messaging.adapters.JMSAdapter"
- default="true" />
- </adapters>
- <default-channels>
- <channel ref="my-streaming-amf" />
- <channel ref="my-polling-amf" />
- </default-channels>
- <destination id="scanfile" />
- <!-- active MQ stock feed -->
- <destination id="jmsamc"">
- <adapter ref="jms" />
- <properties>
- <!--这里的配置是最关键的,只有durable属性设计为true才能实现持久化订阅-->
- <server>
- <durable>true</durable>
- </server>
- <jms>
- <connection-factory>
- java:comp/env/jms/flex/TopicConnectionFactory
- </connection-factory>
- <destination-type>Topic</destination-type>
- <destination-jndi-name>
- java:comp/env/jms/topic/flex/simpletopic
- </destination-jndi-name>
- <message-type>javax.jms.TextMessage</message-type>
- <!-- 持久性 -->
- <delivery-mode>PERSISTENT</delivery-mode>
- <!-- 优先级 -->
- <message-priority>DEFAULT_PRIORITY</message-priority>
- <!--应答模式 -->
- <acknowledge-mode>AUTO_ACKNOWLEDGE</acknowledge-mode>
- <initial-context-environment>
- <property>
- <name>Context.SECURITY_PRINCIPAL</name>
- <value>anonymous</value>
- </property>
- <property>
- <name>Context.SECURITY_CREDENTIALS</name>
- <value>anonymous</value>
- </property>
- <property>
- <name>Context.INITIAL_CONTEXT_FACTORY</name>
- <value>
- org.apache.activemq.jndi.ActiveMQInitialContextFactory
- </value>
- </property>
- <property>
- <name>Context.PROVIDER_URL</name>
- <value>tcp://192.168.124.114:61616</value>
- </property>
- </initial-context-environment>
- </jms>
- </properties>
- <channels>
- <channel ref="my-polling-amf" />
- <channel ref="my-streaming-amf" />
- </channels>
- </destination>
- </service>
<?xml version="1.0" encoding="UTF-8"?> <service id="message-service" class="flex.messaging.services.MessageService"> <adapters> <adapter-definition id="actionscript" class="flex.messaging.services.messaging.adapters.ActionScriptAdapter" default="false" /> <adapter-definition id="jms" class="flex.messaging.services.messaging.adapters.JMSAdapter" default="true" /> </adapters> <default-channels> <channel ref="my-streaming-amf" /> <channel ref="my-polling-amf" /> </default-channels> <destination id="scanfile" /> <!-- active MQ stock feed --> <destination id="jmsamc""> <adapter ref="jms" /> <properties> <!--这里的配置是最关键的,只有durable属性设计为true才能实现持久化订阅--> <server> <durable>true</durable> </server> <jms> <connection-factory> java:comp/env/jms/flex/TopicConnectionFactory </connection-factory> <destination-type>Topic</destination-type> <destination-jndi-name> java:comp/env/jms/topic/flex/simpletopic </destination-jndi-name> <message-type>javax.jms.TextMessage</message-type> <!-- 持久性 --> <delivery-mode>PERSISTENT</delivery-mode> <!-- 优先级 --> <message-priority>DEFAULT_PRIORITY</message-priority> <!--应答模式 --> <acknowledge-mode>AUTO_ACKNOWLEDGE</acknowledge-mode> <initial-context-environment> <property> <name>Context.SECURITY_PRINCIPAL</name> <value>anonymous</value> </property> <property> <name>Context.SECURITY_CREDENTIALS</name> <value>anonymous</value> </property> <property> <name>Context.INITIAL_CONTEXT_FACTORY</name> <value> org.apache.activemq.jndi.ActiveMQInitialContextFactory </value> </property> <property> <name>Context.PROVIDER_URL</name> <value>tcp://192.168.124.114:61616</value> </property> </initial-context-environment> </jms> </properties> <channels> <channel ref="my-polling-amf" /> <channel ref="my-streaming-amf" /> </channels> </destination> </service>
felx前端订阅消息
- <mx:ChannelSet id="cs">
- <mx:AMFChannel url="http://192.168.124.114:8099/utmost/messagebroker/amfpolling"/>
- <mx:AMFChannel url="http://192.168.124.114:8099/utmost/messagebroker/streamingamf"/>
- </mx:ChannelSet>
- <mx:Consumer id="consumer" destination="jmsamc" channelSet="{cs}"
- message="messageHandler(event.message)" selector=""/>
<mx:ChannelSet id="cs"> <mx:AMFChannel url="http://192.168.124.114:8099/utmost/messagebroker/amfpolling"/> <mx:AMFChannel url="http://192.168.124.114:8099/utmost/messagebroker/streamingamf"/> </mx:ChannelSet> <mx:Consumer id="consumer" destination="jmsamc" channelSet="{cs}" message="messageHandler(event.message)" selector=""/>
通过以上的配置,基本上实现了Blazeds和JMS的结合。但是还没有解决二期项目的问题,服务器一启动,文件扫描就应该开始;预警是达到一定时间要发送消息给客户端的;ActiveMQ怎么交给Spring管理。下面几篇文章,将会带你慢慢解决这些问题。
发表评论
-
Weblogic下创建JMS消息服务
2010-11-08 14:29 1916转载:http://yunzhongxia.iteye.com ... -
Spring整合Blazeds实现Weblogic JMS消息服务
2010-11-08 14:27 1548转载:http://yunzhongxia.iteye.com ... -
Spring整合Blazeds实现ActiveMQ JMS消息服务
2010-11-08 14:18 1809转载:http://yunzhongxia.iteye.com ... -
Jms之ActiveMQ学习笔记
2010-11-08 10:48 2777ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4 ... -
ActiveMQ5.0实战二: 基本配置
2010-11-02 10:04 1641简介 上一篇http://www.iteye.com/top ... -
ActiveMQ5.0实战一: 安装配置ActiveMQ5.0
2010-11-02 09:59 1038简介 ActiveMQ 是开源的JMS实现,Geroni ... -
ActiveMQ文档学习
2010-11-01 13:59 2211研究ActiveMQ 的文档1. 背景当前,CORBA、DCO ... -
主题:JMS的两种消息模型(Point-to-Point(P2P)和Publish/Subscribe(Pub/Sub))应用举例
2010-11-01 13:57 15811、P2P模型 在P2P模型中,有下列概念:消息队列(Queu ...
相关推荐
标题中的“PureMVC+Flex+BlazeDS+Spring+Hibernate.doc”指的是一项整合了多种技术的Web应用开发方案,这些技术包括PureMVC、Flex、BlazeDS、Spring和Hibernate。这篇文档可能是指导读者如何将这些技术结合在一起...
标题 "BlazeDS+Spring+activeMQ outofmemory" 指的是在使用BlazeDS、Spring和ActiveMQ集成的环境中遇到了内存溢出问题。BlazeDS是一个开放源码的服务器端技术,它允许双向通信,使Flex或AJAX客户端能够与Java后端...
【标题】"Flex4.X+BlazeDS+Spring3实战开发在线书店四"涉及的核心技术栈是Adobe Flex 4.6、BlazeDS、Spring 3框架以及Java相关的JPA和Hibernate,配合MySQL数据库实现一个在线书店的完整系统。下面将详细阐述这些...
本项目“spring3+ActiveMQ+blazeds+flex consumer”旨在整合一系列技术,以实现这样的功能。下面将详细阐述这些技术及其整合过程。 首先,Spring框架(Spring3)是Java领域最流行的轻量级应用框架之一,它提供了...
标题“flex+blazeds+spring”表明我们要探讨的是如何将Flex前端与BlazeDS中继层和Spring后端框架结合起来,实现完整的数据交互和应用程序逻辑。 在Flex与Spring集成的环境中,Flex作为用户界面展示层,负责与用户...
BlazeDS还包含了LiveCycle Data Services组件,提供数据推送、消息队列和Remoting服务,有助于实现实时Web应用。 接下来,我们讨论Spring 3,这是一个广泛使用的Java企业级应用框架。Spring提供了依赖注入(DI)和...
使用flex 4.5 + Spring 3.0 + Hibernate 3.3 + Cairngorm 2.2.1 + BlazeDS 3.3.0 + Spring BlazeDS Integration 1.0.3整合出的一个登录的小demo·
一个 Flex+J2EE实例(cairngorm+blazeDS+hibernate+spring) 本实例为一个 flex 与 java通信项目。前端采用cairngorm框架,后台 采用hibernate+spring 每个部署 步骤,附详细 图文解释。旨在 采用 一种快速开发 ...
Flex+Gilead+BlazeDS+Spring+Hibernate示例Demo,使用1:n和m:n两个双向关系,很好的演示了Gilead的Hibernate Lazy Killer特性,借助Gilead可以有效规避DTO模式的大量繁琐代码。效果图展示地址:...
《Flex4.X+BlazeDS+Spring3 实战开发在线书店》是一门深入探讨使用Adobe Flex 4.6、BlazeDS、Spring 3框架以及Java相关技术进行Web应用程序开发的课程。这门课程旨在帮助开发者掌握如何构建功能丰富的、交互性强的...
根据提供的文件信息,本文将详细介绍如何一步步搭建PureMVC+Flex+BlazeDS+Spring+Hibernate的技术栈。这个过程涉及到了多个技术领域的整合,包括前端的Flex开发、后端的Java开发以及数据库交互等多个方面。 ### 一...
标题中的“PureMVC+Flex+BlazeDS+Spring+Hibernate”是一个常见的技术栈组合,用于构建企业级的 Rich Internet Applications (RIA)。这个技术栈包括前端开发框架、后端服务通讯、应用服务器、服务端架构和数据持久化...
标题中的“Spring整合Blazeds实现ActiveMQ JMS消息服务”指的是在Java应用程序中使用Spring框架与Blazeds(一个Flex和Java之间的消息传递中间件)集成,通过ActiveMQ(一个流行的开源JMS提供商)来实现消息队列服务...
### Flex4+BlazeDS+Spring+iBatis 开发教程详解 #### 一、富互联网应用(RIA)概念与背景 ##### RIA定义 富互联网应用(Rich Internet Application,简称RIA)是一种新兴的应用程序形式,它结合了客户端与服务器端...
这种消息传递方式适用于异步处理,可以实现消息的可靠传输和解耦。在本例中,JMS被用来实现实时数据推送,当Java后端有新数据时,通过JMS推送到Flex客户端,进而更新UI。 5. **消息模型**:在JMS中,有两种主要的...
Myeclipse6.5+flex3+Blazeds+spring+hibernate完美整合,写的非常详细
通过以上步骤,你将成功构建一个完整的PureMVC+Flex+BlazeDS+Spring+Hibernate RIA系统,实现前端与后端的无缝集成,提供高效的数据交换和复杂的业务处理能力。在实际开发中,你可能还需要考虑错误处理、安全性和...
标题中的“flex+spring +BlazeDs+spring+ibatis+Cairngorm整合教程”涉及到的是一个基于Adobe Flex前端、Spring后端服务、BlazeDS作为数据通信中间件、Spring框架进行服务管理以及Ibatis作为持久层操作的典型企业级...
### Flex+J2EE 实例(Cairngorm+BlazeDS+Hibernate+Spring)Part 3 #### 概述 本章节主要介绍了如何在已有的Flex+J2EE架构项目中集成Spring框架和Hibernate持久层框架。通过这种方式,我们可以更好地实现业务逻辑...