flex与java通信:blazeds配置文件
2013-12-31 17:53
393 查看
一、web.xml中对blazeds的配置
<listener> <listener-class>flex.messaging.HttpFlexSession</listener-class> </listener>
<listener>用于将HttpFlexSession类作为监听器注册到web.xml中,这样系统就可以检测到J2EE HttpSession属性和代理属性的变化,进而通知FlexSession属性和目前绑定的listener做相应处理.
<servlet> <servlet-name>MessageBrokerServlet</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>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>MessageBrokerServlet</servlet-name> <url-pattern>/messagebroker/*</url-pattern> </servlet-mapping>
其实现是基于一个叫flex.messaging.MessageBroker的Servlet。各种消息通道的配置都存在于WEB-INF\flex\services-config.xml及其包含的3个XML文件中。
MessageBrokerServlet的Servlet将负责对对所有URL符合/messagebroker/*模式的请求进行处理,它会在Servlet容器启动时启动,并在启动时读取配置文件/WEB-INF/flex/services-config.xml.
<login-config> <auth-method>BASIC</auth-method> </login-config>
1、service-config.xml
services-config.xml包含BlazedDS引用的服务文件,安全设置,通道定义,系统参数.----------services
<services> <service class="flex.samples.DatabaseCheckService" id="hsqldb" /> <service-include file-path="remoting-config.xml" /> <service-include file-path="proxy-config.xml" /> <service-include file-path="messaging-config.xml" /> <service class="flex.samples.runtimeconfig.EmployeeRuntimeRemotingDestination" id="runtime-employee-ro" /> <!-- Application level default channels. Application level default channels are necessary when a dynamic destination is being used by a service component and no ChannelSet has been defined for the service component. In that case, application level default channels will be used to contact the destination. --> <default-channels> <channel ref="my-amf"/> </default-channels> </services>
----------remoting-config.xml配置的就是一个flex.messaging.services.RemotingService
<service id="remoting-service" class="flex.messaging.services.RemotingService"></service>
remoting-service的内容:
<adapters> <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/> </adapters> <default-channels> <channel ref="my-amf"/> </default-channels> <destination id="product"> <properties> <source>flex.samples.product.ProductService</source> </properties> </destination> ..............destinations
adapters为用户设置设配器
channel的ref属性表明引用了信息通道
destination设置服务终端的目的地
----------messaging-config.xml配置的就是一个flex.messaging.services.MessageService
<service id="message-service" class="flex.messaging.services.MessageService"></service>
messaging-service的内容:
<adapters> <!-- Blazeds提供了两种消息适配器,actionscript和jms --><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> <default-channels> <channel ref="my-streaming-amf"/> <channel ref="my-polling-amf"/> </default-channels> <destination id="market-data-feed"> <properties> <server> <allow-subtopics>true</allow-subtopics> <subtopic-separator>.</subtopic-separator>s </server> </properties> <channels> <channel ref="my-polling-amf"/> <channel ref="my-streaming-amf"/> <channel ref="per-client-qos-polling-amf"/> </channels> </destination>..............destinations
jms消息适配器。消息先发送到消息服务器上,flex端订阅消息,如果服务器上有消息在客户端就显示出来。消息服务器很多都是收费的,开源的有ActiveMQ、OPENJMS等。ActiveMQ
是Apache的产品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。blazeds的官方文档上的例子就是用的ActiveMQ作为消息服务器
其他:Blazeds的消息机制是采用不断的轮询实现的,因此性能不怎么好,并发数最大为100,LCDS的消息机制是采用java的NIO,最高并发数是1000,Blazeds和LCDS相比性能还是比较差的,不过***系统的用户数比较少的情况下,Blazeds还是可以的,毕竟,客户都是比较吝啬的,有免费的肯定不想掏钱买昂贵的LCDS。这里将会进一步补充jms有关内容。
----------proxy-config.xml配置的就是一个flex.messaging.services.HTTPProxyService
<service id="proxy-service" class="flex.messaging.services.HTTPProxyService"> </service>
proxy-confige的内容:
<properties>
<connection-manager>
<max-total-connections>100</max-total-connections>
<default-max-connections-per-host>2</default-max-connections-per-host>
</connection-manager>
<allow-lax-ssl>true</allow-lax-ssl>
</properties>
<default-channels>
<channel ref="my-http"/>
<channel ref="my-amf"/>
</default-channels>
<adapters>
<adapter-definition id="http-proxy" class="flex.messaging.services.http.HTTPProxyAdapter" default="true"/>
<adapter-definition id="soap-proxy" class="flex.messaging.services.http.SOAPProxyAdapter"/>
</adapters>
<destination id="DefaultHTTP">
<properties>
</properties>
</destination>
<destination id="ws-catalog">
<properties>
<wsdl>http://feeds.adobe.com/webservices/mxna2.cfc?wsdl</wsdl>
<soap>*</soap>
</properties>
<adapter ref="soap-proxy"/>
</destination> ..............destinations
----------security
<security>
<security-constraint id="sample-users">
<auth-method>Custom</auth-method>
<roles>
<role>sampleusers</role>
</roles>
</security-constraint>
<login-command class="flex.messaging.security.TomcatLoginCommand" server="Tomcat"/>
<!-- Uncomment the correct app server
<login-command class="flex.messaging.security.TomcatLoginCommand" server="JBoss">
<login-command class="flex.messaging.security.JRunLoginCommand" server="JRun"/>
<login-command class="flex.messaging.security.WeblogicLoginCommand" server="Weblogic"/>
<login-command class="flex.messaging.security.WebSphereLoginCommand" server="WebSphere"/>
-->
</security>
security为配置安全性选项,然而,为remoting-config.xml或message-config.xml中的service添加安全性选项也是可以的.目的是只有通过身份验证,并具有某些role的用户才可以访问相应的destination.
security-constraint为安全约束.可以为destination应用安全约束.定义的方式有两种:一种是引用,一种是在destination定义的内部声明安全约束.
----------redeploy
<redeploy>
<enabled>true</enabled>
<watch-interval>20</watch-interval>
<watch-file>{context.root}/WEB-INF/flex/services-config.xml</watch-file>
<watch-file>{context.root}/WEB-INF/flex/proxy-config.xml</watch-file>
<watch-file>{context.root}/WEB-INF/flex/remoting-config.xml</watch-file>
<watch-file>{context.root}/WEB-INF/flex/messaging-config.xml</watch-file>
<touch-file>{context.root}/WEB-INF/web.xml</touch-file>
</redeploy>
----------logging
<logging>
<!-- You may also use flex.messaging.log.ServletLogTarget -->
<target class="flex.messaging.log.ConsoleTarget" level="Error">
<properties>
<prefix>[BlazeDS] </prefix>
<includeDate>false</includeDate>
<includeTime>false</includeTime>
<includeLevel>true</includeLevel>
<includeCategory>false</includeCategory>
</properties>
<filters>
<pattern>Endpoint.*</pattern>
<pattern>Service.*</pattern>
<pattern>Configuration</pattern>
</filters>
</target>
</logging>
<target>为日志信息的目标,默认的目标是控制台输出,即System.out(Java).
若要使用Servlet日志文件作为目标,将class属性改为"flex.messaging.log.ServletLogTarget".
level="Error"为日志的记录级别.有None,Error,Warn,Info,Debug,All六种选择.
<properties>为日志信息的显示格式.包括信息前缀(prefix)以及是否包含时间(includeTime),日期(includeDate),级别(includeLevel)或者类别.
<filters>为信息的过滤条件,只有匹配的类别才会被记录到指定的目标中.
----------channels
<channels>
<channel-definition id="per-client-qos-polling-amf" class="mx.messaging.channels.AMFChannel">
<endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/qosamfpolling" class="flex.messaging.endpoints.AMFEndpoint"/>
<properties>
<polling-enabled>true</polling-enabled>
<polling-interval-millis>500</polling-interval-millis>
<flex-client-outbound-queue-processor class="flex.samples.qos.CustomDelayQueueProcessor">
<properties>
<flush-delay>5000</flush-delay>
</properties>
</flex-client-outbound-queue-processor>
</properties>
</channel-definition>
...............
</channels>
channel-definition定义了Channel的标识及其实现类
endpoint定义了endpoint的实现类和Channel和Endpoint通信的url
Channel的作用就是帮助我们传输消息.Channel使用URL与Endpoint通信.Endpoint就是消息传输的***,它并不真正处理消息,它将处理过程委托给service.这样就分离了协议和消息类型这两个正交的关注点.Endpoint在接收到消息时会根据消息的destination获得合适的service,然后调用service.service.Message方法处理消息.BlazeDS定义了RemotingService,HttpProxyService,MessageService三类service,分别处理前端RemoteObject,HTTPService和WebService等组件发起的请求
相关文章推荐
- Flex与Java交互使用BlazeDS配置文件的问题
- flex和java实体类的映射关系(blazeds方式通信)
- BlazeDS, Flex与Java通信
- flex与java--Blazeds学习(配置)
- blazeds配置-- java和Flex单独开发
- 关于Flex 和java之间利用Blazeds通信的类型转换问题
- flex与java--Blazeds学习(配置)
- flex通过BlazeDS与java后台通信
- Flex同Java通信--BlazeDS入门图文详解(上)
- Flex同Java通信--BlazeDS入门图文详解(上)
- flex和java基于blazeds的通信(转)
- blazeds配置-- java和Flex单独开发
- Flex+BlazeDS+Java配置过程
- jee+blazeds+flex配置(Java工程和 Flex 工程独立)
- 使用BlazeDS实现Java和Flex通信之hello world
- Java + Flex + blazeds开发环境配置(Java工程和Flex工程独立)
- Flex与Java之间的AMF通信-BlazeDS框架的使用
- 用BlazeDS实现Java和Flex通信!
- 通过blazeds让FLEX与java通信
- 通过blazeds让FLEX与java通信