4.7. 활성화 구성 속성
4.7.1. 주석을 사용하여 MDB 구성
@ ActivationConfigProperty
주석에 해당하는 @MessageDriven
요소 및 하위 항목을 사용하여 활성화 속성을 구성할 수 있습니다. @ActivationConfigProperty
는 MDB의 활성화 구성 속성 배열입니다. @ActivationConfigProperty
주석 사양은 다음과 같습니다.
@Target(value={}) @Retention(value=RUNTIME) public @interface ActivationConfigProperty { String propertyName(); String propertyValue(); }
@ActivationConfigProperty
표시 예
@MessageDriven(name="MyMDBName", activationConfig = { @ActivationConfigProperty(propertyName="destinationLookup",propertyValue="queueA"), @ActivationConfigProperty(propertyName = "destinationType",propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"), })
4.7.2. 배포 설명자를 사용하여 MDB 구성
ejb
요소는 빈을 MDB로 정의합니다. -jar.xml의 <message-
driven><activation-config>
및 요소에는 activation-config-property
요소를 통해 MDB 구성이 포함됩니다.
ejb-jar.xml
예
<?xml version="1.1" encoding="UTF-8"?> <jboss:ejb-jar xmlns:jboss="http://www.jboss.com/xml/ns/javaee" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-ejb3-2_0.xsd http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd" version="3.1"> <enterprise-beans> <message-driven> <ejb-name>MyMDBName</ejb-name> <ejb-class>org.jboss.tutorial.mdb_deployment_descriptor.bean.MyMDBName</ejb-class> <activation-config> <activation-config-property> <activation-config-property-name>destinationLookup</activation-config-property-name> <activation-config-property-value>queueA</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>destinationType</activation-config-property-name> <activation-config-property-value>javax.jms.Queue</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>acknowledgeMode</activation-config-property-name> <activation-config-property-value>Auto-acknowledge</activation-config-property-value> </activation-config-property> </activation-config> </message-driven> <enterprise-beans> </jboss:ejb-jar>
이름 | 설명 |
---|---|
| 대기열 또는 항목의 Java 네이밍 및 디렉터리 인터페이스 이름입니다. 필수 값입니다. |
|
엔드포인트에서 메시지를 수신하는 데 사용되는 관리적으로 정의된
명시적으로 정의되지 않은 경우 name |
|
대상 유효한 값은 |
|
|
|
트랜잭션된 자카르타 메시징을 사용하지 않는 경우 승인 유형입니다. 유효한 값은
기본값은 |
| 연결의 클라이언트 ID입니다. 필수 값이 아닙니다. |
|
토픽 서브스크립션이 지속적인지 여부. 유효한 값은
기본값은 |
| 서브스크립션 항목의 서브스크립션 이름입니다. 필수 값이 아닙니다. |
이름 | 설명 |
---|---|
|
|
| 서브스크립션을 공유하도록 연결이 구성되었는지 여부.
기본값은 |
| 자카르타 메시징 연결 사용자입니다. 필수 값이 아닙니다. |
| Jakarta Messaging 연결의 암호입니다. 필수 값이 아닙니다. |
| 사용할 최대 동시 세션 수입니다. 필수 값이 아닙니다.
기본값은 |
| 세션의 트랜잭션 시간 초과(밀리초)입니다. 필수 값이 아닙니다.
지정하지 않으면 속성이 무시되고 |
| Java 네이밍 및 디렉터리 인터페이스를 사용하여 대상을 조회하는지 여부.
기본값은 |
|
연결에 사용할 Java Naming 및 Directory Interface 매개변수입니다. 매개변수는 다음과 같이 구분된 |
| XA 대신 로컬 트랜잭션을 사용합니다.
기본값은 |
| 자카르타 메시징 연결을 설정하려는 시도 수입니다. 자카르타 메시징 리소스를 사용하기 전에 MDB를 배포할 수 있습니다. 이 경우 리소스 어댑터는 리소스를 사용할 수 있을 때까지 여러 번 설정하려고 합니다. 이는 인바운드 연결에만 적용됩니다.
기본값은 |
| 자카르타 메시징 연결을 설정하기 위한 연속 시도 사이의 간격(밀리초)입니다. 이는 인바운드 연결에만 적용됩니다.
기본값은 |
| 인바운드 커넥션 리밸런싱이 활성화되었는지 여부입니다. 이 매개변수를 사용하면 기본 클러스터 토폴로지가 변경될 때 인바운드 연결을 재조정할 수 있습니다. 아웃바운드 연결에 대한 리밸런싱이 없습니다.
기본값은 |
| 신뢰할 수 있는 클래스 및 패키지 목록인 화이트 목록에 대한 쉼표로 구분된 항목 목록입니다. 이 속성은 목록의 개체를 역직렬화하기 위해 Jakarta Messaging 리소스 어댑터에서 사용합니다. 자세한 내용은 Configuring Messaging ObjectMessage Deserialization in Configuring Messaging for JBoss EAP에서 Controlling Jakarta Messaging ObjectMessage Deserialization을 참조하십시오. |
| 블랙 목록에 대한 쉼표로 구분된 항목 목록입니다. 이는 신뢰할 수 없는 클래스 및 패키지 목록입니다. 이 속성은 목록의 개체가 역직렬화되지 않도록 Jakarta Messaging 리소스 어댑터에서 사용합니다. 자세한 내용은 Configuring Messaging ObjectMessage Deserialization in Configuring Messaging for JBoss EAP에서 Controlling Jakarta Messaging ObjectMessage Deserialization을 참조하십시오. |
4.7.3. MDB 구성을 위한 몇 가지 예제 사용 사례
메시지를 수신하는 MDB 사용 사례
MDB에서 메시지를 수신할 때 기본 시나리오는 JBoss EAP와 함께 제공되는
helloworld-mdb
빠른 시작을 참조하십시오.MDB에서 메시지를 전송하는 사용 사례
메시지를 처리한 후 다른 비즈니스 시스템에 문의하거나 메시지에 회신해야 할 수도 있습니다. 이 경우 아래 코드 조각과 같이 MDB에서 메시지를 전송할 수 있습니다.
package org.jboss.as.quickstarts.mdb; import javax.annotation.Resource; import javax.ejb.ActivationConfigProperty; import javax.ejb.MessageDriven; import javax.inject.Inject; import javax.jms.JMSContext; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.Queue; @MessageDriven(name = "MyMDB", activationConfig = { @ActivationConfigProperty(propertyName = "destinationLookup", propertyValue = "queue/MyMDBRequest"), @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge") }) public class MyMDB implements MessageListener { @Inject private JMSContext jmsContext; @Resource(lookup = "java:/queue/ResponseDefault") private Queue defaultDestination; /** * @see MessageListener#onMessage(Message) */ public void onMessage(Message rcvMessage) { try { Message response = jmsContext.createTextMessage("Response for message " + rcvMessage.getJMSMessageID()); if (rcvMessage.getJMSReplyTo() != null) { jmsContext.createProducer().send(rcvMessage.getJMSReplyTo(), response); } else { jmsContext.createProducer().send(defaultDestination, response); } } catch (JMSException e) { throw new RuntimeException(e); } } }
위의 예에서 MDB는 메시지를 수신한 후
JMSReplyTo
에 지정된 대상 또는 Java Naming 및 Directory Interface namejava:/queue/ResponseDefault
에 바인딩된 대상에 응답합니다.인바운드 연결 재조정을 구성하는 MDB 사용 사례
@MessageDriven(name="MyMDBName", activationConfig = { @ActivationConfigProperty(propertyName = "destinationType",propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName = "destinationLookup", propertyValue = "queueA"), @ActivationConfigProperty(propertyName = "rebalanceConnections", propertyValue = "true") } )