带有IBM MQ的JBoss的消息驱动bean外部配置

时间:2013-09-20 15:55:53

标签: configuration jms ibm-mq message-driven-bean

我正在使用JBoss eap 6.1环境中的IBM MQ消息传递提供程序开发Notification Service。我成功地通过MQ JCA提供者rar即wmq.jmsra.rar文件发送消息。但是在消费者方面,我当前的配置如下所示

    @MessageDriven(   
    activationConfig = {   
            @ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Queue"),   
            @ActivationConfigProperty(propertyName="destination", propertyValue="F2.QUEUE"),
            @ActivationConfigProperty(propertyName="providerAdapterJNDI", propertyValue="java:jboss/jms/TopicFactory"),
            @ActivationConfigProperty(propertyName="queueManager", propertyValue="TOPIC.MANAGER"),
            @ActivationConfigProperty(propertyName="hostName", propertyValue="10.239.217.242"),
            @ActivationConfigProperty(propertyName="userName", propertyValue="root"),
            @ActivationConfigProperty(propertyName = "channel", propertyValue = "TOPIC.CHANNEL"),
            @ActivationConfigProperty(propertyName = "port", propertyValue = "1422")   

    }) 

我的问题是此服务的使用者不希望在这些bean中添加任何端口号,hostName,queueManager属性。他们也不想使用ejb-jar.xml来外化这些配置。我研究并发现我们可以添加一个域IBM Message Driven Bean但没有成功。关于我在这里可以做什么以外部化所有这些配置的任何建议?

编辑:添加 - > JCA资源适配器部署在消费者端,如果它更容易。

由于

2 个答案:

答案 0 :(得分:1)

您实际上可以将MDB激活规范属性外部化到服务器配置文件。

创建ejb-jar.xml文件,但不要将实际值放在文件中,使用属性占位符:

<activation-config-property>
    <activation-config-property-name>hostName</activation-config-property-name>
    <activation-config-property-value>${wmq.host}</activation-config-property-value>
</activation-config-property>

为所有所需属性执行此操作。

确保在服务器配置文件中启用了Java EE规范文件(在本例中为ejb-jar.xml)的属性替换:

<subsystem xmlns="urn:jboss:domain:ee:1.2">
   <spec-descriptor-property-replacement>true</spec-descriptor-property-replacement>

然后,在服务器配置文件中,为您的属性提供值:

<system-properties>
    <property name="wmq.host" value="10.0.0.150"/>

打包MDB后,您无需更改MDB jar中的任何文件 - 只需提供服务器配置中的属性。

答案 1 :(得分:0)

您可以避免在MDB中添加主机名,端口号等,您只想在MDB中定义destinationType,以及您可以在应用服务器中配置的其他内容,如激活规范,队列和队列连接工厂。 我做了同样的事情,但我使用的是IBM Websphere Application Server。