部署訊息驅動 Bean 來連接 JCA 資源配接器

您可以利用訊息驅動 Bean (MDB),來連接 JCA 資源配接器。

關於這項作業

當您將訊息驅動 Bean (MDB) 應用程式部署到 Liberty 時,需要在 server.xml 檔中進行一些配置,以便讓每一個 MDB 能夠接收來自資源配接器的訊息。這個主題說明的範例配置,適用於只包含訊息驅動 Bean 和 JMS 資源配接器的應用程式。如果應用程式也會使用 Session Bean,必須包含 ejbLite-3.1 特性。

配置內容會因所要使用的特定資源配接器而有不同。

程序

  1. 配置 MDB 特性:

    server.xml 檔中配置 mdb-3.1jca-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>
  2. 配置您 JCA 資源配接器所需要的其他任何特性。
  3. 配置 JCA 啟動規格,使其使用資源配接器,以便以 MDB 作為接聽器。下列範例顯示各種用來將 MDB 配置成與傳訊引擎互動的方法。這些範例專門用於 JMS 資源配接器。
    1. 使用啟動規格內容來配置 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> 部署描述子元素中。
    2. 使用註釋以及 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) {
      	 }
      }
    3. 使用 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 值。
    4. [17.0.0.1 以及更新版本]server.xml 檔的 <application> 元素下,也可以指定資源資訊。 server.xml 配置資訊的格式與 ibm-ejb-jar-bnd.xml 檔中指定的資訊相同。例如:
      <application location="PriceChangeApp.ear">
      	<ejb-jar-bnd moduleName="PriceChangeEJB">       
      	   <message-driven name="PriceChangeMDBBean">
              	<jca-adapter activation-spec-binding-name="PriceChangeAS" destination-binding-name="jms/TriggerQ" />
      	   </message-driven>
      	</ejb-jar-bnd>
      </application>
      註: 您必須指定 <ejb-jar-bnd> 元素的 moduleName 屬性。值是含有 MDB 但沒有 .jar 副檔名的 JAR 檔名稱。 比方說,如果 MDB 包含在 PriceChangeEJB.jar 中,則 moduleName 屬性為 PriceChangeEJB

指示主題類型的圖示 作業主題

檔名:twlp_dep_msg_mdbjca.html