簡體   English   中英

從standalone.xml到MQ的JBoss連接

[英]JBoss connection to MQ from standalone.xml

我正在嘗試從JBoss EAP 6.3實例連接到Websphere MQ。 我可以使連接正常工作,但是需要將主機名編碼到Bean中。 我寧願不做的事情。 我在standalone.xml中有一些配置,但是我不認為這些設置正在使用中。

這就是我的standalone.xml中的內容:

    <subsystem xmlns="urn:jboss:domain:resource-adapters:1.1">
        <resource-adapters>
            <resource-adapter id="wmq.jmsra.rar">
                <archive>
                    wmq.jmsra.rar
                </archive>
                <transaction-support>NoTransaction</transaction-support>
                <connection-definitions>
                    <connection-definition class-name="com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl" jndi-name="java:/jms/wmqCF" enabled="true" use-java-context="true" pool-name="wmqCF">
                        <config-property name="port">
                            1414
                        </config-property>
                        <config-property name="hostName">
                            my.mqserver.net
                        </config-property>
                        <config-property name="channel">
                            SYSTEM.DEF.SVRCONN
                        </config-property>
                        <config-property name="transportType">
                            CLIENT
                        </config-property>
                        <config-property name="queueManager">
                            MY.QUEUE.MANAGER
                        </config-property>
                    </connection-definition>
                </connection-definitions>
            </resource-adapter>
        </resource-adapters>
    </subsystem>

在我的bean中,我具有以下注釋:

@MessageDriven( name="WebSphereMQMDB", 
activationConfig =
{
    @ActivationConfigProperty(propertyName = "destinationType",propertyValue = "javax.jms.Queue"),
    @ActivationConfigProperty(propertyName = "destination", propertyValue = "MQ.QUEUE.NAME")
})

public class WebSphereMQMDB implements MessageListener {
}

當我部署上述代碼時,出現錯誤,指出它無法連接到本地主機(1414)上的隊列管理器。 當我將hostName屬性添加到Bean時,它確實可以正常工作,如下所示:

@MessageDriven( name="WebSphereMQMDB", 
activationConfig =
{
    @ActivationConfigProperty(propertyName = "hostName",propertyValue = "my.mqserver.net"),
    @ActivationConfigProperty(propertyName = "destinationType",propertyValue = "javax.jms.Queue"),
    @ActivationConfigProperty(propertyName = "destination", propertyValue = "MQ.QUEUE.NAME")
})

public class WebSphereMQMDB implements MessageListener {
}

如何獲得我的bean以使用來自standalone.xml的配置,所以我不必在每個bean中設置hostName屬性?

您對standalone.xml的定義對於與Websphere MQ的傳出連接有效(將消息發送到Queue)。 在我們從HornetQ遷移到WebSphere的應用程序上,我們在e-META-INF文件夾中添加ejb-jar.xml,如下所示:

<?xml version='1.0' encoding='UTF-8' ?>
<ejb-jar id="ejb-jar_1" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"
    version="2.1">

    <enterprise-beans>
        <message-driven>
            <ejb-name>WebSphereMQMDB</ejb-name>
            <ejb-class>com.your.package.WebSphereMQMDB </ejb-class>
            <transaction-type>Container</transaction-type>
            <message-destination-type>javax.jms.Queue</message-destination-type>
            <activation-config>
                <activation-config-property>
                    <activation-config-property-name>maxSession</activation-config-property-name>
                    <activation-config-property-value>8</activation-config-property-value>
                </activation-config-property>
                <activation-config-property> 
                     <activation-config-property-name>destination</activation-config-property-name> 
                     <activation-config-property-value>${com.your.package.MQ.destination}</activation-config-property-value> 
                </activation-config-property> 
                <activation-config-property>
                     <activation-config-property-name>hostName</activation-config-property-name>
                     <activation-config-property-value>${com.your.package.MQ.hostname}</activation-config-property-value>
                </activation-config-property>
                <activation-config-property>
                     <activation-config-property-name>port</activation-config-property-name>
                     <activation-config-property-value>${com.your.package.MQ.port}</activation-config-property-value>
                </activation-config-property>
                <activation-config-property>
                     <activation-config-property-name>queueManager</activation-config-property-name>
                     <activation-config-property-value>${com.your.package.MQ.queuemanager}</activation-config-property-value>
                </activation-config-property>
                <activation-config-property>
                     <activation-config-property-name>channel</activation-config-property-name>
                     <activation-config-property-value>${com.your.package.MQ.channel}</activation-config-property-value>
                </activation-config-property>
                <activation-config-property>
                     <activation-config-property-name>transportType</activation-config-property-name>
                     <activation-config-property-value>${com.your.package.MQ.transporttype}</activation-config-property-value>
                </activation-config-property>
          </activation-config>
        </message-driven>
    </enterprise-beans>
</ejb-jar>

然后,您應該在擴展名之后立即在standalone.xml上定義屬性,例如:

<system-properties>
    <property name="com.your.package.MQ.destination" value="Q00.APP.AG000001" />
    <property name="com.your.package.MQ.hostname" value="mqserver.yourcompany.com" />
    <property name="com.your.package.MQ.port" value="1416" />
    <property name="com.your.package.MQ.queuemanager" value="Q00" />
    <property name="com.your.package.MQ.channel" value="Q00.APP.SVRCONN" />
    <property name="com.your.package.MQ.transporttype" value="Client" />
</system-properties>

希望能幫助到你

還要注意,對於JBoss EAP 6.3,您可以將注釋定義為系統屬性。 在standalone.xml中:

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

將注解屬性替換設置為“ true”,則可以在MDB源代碼中使用$ {prop.name}。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM