部署訊息驅動 Bean 來連接 JCA 資源配接器
您可以利用訊息驅動 Bean (MDB),來連接 JCA 資源配接器。
關於這項作業
當您將訊息驅動 Bean (MDB) 應用程式部署到 Liberty 時,需要在 server.xml 檔中進行一些配置,以便讓每一個 MDB 能夠接收來自資源配接器的訊息。這個主題說明的範例配置,適用於只包含訊息驅動 Bean 和 JMS 資源配接器的應用程式。如果應用程式也會使用 Session Bean,必須包含 ejbLite-3.1 特性。
配置內容會因所要使用的特定資源配接器而有不同。
程序
- 配置 MDB 特性:
在 server.xml 檔中配置 mdb-3.1 和 jca-1.6 特性,以便在 Liberty 中啟用 MDB 支援。如果您要執行 JNDI 查閱,也必須新增 jndi-1.0 特性與其他兩個特性。
<featureManager> <feature>mdb-3.1</feature> <feature>jca-1.6</feature> <feature>jndi-1.0</feature> </featureManager>
- 配置您 JCA 資源配接器所需要的其他任何特性。
- 配置 JCA 啟動規格,使其使用資源配接器,以便以 MDB 作為接聽器。下列範例顯示各種用來將 MDB 配置成與傳訊引擎互動的方法。這些範例專門用於 JMS 資源配接器。
- 使用啟動規格內容來配置 MDB。您可以在 server.xml 檔中定義此內容,使 MDB 能夠利用這個內容在特定 JMS 目的地上進行接聽。
<activationSpec id="JMSSample/JMSSampleMDB"> <properties.wmqJms destinationRef="jndi/MDBQ" transportType="CLIENT" queueManager="myQM" hostName="myHost" port="1414"/> </activationSpec> <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 檔中所定義的啟動規格內容,來配置 MDB。
對於可搭配 server.xml 檔中所定義的啟動規格內容使用的訊息驅動 Bean,Liberty 設定檔支援定義其註釋。如果要使用註釋,請先依照上一步所述來定義啟動規格內容。對於每個訊息驅動 Bean,您可以依照下列範例所示來定義註釋:
@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。
您也可以利用這個連結檔來定義 MDB 連接到傳訊引擎所需要的資源資訊。 使用 EJB 連結檔時,啟動規格內容 ID 不需要如步驟 a 所述,採用 application name/module name/bean name 格式。
在 server.xml 檔中新增啟動規格內容資訊。<activationSpec id="PriceChangeAS"> <properties.wmqJms destinationRef="jms/TriggerQ" transportType="CLIENT" queueManager="myQM" hostName="myHost" port="1414"/> </activationSpec> <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。
上層主題: 在 Liberty 內部署訊息驅動 Bean


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