Sun Java System Application Server 9.1 管理指南

外來的 JMS 提供者

Generic Resource Adapter 1.5 for JMS 為 Java EE Connector 1.5 資源配接卡,可包裝外部 JMS 提供者 (例如 IBM Websphere MQ、Tibco EMS、Sonic MQ 等) 的 JMS 用戶端程式庫,因此可將任何 JMS 提供者與 Java EE 1.4 Application Server (例如 Sun Java System Application Server) 整合。該配接卡是 .rar 歸檔,可藉由 Java EE 1.4 Application Server 的管理工具加以部署和配置。

配置 JMS 的通用資源配接卡

Application Server 的管理工具可用來部署和配置 JMS 的通用資源配接卡。本節說明如何以 Sun Java System Application Server 來配置 JMS 的通用資源配接卡。

整體而言,可對資源配接卡進行配置以顯示 JMS 提供者是否支援 XA。另外也能指出可以用何種可能的模式與 JMS 提供者進行整合。資源配接卡支援兩種整合模式。第一種模式是以 JNDI 做為整合方式。在此情況下,受管理物件是在 JMS 提供者的 JNDI 樹狀結構中設定,並由通用資源配接卡進行查找以供使用。如果該模式並不適合用於整合,還可以使用 JMS 管理物件 javabean 類別的 Java 反射做為整合模式。

您可以使用管理主控台或指令行配置資源配接卡。方法和配置其他資源配接卡均相同。

配置通用資源配接卡

部署資源配接卡之前,Application Server 應該能夠使用 JMS 用戶端程式庫。對某些 JMS 提供者而言,用戶端程式庫也能同時包含本機程式庫。在這種情況下,Application Server JVM 也應能夠使用這些原生程式庫。

  1. 以部署連接器模組的方式來部署通用資源配接卡。

  2. 建立連接器連線池

  3. 建立連接器資源。

  4. 建立管理物件資源。

  5. 在 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 實作的類別名稱。只有將 ProviderIntegrationMode 指定為 javabean 時才使用。

XAConnectionFactoryClassName

Application Server 類別路徑中可供使用的類別名稱,例如: 

com.sun.messaging.XAConnectionFactory

無 

JMS 用戶端的 javax.jms.ConnectionFactory 實作的類別名稱。只有將 ProviderIntegrationMode 指定為 javabean 時才使用。

XAQueueConnectionFactoryClassName

Application Server 類別路徑中可供使用的類別名稱,例如: 

com.sun.messaging.XAQueueConnectionFactory

無 

JMS 用戶端的 javax.jms.XAQueueConnectionFactory 實作的類別名稱。只有將 ProviderIntegrationMode 指定為 javabean 時才使用。

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

應用程式伺服器類別路徑中可供使用的類別名稱,例如: 

com.sun.messaging.Queue

無 

JMS 用戶端的 javax.jms.Queue 實作的類別名稱。只有將 ProviderIntegrationMode 指定為 javabean 時才使用。

SupportsXA

True/false

FALSE

指定 JMS 用戶端是否支援 XA。 

ConnectionFactoryProperties

以逗號分隔的「名稱-值」對 

無 

指定 JMS 用戶端的 javabean 特性名稱以及 ConnectionFactory 的值。只有當 ProviderIntegrationModejavabean 時才需要。

JndiProperties

以逗號分隔的「名稱-值」對 

無 

指定用來連線至 JMS 提供者之 JNDI 的 JNDI 提供者特性。只有當 ProviderIntegrationModejndi 時才使用。

CommonSetterMethodName

方法名稱 

無 

指定某些 JMS 供應商在設定其受管理物件的特性時,所使用的一般 setter 方法名稱。只有當 ProviderIntegrationModejavabean 時才使用。如果是 Sun Java System Message Queue,則此特性稱為 setProperty

UserName

JMS 使用者名稱 

無 

與 JMS 提供者連線時採用的使用者名稱。 

Password

JMS 使用者的密碼 

無 

與 JMS 提供者連線時採用的密碼。 

RMPolicy

ProviderManagedOnePerPhysicalConnection

ProviderManaged

作業事件管理員使用 XAResource 上的 isSameRM 方法,判斷由兩個 XAResources 所呈現的資源管理員實例是否相同。當 RMPolicy 設定為 ProviderManaged (預設值) 時,由 JMS 提供者負責決定 RMPolicy,通用資源配接卡中的 XAResource 包裝程式僅將 isSameRM 呼叫委託給訊息佇列提供者的 XA 資源實作。這應該非常適用於大部份的訊息佇列產品。

一些 XAResource 實作 (例如 IBM MQ 系列) 的每個實體連線都必須有一個資源管理員,因此在單一作業事件中,如果由相同的佇列管理員進行內送和外送通訊時,則可能會發生問題。當 RMPolicy 設定為 OnePerPhysicalConnection 時,通用資源配接卡中 XAResource 包裝程式實作的 isSameRM 會在委託至包裝物件前,檢查這兩個 XAResource 是否使用相同的實體連線。

