部署訊息驅動 Bean 來連接內嵌傳訊伺服器

使用 訊息驅動 Bean (MDB) 來連接內嵌傳訊伺服器

關於這項作業

下列兩種實務可以將 MDB 配置在 Liberty 伺服器中:
  • 當 MDB 和傳訊引擎是在相同的 Liberty 伺服器上。
  • 當 MDB 連接到執行於不同 Liberty 伺服器的遠端傳訊引擎。
    這個圖描繪 MDB 的兩個配置實務。
第一個實務是傳訊引擎和 MDB 在相同的 Liberty 伺服器上。
第二個實務是 MDB 連接到在不同伺服器上的傳訊引擎。

程序

  1. 配置 MDB 特性:

    請在 server.xml 檔中配置 jmsMdb-3.1wasJmsClient-2.0 特性,以便在 Liberty 伺服器中啟用 MDB 支援。如果您要執行 JNDI 查閱,也必須新增 jndi-1.0 特性與其他兩個特性。

    <featureManager>
         <feature>jmsMdb-3.1</feature>
         <feature>wasJmsClient-2.0</feature>
         <feature>jndi-1.0</feature>
    </featureManager>

    配置 wasJmsClient-2.0 特性可讓使用者定義所需的 JMS 資源,並使 MDB 能夠與傳訊引擎互動。

    重要: wasJmsClient-2.0 特性同時支援 JMS 1.1 和 JMS 2.0 規格的特性。不過,如果您只想使用符合 JMS 1.1 規格標準的特性,可以選擇使用 wasJmsClient-1.1 特性。
  2. 配置 JCA 啟動規格以使用 JMS 資源配接器,使 MDB 用來作為特定 JMS 目的地上的接聽器。您可以利用下列不同的方式來配置 MDB 與傳訊引擎互動。
    1. 使用啟動規格內容來配置 MDB。
      您可以在 server.xml 檔中定義此內容,使 MDB 能夠利用這個內容在特定 JMS 目的地上進行接聽。
      <jmsActivationSpec id="JMSSample/JMSSampleMDB">
           <properties.wasJms destinationRef="jndi/MDBQ"  />
      </jmsActivationSpec>
      
      <jmsQueue id="jndi/MDBQ" jndiName="jndi/MDBQ">
           <properties.wasJms queueName="Q1"/>
      </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 檔中所定義的啟動規格內容來使用註釋。

      針對可搭配 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) {
      	 }
      }
    3. 使用 EJB 連結檔 (ibm-ejb-jar-bnd.xml)。

      您也可以利用這個連結檔來定義 MDB 連接到傳訊引擎所需要的資源資訊。 當您使用 EJB 連結檔時,啟動規格內容 ID 不需要如步驟 1 所述,採用 application name/module name/bean name 格式。

      server.xml 中新增啟動規格內容資訊。
      <jmsActivationSpec id="PriceChangeAS">
           <properties.wasJms destinationRef="jms/TriggerQ" />
      </jmsActivationSpec>
      
      <jmsQueue id="jms/TriggerQ" jndiName="jms/TriggerQ">
           <properties.wasJms queueName="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 值。

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



「時間戳記」圖示 前次更新: 2016 年 11 月 30 日
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_dep_msg_mdbsib
檔名:twlp_dep_msg_mdbsib.html