【问题标题】:Message Driven bean external configuration for JBoss with IBM MQ带有 IBM MQ 的 JBoss 的消息驱动 bean 外部配置
【发布时间】:2013-09-26 02:11:02
【问题描述】:

我正在使用带有 JBoss eap 6.1 环境的 IBM MQ 消息传递提供程序开发通知服务。我能够通过 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 中添加任何端口号、主机名、queueManager 属性。他们也不想使用 ejb-jar.xml 来外部化这些配置。我研究并发现我们可以添加域 IBM Message Driven Bean 但没有成功。关于我可以在这里做什么来外部化所有这些配置的任何建议?

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

谢谢

【问题讨论】:

  • 请注意,当您尝试使用 mdb 作为标签时,它会被转换为 ms-access。我根据我认为您想要的内容编辑了标签。
  • 感谢 Hans 整理出来。非常感谢

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


【解决方案1】:

您可以避免在 MDB 中添加主机名、端口号等,您只需在 MDB 中定义destinationType,其余的您可以在应用程序服务器中配置,例如激活规范、队列和队列连接工厂. 我也做过同样的事情,但我使用的是 IBM Websphere Application Server。

【讨论】:

    【解决方案2】:

    您实际上可以将 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 中的任何文件 - 只需在服务器配置中提供属性即可。

    【讨论】:

      猜你喜欢
      • 2015-09-20
      • 1970-01-01
      • 1970-01-01
      • 2015-11-06
      • 2012-12-13
      • 2010-09-20
      • 1970-01-01
      • 2012-07-21
      • 2012-11-04
      相关资源
      最近更新 更多