ManagedConnectionFactory 特性

ManagedConnectionFactory 特性是在建立 connector-connection-pool 時所指定。建立資源配接卡時指定的所有特性,都可在 ManagedConnectionFactory 中遭到置換。其他僅由 ManagedConnectionFactory 提供的特性如下所示。

特性名稱

有效值

預設值

說明

ClientId

有效的用戶端 ID 

無 

由 JMS 1.1 規格所指定的 ClientID

ConnectionFactoryJndiName

JNDI 名稱 

無 

連線工廠的 JNDI 名稱,而此連線工廠連結於 JMS 提供者的 JNDI 樹狀結構。 管理員應提供 JMS 提供者本身的所有連線工廠特性 (除了 clientID 之外)。只有當 ProviderIntegratinModejndi 時,才使用此特性名稱。

ConnectionValidationEnabled

true/false 

FALSE 

若設定為 true,資源配接卡會使用異常偵聽程式來擷取任何連線異常,並將 CONNECTION_ERROR_OCCURED 事件傳送至 Application Server。

受管理物件資源特性

本小節所說明的特性會在建立受管理物件資源時指定。所有資源配接卡特性都可在受管理資源物件中置換。其他只有管理物件資源才可提供的特性如下所示。

特性名稱

有效值

預設值

說明

DestinationJndiName

JNDI 名稱 

無 

目標的 JNDI 名稱,而此目標連結於 JMS 提供者的 JNDI 樹狀結構。 管理員應提供 JMS 提供者本身的所有特性。只有當 ProviderIntegrationModejndi 時,才使用此特性名稱。

DestinationProperties

以逗號分隔的「名稱-值」對 

無 

指定 JMS 用戶端的 javabean 特性名稱以及目標值。只有當 ProviderIntegrationModejavabean 時才需要。

啟動規格特性

本小節所述的特性在 MDB 的 Sun 特定部署描述元中,被指定為 activation-config-properties。所有資源配接卡特性都可在 Activation Spec 中置換。其他只有 ActivationSpec 才可提供的特性如下所示。

特性名稱

有效值

預設值

說明

MaxPoolSize

整數 

資源配接卡為同步傳遞訊息,可在內部建立的伺服器階段作業池最大大小。這必須等於 MDB 物件最大的池大小。 

MaxWaitTime

整數 

資源配接卡自其內部池取得伺服器階段作業時,會等候此特性所指定的秒數。如果超過此限制,訊息傳遞就會失敗。 

SubscriptionDurability

長期或非長期 

非長期 

由 JMS 1.1 規格所指定的 SubscriptionDurability

SubscriptionName

 

無 

由 JMS 1.1 規格所指定的 SubscriptionName

MessageSelector

有效的訊息選擇器 

無 

由 JMS 1.1 規格所指定的 MessageSelector

ClientID

有效的用戶端 ID 

無 

由 JMS 1.1 規格所指定的 ClientID

ConnectionFactoryJndiName

有效的 JNDI 名稱 

無 

在 JMS 提供者中建立的連線工廠 JNDI 名稱。資源配接卡會使用此連線工廠來建立連線,以接收訊息。只有將 ProviderIntegrationMode 配置為 jndi 時才使用。

DestinationJndiName

有效的 JNDI 名稱 

無 

在 JMS 提供者中建立的目標 JNDI 名稱。資源配接卡會使用此目標來建立連線,以接收訊息。只有將 ProviderIntegrationMode 配置為 jndi 時才使用。

DestinationType

javax.jms.Queuejavax.jms.Topic

Null 

MDB 會偵聽的目標類型。 

DestinationProperties

以逗號分隔的「名稱-值」對 

無 

指定 JMS 用戶端的 javabean 特性名稱以及目標值。只有當 ProviderIntegrationModejavabean 時才需要。

RedeliveryAttempts

整數 

 

當訊息在 MDB 中造成執行階段異常時,訊息要傳遞的次數。 

RedeliveryInterval

時間 (以秒為單位) 

 

當訊息在 MDB 中造成執行階段異常時,重複傳遞的間隔。 

SendBadMessagesToDMD

true/false 

False 

指出在超過嘗試傳遞的次數上限時,資源配接卡是否應傳送訊息至停用的訊息目標。 

DeadMessageDestinationJndiName

有效的 JNDI 名稱。 

無 

在 JMS 提供者中建立的目標 JNDI 名稱。這是已停用訊息之標的目標。只有當 ProviderIntegrationModejndi 時才使用。

DeadMessageDestinationClassName

目標物件的類別名稱。 

無 

只有當 ProviderIntegrationModejavabean 時才使用。

DeadMessageDestinationProperties

以逗號分隔的「名稱-值」對 

無 

指定 JMS 用戶端的 javabean 特性名稱以及目標值。只有當 ProviderIntegrationModejavabean 時才需要。

ReconnectAttempts

整數 

 

當異常偵聽程式擷取到連線錯誤時,嘗試重新連線的次數。 

ReconnectInterval

時間 (以秒為單位) 

 

重新連線的時間間隔。