部署訊息驅動 Bean 以連接至 IBM MQ
您可以使用 訊息驅動 Bean (MDB),來連接至 IBM MQ。
程序
- 配置 MDB 特性:
請在 server.xml 檔中配置 jmsMdb-3.2 和 wmqJmsClient-2.0 特性,以便在 Liberty 伺服器中啟用 MDB 支援。如果您要執行 JNDI 查閱,也必須新增 jndi-1.0 特性與其他兩個特性。
<featureManager> <feature>jmsMdb-3.2</feature> <feature>wmqJmsClient-2.0</feature> <feature>jndi-1.0</feature> </featureManager>
配置 wmqJmsClient-2.0 特性可讓使用者定義所需的 JMS 資源,並使 MDB 能夠與傳訊引擎互動。
註: wmqJmsClient-2.0 特性同時支援 JMS 1.1 和 JMS 2.0 規格的特性。不過,如果您只想使用符合 JMS 1.1 規格標準的特性,可以選擇使用 wmqJmsClient-1.1 特性。 - 將下列項目新增到 server.xml 檔,來指定「IBM MQ 資源配接器」的位置:
其中 value 屬性指定「IBM MQ 資源配接器」檔 wmq.jmsra.rar 的絕對路徑。<variable name="wmqJmsClient.rar.location" value="/path/to/wmq/rar/wmq.jmsra.rar"/>
如需支援的版本和取得 wmq.jmsra.rar 檔的詳細資料,請參閱 IBM MQ Technote 1633761。 請從修正程式中心取得 wmq.jmsra.rar 檔,並且安裝它。
- 配置 JCA 啟動規格以使用 JMS 資源配接器,使 MDB 用來作為特定 JMS 目的地上的接聽器。您可以利用下列不同的方式來配置 MDB 與傳訊引擎互動。
- 使用啟動規格內容來配置 MDB。您可以在 server.xml 檔中定義此內容,使 MDB 能夠利用這個內容在特定 JMS 目的地上進行接聽。
<jmsActivationSpec id="JMSSample/JMSSampleMDB"> <properties.wmqJms destinationRef="jndi/MDBQ" transportType="CLIENT" queueManager="myQM" hostName="myHost" port="1414"/> </jmsActivationSpec> <jmsQueue id="jndi/MDBQ" jndiName="jndi/MDBQ"> <properties.wmqJms baseQueueName="MYQ" baseQueueManagerName="myQM"/> </jmsQueue>
<destinationRef> 參照 <jmsQueue> ID。 如果未提及 <jmsQueue> 中的 ID,<destinationRef> 必須指向 <jmsQueue> 的 <jndiName>。
註: ID 值的格式必須是 application name/module name/bean name,其中- application name 是所部署的應用程式名稱(例如 JMSSample)。 只有在 Bean 是包裝在 EAR 檔內時,才適用這個應用程式名稱。 應用程式預設為 EAR 檔的基本名稱,除非 application.xml 部署描述子有所指定,否則不含副檔名。
- module name 是包裝 Bean 的模組名稱。 在獨立式 ejb-jar 檔或 WAR 檔中,<module-name> 預設為移除了任何副檔名的模組基本名稱。在 EAR 檔中,<module-name> 預設為模組路徑名稱,移除了任何副檔名,但包含任何目錄名稱。 您可以利用 ejb-jar.xml(適用於 ejb-jar 檔)或 web.xml(適用於 WAR 檔)的 module-name 元素來置換預設的 <module-name>。
- bean name 是 Enterprise Bean 的 ejb-name。 如果是透過註釋來定義的 Enterprise Bean,除非在 MessageDriven 註釋 name() 屬性內容中加以指定,否則 Bean 名稱的預設值為 Session Bean 類別的非限定名稱。如果是透過 ejb-jar.xml 來定義的 Enterprise Bean,它是指定在 <ejb-name> 部署描述子元素中。
- 連同 server.xml 檔中所定義的啟動規格內容來使用註釋。
針對可搭配 server.xml 檔中所定義的啟動規格內容來使用的 MDB,Liberty 支援定義其註釋。如果要使用註釋,請先依照上一步所述來定義啟動規格內容。 對於每個 MDB,使用者可以依照下列範例所示來定義註釋:
@MessageDriven( name = "JMSSampleMDB", activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName = "userName", propertyValue = "user1"), @ActivationConfigProperty(propertyName = "password", propertyValue = "user1pwd"), @ActivationConfigProperty(propertyName = "destination", propertyValue = "jndi_INPUT_Q") } ) public class JMSSampleMDB implements MessageListener{ @TransactionAttribute(value = TransactionAttributeType.REQUIRED) public void onMessage(Message message) { } }
- 使用 EJB 連結檔 (ibm-ejb-jar-bnd.xml)。
您也可以利用這個連結檔來定義 MDB 連接到傳訊引擎所需要的資源資訊。 當您使用 EJB 連結檔時,啟動規格內容 ID 不需要如步驟 1 所述,採用 application name/module name/bean name 格式。
在 server.xml 中新增啟動規格內容資訊。<jmsActivationSpec id="PriceChangeAS"> <properties.wmqJms destinationRef="jms/TriggerQ" transportType="CLIENT" queueManager="myQM" hostName="myHost" port="1414"/> </jmsActivationSpec> <jmsQueue id="jms/TriggerQ" jndiName="jms/TriggerQ"> <properties.wmqJms baseQueueName="Q1"/> </jmsQueue>
在 ibm-ejb-jar-bnd.xml 檔中新增下列 MDB 連結資訊。<ejb-jar-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_1.xsd" (http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_1.xsd%27) version="1.1"> <message-driven name="PriceChangeMDBBean"> <jca-adapter activation-spec-binding-name="PriceChangeAS" destination-binding-name="jms/TriggerQ" /> </message-driven> </ejb-jar-bnd>
註: 使用 EJB 連結檔時,ibm-ejb-jar-bnd.xml 檔中的 activation-spec-binding-name 屬性必須指向 server.xml 檔中指定的啟動規格內容 ID 值。
- 使用啟動規格內容來配置 MDB。


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_dep_msg_mdbwmq
檔名:twlp_dep_msg_mdbwmq.html