BlazeDS不同方式......
2012-02-24 11:09
127 查看
If you work with LCDS or BlazeDS and are about to configure a second web application inside the same EAR, then you might see an error like this when the application starts up:
javax.servlet.UnavailableException: MessageBroker already defined from MessageBrokerServlet with init parameter messageBrokerId = '__default__'
<servlet>
<servlet-name>MessageBrokerServlet</servlet-name>
<display-name>MessageBrokerServlet</display-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>
<init-param>
<param-name>flex.write.path</param-name>
<param-value>/WEB-INF/flex</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
The above declaration is the default, and when both servlets are initialized, both are given a default identifier of '__default__'.
<init-param>
<param-name>messageBrokerId</param-name>
<param-value>55</param-value>
</init-param>
message-broker:
1)<flex:message-broker/>
2)<flex:message-broker services-config-path="classpath*:services-config.xml">
3)<bean id="_messageBroker" class="org.springframework.flex.core.MessageBrokerFactoryBean" >
<property name="servicesConfigPath" value="classpath*:services-config.xml" />
</bean>
<flex:message-broker>
<flex:mapping pattern="/messagebroker/*" />
<flex:config-processor ref="myConfigProcessor" />
<flex:exception-translator ref="myExceptionTranslator"/>
<flex:message-interceptor ref="myMessageInterceptor"/>
flex:remoting-service default-adapter-id="hibernate-object" default-channels="my-amf, my-secure-amf"/>
</flex:message-broker>
DestinationExporter:
1)<bean id="productService" class="flex.samples.product.ProductServiceImpl" >
<flex:remoting-destination />
</bean>
2)<bean id="product" class="org.springframework.flex.remoting.RemotingDestinationExporter">
<property name="messageBroker" ref="_messageBroker"/>
<property name="service" ref="productService"/>
<property name="destinationId" value="productService"/>
<property name="includeMethods" value="read, update"/>
<property name="excludeMethods" value="create, delete"/>
<property name="channels" value="my-amf, my-secure-amf"/>
</bean>
package com.example;
import org.springframework.flex.config.MessageBrokerConfigProcessor;
import flex.messaging.MessageBroker;
import flex.messaging.services.RemotingService;
public class MyDestinationCountingConfigProcessor implements MessageBrokerConfigProcessor {
public MessageBroker processAfterStartup(MessageBroker broker) {
RemotingService remotingService =
(RemotingService) broker.getServiceByType(RemotingService.class.getName());
if (remotingService.isStarted()) {
System.out.println("The Remoting Service has been started with "
+remotingService.getDestinations().size()+" Destinations.");
}
return broker;
}
public MessageBroker processBeforeStartup(MessageBroker broker) {
return broker;
}
}
javax.servlet.UnavailableException: MessageBroker already defined from MessageBrokerServlet with init parameter messageBrokerId = '__default__'
<servlet>
<servlet-name>MessageBrokerServlet</servlet-name>
<display-name>MessageBrokerServlet</display-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>
<init-param>
<param-name>flex.write.path</param-name>
<param-value>/WEB-INF/flex</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
The above declaration is the default, and when both servlets are initialized, both are given a default identifier of '__default__'.
<init-param>
<param-name>messageBrokerId</param-name>
<param-value>55</param-value>
</init-param>
message-broker:
1)<flex:message-broker/>
2)<flex:message-broker services-config-path="classpath*:services-config.xml">
3)<bean id="_messageBroker" class="org.springframework.flex.core.MessageBrokerFactoryBean" >
<property name="servicesConfigPath" value="classpath*:services-config.xml" />
</bean>
<flex:message-broker>
<flex:mapping pattern="/messagebroker/*" />
<flex:config-processor ref="myConfigProcessor" />
<flex:exception-translator ref="myExceptionTranslator"/>
<flex:message-interceptor ref="myMessageInterceptor"/>
flex:remoting-service default-adapter-id="hibernate-object" default-channels="my-amf, my-secure-amf"/>
</flex:message-broker>
DestinationExporter:
1)<bean id="productService" class="flex.samples.product.ProductServiceImpl" >
<flex:remoting-destination />
</bean>
2)<bean id="product" class="org.springframework.flex.remoting.RemotingDestinationExporter">
<property name="messageBroker" ref="_messageBroker"/>
<property name="service" ref="productService"/>
<property name="destinationId" value="productService"/>
<property name="includeMethods" value="read, update"/>
<property name="excludeMethods" value="create, delete"/>
<property name="channels" value="my-amf, my-secure-amf"/>
</bean>
package com.example;
import org.springframework.flex.config.MessageBrokerConfigProcessor;
import flex.messaging.MessageBroker;
import flex.messaging.services.RemotingService;
public class MyDestinationCountingConfigProcessor implements MessageBrokerConfigProcessor {
public MessageBroker processAfterStartup(MessageBroker broker) {
RemotingService remotingService =
(RemotingService) broker.getServiceByType(RemotingService.class.getName());
if (remotingService.isStarted()) {
System.out.println("The Remoting Service has been started with "
+remotingService.getDestinations().size()+" Destinations.");
}
return broker;
}
public MessageBroker processBeforeStartup(MessageBroker broker) {
return broker;
}
}
相关文章推荐
- asp.net 中get和post方式的不同
- Spark Streaming结合 Kafka 两种不同的数据接收方式比较
- 基于Oracle,采用JDBC、Hibernate不同方式实现自定义序列主键生成
- iOS多线程几种不同方式简单使用
- ISAPI_Rewrite3.1于MVC站点下,在IIS7跳转成功,但在IIS6跳转失败,有后缀URL和有后缀URL处理方式不同。
- 12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?
- IP概念盛行的背后:资本在狂欢,电影想哭泣 IP,英文“Intellectual Property”的缩写,直译为“知识产权”。它的存在方式很多元,可以是一个故事,也可以是某一个形象,运营成功的IP可以在漫画、小说、电影、玩具、手游等不同的媒介形式中转换。
- 文件打开方式在windows和unix系统上的不同
- 使用SQL Server 2005 新的语法ROW_NUMBER()进行分页的两种不同方式的性能比较
- Sharepoint 中读取得不同类型SPField 时的处理方式之一
- Andriod中不同layout的XML配置方式
- 使用WinInet方式访问网页与使用WinHttp对象方式访问有什么不同
- MSComm控件五种不同校验方式对数据收发的影响
- 多线程操作STL容器时不同同步方式的比较
- 动画Animation两种实现方式的不同效果
- 【微信公众号】微信关于网页授权access_token和普通access_token的区别及两种不同方式授权
- 不同VLAN之间相互通信的两种方式
- 静态页面也可以实现预览 列表不同的显示方式 原创
- Python包管理不同方式的区别
- 由于密码加密方式不同而导致db2连接慢得问题