BlazeDS不同方式......

本文介绍如何解决在同一EAR文件中配置多个使用默认消息代理ID的应用程序时出现的冲突问题。通过为每个消息代理分配唯一的ID,并调整配置参数,确保应用程序能够正确启动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值