임베디드 메시징 서버에 연결할 메시지 구동 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. MDB가 특정 JMS 대상에 대해 리스너로 작동할 수 있도록 JMS 자원 어댑터를 사용하는 JCA 활성화 스펙을 구성하십시오. 다음은 MDB가 메시징 엔진과 상호작용하도록 구성할 수 있는 다른 방법입니다.
    1. 활성화 스펙 특성을 사용하여 MDB를 구성하십시오.
      MDB가 특성을 사용하여 특정 JMS 대상에 대해 청취할 수 있도록 server.xml 파일에서 특성을 정의할 수 있습니다.
      <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 파일 내에 패키징되는 경우에만 애플리케이션 이름이 적용됩니다. application.xml 배치 디스크립터에 의해 지정되지 않으면 application은 기본값으로 파일 이름 확장자 없이 EAR 파일의 기본 이름이 됩니다.
      • module name은 Bean이 패키징되는 모듈의 이름입니다. 독립형 ejb-jar 파일 또는 WAR 파일에서, <module-name>의 기본값은 파일 이름 확장자가 제거된 모듈의 기본 이름입니다. EAR 파일에서, <module-name>의 기본값은 파일 이름 확장자는 제거되었지만 디렉토리 이름은 포함된 모듈의 경로 이름입니다. 기본 <module-name>은 ejb-jar.xml(ejb-jar 파일의 경우) 또는 web.xml(WAR 파일의 경우)의 module-name 요소를 사용하여 대체될 수 있습니다.
      • bean name은 엔터프라이즈 Bean의 ejb-name입니다. 어노테이션을 통해 정의된 엔터프라이즈 Bean의 경우, Bean 이름은 기본값으로 세션 Bean 클래스의 규정되지 않은 이름이 됩니다(MessageDriven 어노테이션의 name() 속성의 컨텐츠에 지정되지 않은 경우). ejb-jar.xml을 통해 정의된 엔터프라이즈 Bean의 경우, 이는 <ejb-name> 배치 디스크립터 요소에 지정됩니다.
    2. server.xml 파일에 정의된 활성화 스펙 특성과 함께 어노테이션을 사용합니다.

      Libertyserver.xml 파일에 정의된 활성화 스펙 특성과 함께 사용될 수 있는 MDB에 대한 어노테이션 정의를 지원합니다. 어노테이션을 사용하려면, 먼저 이전 단계에서 언급한 것처럼 활성화 스펙 특성을 정의하십시오. 그리고 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 값을 가리켜야 합니다.
    4. [17.0.0.1 and later]또한 자원 정보가 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 속성을 지정해야 합니다. 값은 .jar 확장자 없이 MDB가 포함된 JAR 파일의 이름입니다. 예를 들어, MDB가 PriceChangeEJB.jar에 포함된 경우에 moduleName 속성은 PriceChangeEJB입니다.

주제의 유형을 표시하는 아이콘 태스크 주제

파일 이름: twlp_dep_msg_mdbsib.html