Sun Java System Application Server Enterprise Edition 8.2 관리 설명서

외부 JMS 공급자

JMS용 일반 자원 어댑터는 IBM Websphere MQ, Tibco EMS 및 Sonic MQ와 같은 외부 JMS 공급자의 JMS 클라이언트 라이브러리를 래핑할 수 있으며 이에 따라 모든 JMS 공급자를 Sun Java System Application Server와 같은 Java EE 1.4 응용 프로그램 서버에 통합할 수 있는 Java EE Connector 1.5 자원 어댑터입니다. 이 어댑터는 .rar 아카이브로서, Java EE 1.4 응용 프로그램 서버의 관리 도구를 사용하여 배포 및 구성할 수 있습니다.

JMS용 일반 자원 어댑터 구성

응용 프로그램 서버의 관리 도구를 사용하여 JMS용 일반 자원 어댑터를 배포하고 구성할 수 있습니다. 이 절에서는 Sun Java System Application Server에 JMS용 일반 자원 어댑터를 구성하는 방법에 대해 설명합니다. 일반적으로 자원 어댑터는 JMS 공급자가 XA를 지원하는지 여부를 나타내도록 구성할 수 있습니다. 또한, JMS 공급자와의 가능한 통합 모드를 나타내도록 구성할 수도 있습니다. 자원 어댑터는 두 가지 통합 모드를 지원합니다. 첫 번째 모드는 JNDI를 통합 수단으로 사용합니다. 이 경우, 관리 대상 객체는 JMS 공급자의 JNDI 트리에 설정되며 일반 자원 어댑터에서 사용할 목적으로 조회됩니다. 해당 모드가 통합에 적합하지 않은 경우 JMS 관리 대상 객체 javabean 클래스의 Java 리플렉션을 통합 모드로 사용할 수도 있습니다. Sun Java System Application Server의 관리 콘솔 또는 CLI를 사용하여 자원 어댑터를 구성할 수 있습니다. 이 방법은 다른 자원 어댑터를 구성하는 방법과 다르지 않습니다.

일반 자원 어댑터 구성

자원 어댑터를 배포하기 전에 JMS 클라이언트 라이브러리를 Application Server에 사용할 수 있어야 합니다. 일부 JMS 공급자의 경우 클라이언트 라이브러리에 원시 라이브러리가 포함되어 있을 수도 있습니다. 이 경우, 원시 라이브러리도 Application Server JVM에 사용할 수 있어야 합니다.

  1. 커넥터 모듈을 배포한 것과 동일한 방식으로 일반 자원 어댑터를 배포합니다.

    이에 대한 작업 단계는 관리 콘솔 온라인 도움말을 참조하십시오. 배포 중 install-dir/lib/addons/resourceadapters/genericjmsra/genericra.rar을 일반 자원 어댑터의 위치로 지정해야 합니다. 또한, 자원 어댑터 등록 정보 절에 설명된 등록 정보를 지정해야 합니다.

  2. 커넥터 연결 풀을 만듭니다.

    이에 대한 작업 단계는 관리 콘솔 온라인 도움말을 참조하십시오. 새 커넥터 연결 풀 페이지의 자원 어댑터 콤보 상자에서 genericra를 선택하고 연결 정의 콤보 상자에서 javax.jms.QueueConnectionFactory를 선택합니다. 또한, ManagedConnectionFactory 등록 정보 절에 설명된 등록 정보를 지정합니다.

  3. 커넥터 자원을 만듭니다.

    이 작업에 대한 자세한 절차는 관리 콘솔 온라인 도움말을 참조하십시오. 새 커넥터 자원 페이지에서, 이전 단계에서 만든 풀을 선택합니다.

  4. 관리 대상 객체 자원을 만듭니다.

    이 작업에 대한 자세한 절차는 관리 콘솔 온라인 도움말을 참조하십시오. 새 관리 객체 자원 페이지에서 genericra를 자원 어댑터로, javax.jms.Queue를 자원 유형으로 선택합니다. 다음을 누르고 두 번째 페이지에서 등록 정보 추가를 누릅니다. 추가 등록 정보 테이블에서 DestinationProperties라는 새 등록 정보를 Name\\=clientQueue 값으로 지정합니다. 다른 등록 정보에 대한 자세한 내용은 관리 대상 객체 자원 등록 정보 절을 참조하십시오.

  5. Sun Java System Application Server의 보안 정책을 다음과 같이 변경합니다.

    • sjsas_home/domains/domain1/config/server.policy를 수정하여 java.util.logging.LoggingPermission "control"을 추가합니다.

    • sjsas_home/lib/appclient/client.policy를 수정하여 permission javax.security.auth.PrivateCredentialPermission "javax.resource.spi.security.PasswordCredential * \"*\"","read";를 추가합니다.

자원 어댑터 등록 정보

다음 표는 자원 어댑터를 만들 때 사용할 등록 정보를 나타냅니다.

등록 정보 이름

유효 값

기본값

설명

ProviderIntegrationMode

javabean/jndi

javabean

자원 어댑터와 JMS 클라이언트 간의 통합 모드를 결정합니다. 

ConnectionFactoryClassName

Application Server 클래스 경로에 사용할 수 있는 클래스 이름. 예를 들면 다음과 같습니다. 

com.sun.messaging.ConnectionFactory

없음 

JMS 클라이언트의 javax.jms.ConnectionFactory 구현 클래스 이름입니다. ProviderIntegrationModejavabean으로 지정된 경우에 사용됩니다.

QueueConnectionFactoryClassName

Application Server 클래스 경로에 사용할 수 있는 클래스 이름. 예를 들면 다음과 같습니다. 

com.sun.messaging.QueueConnectionFactory

없음 

JMS 클라이언트의 javax.jms.QueueConnectionFactory 구현 클래스 이름입니다. ProviderIntegrationModejavabean으로 지정된 경우에 사용됩니다.

TopicConnectionFactoryClassName

Application Server 클래스 경로에 사용할 수 있는 클래스 이름. 예를 들면 다음과 같습니다. 

com.sun.messaging.TopicConnectionFactory

없음 

JMS 클라이언트의 javax.jms.TopicConnectionFactory 구현 클래스 이름입니다. ProviderIntegrationModejavabean으로 지정된 경우에 사용됩니다.

XAConnectionFactoryClassName

Application Server 클래스 경로에 사용할 수 있는 클래스 이름. 예를 들면 다음과 같습니다. 

com.sun.messaging.XAConnectionFactory

없음 

JMS 클라이언트의 javax.jms.ConnectionFactory 구현 클래스 이름입니다. ProviderIntegrationModejavabean으로 지정된 경우에 사용됩니다.

XAQueueConnectionFactoryClassName

Application Server 클래스 경로에 사용할 수 있는 클래스 이름. 예를 들면 다음과 같습니다. 

com.sun.messaging.XAQueueConnectionFactory

없음 

JMS 클라이언트의 javax.jms.XAQueueConnectionFactory 구현 클래스 이름입니다. ProviderIntegrationModejavabean으로 지정된 경우에 사용됩니다.

XATopicConnectionFactoryClassName

Application Server 클래스 경로에 사용할 수 있는 클래스 이름. 예를 들면 다음과 같습니다. 

com.sun.messaging.XATopicConnectionFactory

없음 

JMS 클라이언트의 javax.jms.XATopicConnectionFactory 구현 클래스 이름입니다. ProviderIntegrationModejavabean으로 지정된 경우에 사용됩니다.

TopicClassName

Application Server 클래스 경로에 사용할 수 있는 클래스 이름. 예를 들면 다음과 같습니다. 

com.sun.messaging.Topic

없음 

JMS 클라이언트의 javax.jms.Topic 구현 클래스 이름입니다. ProviderIntegrationModejavabean으로 지정된 경우에 사용됩니다.

QueueClassName

Application Server 클래스 경로에 사용할 수 있는 클래스 이름. 예를 들면 다음과 같습니다. 

 

com.sun.messaging.Queue

없음 

JMS 클라이언트의 javax.jms.Queue 구현 클래스 이름입니다. ProviderIntegrationModejavabean으로 지정된 경우에 사용됩니다.

SupportsXA

True/false

FALSE

JMS 클라이언트가 XA를 지원할지 여부를 지정합니다. 

ConnectionFactoryProperties

쉼표로 구분된 이름 값 쌍 

없음 

javabean 등록 정보 이름 및 JMS 클라이언트의 ConnectionFactory 값을 지정합니다. ProviderIntegrationModejavabean으로 지정된 경우에만 사용됩니다.

JndiProperties

쉼표로 구분된 이름 값 쌍 

없음 

JMS 공급자의 JNDI에 연결하는 데 사용할 JNDI 공급자 등록 정보를 지정합니다. ProviderIntegrationModejndi로 지정된 경우에만 사용됩니다.

CommonSetterMethodName

메소드 이름 

없음 

일부 JMS 공급업체가 자체 관리 대상 객체의 등록 정보를 설정하는 데 사용하는 일반 setter 메소드 이름을 지정합니다. ProviderIntegrationModejavabean으로 지정된 경우에만 사용됩니다. Sun Java System Message Queue의 경우 이 등록 정보의 이름은 setProperty입니다.

UserName

JMS 사용자 이름 

없음 

JMS 공급자 연결에 사용할 사용자 이름입니다. 

Password

JMS 사용자 비밀번호 

없음 

JMS 공급자 연결에 사용할 비밀번호입니다. 

RMPolicy

ProviderManaged 또는 OnePerPhysicalConnection

ProviderManaged

트랜잭션 관리자에서 XAResourceisSameRM 메소드를 사용하여 두 XAResources가 나타내는 자원 관리자 인스턴스가 동일한지 확인합니다.

RMPolicyProviderManaged(기본값)로 설정되면, JMS 공급자는 RMPolicy를 결정하게 되며 일반 자원 어댑터의 XAResource 래퍼는 isSameRM 호출을 메시지 대기열 공급자의 XA 자원 구현에 위임하기만 합니다. 이 기능은 대부분의 메시지 대기열 제품에 대해 완벽하게 작동해야 합니다.

IBM MQ 시리즈와 같은 일부 XAResource 구현은 물리적 연결당 하나의 자원 관리자를 사용합니다. 이 경우, 동일한 대기열 관리자에 대한 인바운드 및 아웃바운드 통신이 단일 트랜잭션 내에 있으면(예: MDB가 대상에 응답을 보냄) 문제가 발생합니다.

RMPolicyOnePerPhysicalConnection으로 설정되면, 일반 자원 어댑터에 있는 XAResource 래퍼 구현의 isSameRM은 래핑된 객체에 위임하기 전에 두 XAResource가 동일한 물리적 연결을 사용하는지 확인합니다. 이 등록 정보에 대한 자세한 내용은 Glassfish 웹 사이트에서 이슈 트래커 데이터베이스의 이슈 번호 5를 참조하십시오.

ManagedConnectionFactory 등록 정보

ManagedConnectionFactory 등록 정보는 connector-connection-pool을 만들 때 지정됩니다. 자원 어댑터를 만들 때 지정된 모든 ManagedConnectionFactory 등록 정보는 대체될 수 있습니다. ManagedConnectionFactory에만 사용할 수 있는 추가 등록 정보는 다음과 같습니다.

등록 정보 이름

유효 값

기본값

설명

ClientId

유효 클라이언트 아이디 

없음 

JMS 1.1 사양으로 지정된 ClientID입니다.

ConnectionFactoryJndiName

JNDI 이름 

없음 

JMS 공급자의 JNDI 트리에 바인딩된 연결 팩토리의 JNDI 이름입니다. 관리자는 JMS 공급자에 모든 연결 팩토리 등록 정보(clientID 제외)를 제공해야 합니다. 이 등록 정보 이름은 ProviderIntegrationModejndi로 지정된 경우에만 사용됩니다.

ConnectionValidationEnabled

true/false 

false 

true로 설정하면 자원 어댑터는 예외 Listener를 사용하여 연결 예외를 포착하고 CONNECTION_ERROR_OCCURED 이벤트를 Application Server에 보냅니다.

관리 대상 객체 자원 등록 정보

이 등록 정보는 관리 대상 객체 자원을 만들 때 지정됩니다. 관리 대상 객체 자원의 모든 자원 어댑터 등록 정보는 대체될 수 있습니다. 관리 대상 객체 자원에만 사용할 수 있는 추가 등록 정보는 다음과 같습니다.

등록 정보 이름

유효 값

기본값

설명

DestinationJndiName

JNDI 이름 

없음 

JMS 공급자의 JNDI 트리에 바인딩된 대상의 JNDI 이름입니다. 관리자는 JMS 공급자에 모든 등록 정보를 제공해야 합니다. 이 등록 정보 이름은 ProviderIntegrationModejndi로 지정된 경우에만 사용됩니다.

DestinationProperties

쉼표로 구분된 이름 값 쌍 

없음 

이 등록 정보는 javabean 등록 정보 이름 및 JMS 클라이언트의 대상 값을 지정합니다. ProviderIntegrationModejavabean으로 지정된 경우에만 사용됩니다.

활성화 사양 등록 정보

이 등록 정보는 MDB의 Sun 특정 배포 설명자에 activation-config-properties로 지정되어 있습니다. 활성화 사양의 모든 자원 어댑터 등록 정보는 대체될 수 있습니다. 활성화 사양에만 사용할 수 있는 추가 등록 정보는 다음과 같습니다.

등록 정보 이름

유효한 값

기본값

설명

MaxPoolSize

정수 

동시 메시지 전달을 수행하기 위해 자원 어댑터에서 내부적으로 만든 서버 세션 풀의 최대 크기입니다. 이 값은 MDB 객체의 최대 풀 크기와 같아야 합니다. 

MaxWaitTime

정수 

자원 어댑터는 이 등록 정보에 지정된 시간(초) 동안 내부 풀에서 서버 세션을 가져오기 위해 대기합니다. 이 제한이 초과되면 메시지 전달이 실패합니다. 

SubscriptionDurability

영구적 또는 비영구적 

비영구적 

JMS 1.1 사양에서 지정된 SubscriptionDurability입니다.

SubscriptionName

 

없음 

JMS 1.1 사양에서 지정된 SubscriptionName입니다.

MessageSelector

유효 메시지 선택기 

없음 

JMS 1.1 사양에서 지정된 MessageSelector입니다.

ClientID

유효 클라이언트 아이디 

없음 

JMS 1.1 사양에서 지정된 ClientID입니다.

ConnectionFactoryJndiName

유효 JNDI 이름 

없음 

JMS 공급자에 만들어진 연결 팩토리의 JNDI 이름입니다. 자원 어댑터가 이 연결 팩토리를 사용하여 메시지를 수신하기 위한 연결을 만듭니다. ProviderIntegrationModejndi로 지정된 경우에만 사용됩니다.

DestinationJndiName

유효 JNDI 이름 

없음 

JMS 공급자에 만들어진 대상의 JNDI 이름입니다. 자원 어댑터가 이 대상을 사용하여 메시지를 수신하기 위한 연결을 만듭니다. ProviderIntegrationModejndi로 지정된 경우에만 사용됩니다.

DestinationType

javax.jms.Queue 또는 javax.jms.Topic

null 

MDB가 수신할 대상 유형입니다. 

DestinationProperties

쉼표로 구분된 이름 값 쌍 

없음 

이 등록 정보는 javabean 등록 정보 이름 및 JMS 클라이언트의 대상 값을 지정합니다. ProviderIntegrationModejavabean으로 지정된 경우에만 사용됩니다.

RedeliveryAttempts

정수 

 

메시지로 인해 MDB 런타임 예외가 발생한 경우 메시지를 전달할 시간입니다. 

RedeliveryInterval

시간(초) 

 

메시지로 인해 MDB 런타임 예외가 발생한 경우의 재전달 시도 간격입니다. 

SendBadMessagesToDMD

true/false 

false 

전달 시도 횟수가 초과된 경우 자원 어댑터가 해당 메시지를 사용 불능 메시지 대상으로 보내야 할지를 나타냅니다. 

DeadMessageDestinationJndiName

유효한 JNDI 이름 

없음 

JMS 공급자에 만들어진 대상의 JNDI 이름입니다. 이 값은 사용 불능 메시지를 위한 목표 대상입니다. ProviderIntegrationModejndi로 지정된 경우에만 사용됩니다.

DeadMessageDestinationClassName

대상 객체의 클래스 이름 

없음 

ProviderIntegrationModejavabean으로 지정된 경우에 사용됩니다.

DeadMessageDestinationProperties

쉼표로 구분된 이름 값 쌍 

없음 

이 등록 정보는 javabean 등록 정보 이름 및 JMS 클라이언트의 대상 값을 지정합니다. 이는 ProviderIntegrationModejavabean으로 지정된 경우에만 사용됩니다.

ReconnectAttempts

정수 

 

연결 시 예외 Listener에서 오류를 포착한 경우 다시 연결을 시도할 시간입니다. 

ReconnectInterval

시간(초) 

 

다시 연결 시도 간격입니다.