このセクションは、一般的な JMS プロバイダー用に SOAtest および Virtualize を構成するためのリファレンスを提供します。
以下の操作を行って、SOAtest および Virtualize のクラスパスに必要な Jar ファイル (下の表に記載) を追加します。
JMS システム (JNDI アクセスに認証を要求するように設定された) への接続にユーザー名とパスワードが要求される場合はいつでも、次の JNDI プロパティを設定する必要があります。
java.naming.security.principal=<USERNAME>
java.naming.security.credentials=<PASSWORD>
対象 | JNDI ルックアップによる JMS ConnectionFactory の構築が難しい Amazon Simple Queue Service (SQS) およびその他の JMS プロバイダー。 |
---|---|
最低限必要な JAR | Amazon SQS java client JAR (Maven Central からダウンロード):
WSO2 carbon-jndi JAR (WSO2 Maven リポジトリ からダウンロード): org.wso2.carbon.jndi-<VERSION>.jar |
ファクトリ クラス |
「JMS ConnectionFactory オブジェクトの作成」を参照してください。 |
AWS との接続 | AWS への接続には IAM ユーザー ロールを使用します。詳細については以下の Amazon のドキュメントを参照してください。 |
詳細 | https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/getting-started.html |
以下の Groovy スクリプトは、JMS ConnectionFactory オブジェクトを作成し、それをインメモリの InitialContext にバインドするために提供されています (bindConnectionFactory
メソッド)。SOAtest または Virtualize の起動ごとに 1 回、このスクリプトを実行します。オブジェクトを必要とする各 .tst に対して、拡張ツール (SOAtest .tst や Virtualize .pvn のセットアップ テストなど) を使用してスクリプトを実行したり、環境に適した方法でスクリプトの実行を自動化するより洗練されたプロセスを実装したりすることができます。
このスクリプトは、AWS との認証に 2 つの方法をサポートしています。SOAtest/Virtualize サーバーが AWS 環境内にデプロイされている場合、AWS はインスタンス プロバイダー フローを使用した認証を推奨します。また、AWS との認証には、region
、accessKey
、secretKey
を必要とする静的モードを使用することもできます。スクリプトで定義されている認証変数については、「Script Variables」を参照してください。
import java.util.* import javax.jms.* import javax.naming.* import com.amazon.sqs.javamessaging.* import com.amazonaws.auth.* import com.amazonaws.regions.* import com.amazonaws.services.securitytoken.* import com.amazonaws.services.securitytoken.model.* import com.amazonaws.services.sqs.* // Specify how you want to connect to AWS ("instance" or "static") provider = "instance" // Access keys for CLI, SDK, & API access // see https://console.aws.amazon.com/iam/home#/security_credentials accessKey = "" secretKey = "" region = Regions.US_WEST_1 // Multi-factor authentication // set serialNumber to null if MFA not enabled serialNumber = null tokenCode = "" // code from Google Authenticator (for example) durationSeconds = 3600 void bindConnectionFactory() { Properties env = new Properties() env.put(Context.INITIAL_CONTEXT_FACTORY, "org.wso2.carbon.jndi.internal.InMemoryInitialContextFactory") Context ctx = new InitialContext(env) SQSConnectionFactory sqsConnectionFactory = createSQSConnectionFactory() ctx.rebind("SQSConnectionFactory", sqsConnectionFactory) } SQSConnectionFactory createSQSConnectionFactory() { AWSCredentialsProvider credentialsProvider = null if (provider.equals("instance")) { credentialsProvider = new InstanceProfileCredentialsProvider(false) } else { credentialsProvider = new AWSStaticCredentialsProvider( new BasicAWSCredentials(accessKey, secretKey)) if (serialNumber != null) { credentialsProvider = getTemporaryCredentials(credentialsProvider) } } return new SQSConnectionFactory( new ProviderConfiguration(), AmazonSQSClientBuilder.standard() .withRegion(region) .withCredentials(credentialsProvider).build()) } AWSStaticCredentialsProvider getTemporaryCredentials(AWSCredentialsProvider credentialsProvider) { AWSSecurityTokenService sts_client = null try { sts_client = AWSSecurityTokenServiceClientBuilder.standard() .withRegion(region) .withCredentials(credentialsProvider).build() Credentials creds = sts_client.getSessionToken(new GetSessionTokenRequest() .withDurationSeconds(durationSeconds) .withSerialNumber(serialNumber) .withTokenCode(tokenCode)).getCredentials() return new AWSStaticCredentialsProvider( new BasicSessionCredentials( creds.getAccessKeyId(), creds.getSecretAccessKey(), creds.getSessionToken())) } finally { if (sts_client != null) { sts_client.shutdown() } } } |
SQSConnectionFactory
が作成され、SQSConnectionFactory という名前にバインドされます。JMS ConnectionFactory をルックアップするために、任意 のJNDI プロパティで初期コンテキストを org.wso2.carbon.jndi.internal.InMemoryInitialContextFactory
に設定し、接続ファクトリを SQSConnectionFactory
に設定します。
JMS ConnectionFactory は、URL に基づいて動的に作成されるのではなく、プログラムによって作成されるため、プロバイダー URL は使用されません。Virtualize Message Proxy など、一部の SOAtest および Virtualize インターフェースでは、プロバイダー URL フィールドが必要です。このような場合は、ダイアログに任意の空でない文字列を入力して、構成設定を受け入れます。
メッセージング クライアントを作成し、すでに定義されているキューの 1 つに対してメッセージを送受信することができます。また、メッセージ ID など、期待されるすべての JMS ヘッダー プロパティを確認できます。
以下の表は、スクリプトで使用する変数の一覧です。
| CLI、SDK、API にアクセスするためのアクセスキーの認証情報。 |
---|---|
serialNumber | 多要素認証 (MFA) が有効な場合、デバイスを一意に識別する番号。仮想 MFA デバイスの場合、シリアル番号は、AWS セキュリティ認証情報ページに表示されているデバイスの Amazon リソース名 (ARN) です。 |
tokenCode | Google 認証システムなどの MFA デバイスから返される値。 |
durationSeconds | 一時的な MFA 認証情報の有効期間を指定する値。 |
SQS JMS クライアントのメッセージ コンシューマーは、デフォルトで20秒という長いポーリング間隔を使用します。つまり、メッセージがそれより前に表示されたとしても、キューからメッセージを受信するのに最大 20 秒かかる可能性があります。ポーリング間隔はスクリプトで変更できます。例 (Groovy):
import com.amazon.sqs.javamessaging.SQSMessageConsumerPrefetch void setMessageConsumerWaitTime() { SQSMessageConsumerPrefetch.WAIT_TIME_SECONDS = 1 } |
対象 | Apache Active MQ |
---|---|
最低限必要な Jar | activemq-all-<VERSION>.jar (Maven Central からダウンロード) |
一般的なプロバイダー URL パターン | tcp://hostname:61616 |
ファクトリ クラス | JNDI Initial Context ファクトリ クラス デフォルトの接続ファクトリ JNDI 名 |
詳細 | http://activemq.apache.org/jndi-support.html |
対象 | Apache ActiveMQ Artemis |
---|---|
最低限必要な Jar | artemis-jms-client-all-<VERSION>.jar (Maven Central からダウンロード) |
一般的なプロバイダー URL パターン | tcp://hostname:61616
|
ファクトリ クラス | JNDI Initial Context ファクトリ クラス デフォルトの接続ファクトリ JNDI 名 |
詳細 | https://activemq.apache.org/components/artemis/documentation/latest/using-jms.html |
対象 | Apache Qpid |
---|---|
最低限必要な jar ファイル | Qpid 1.11.0 からの JMS 2.0 互換 jar (Apache からダウンロード)
|
一般的なプロバイダー URL パターン | JNDI プロパティ ファイルへのパス。ファイルは空でもかまいません。空でないファイルを指定すると、それらのプロパティは [プロパティ] タブで定義されている他の JNDI プロパティとマージされます。または、Windows を使用している場合は 例:
|
接続 URL JNDI プロパティ |
例:
詳細: https://qpid.apache.org/releases/qpid-jms-1.11.0/docs/index.html#connection-uri |
ファクトリ クラス | JNDI Initial Context ファクトリ クラス |
接続ファクトリ | 先ほど 例:
|
詳細 |
対象 | Azure Service Bus Standard Tier |
---|---|
最低限必要な jar ファイル | Qpid 1.11.0 からの JMS 2.0 互換 jar (Apache からダウンロード)
|
一般的なプロバイダー URL パターン | JNDI プロパティ ファイルへのパス。ファイルは空でもかまいません。空でないファイルを指定すると、それらのプロパティは [プロパティ] タブで定義されている他の JNDI プロパティとマージされます。または、Windows を使用している場合は 例:
|
接続 URL JNDI プロパティ |
例:
|
ファクトリ クラス |
|
接続ファクトリ | 先ほど 例:
|
ライセンスの制限 |
詳細: |
詳細 | https://learn.microsoft.com/azure/service-bus-messaging/service-bus-java-how-to-use-jms-api-amqp |
対象 | Azure Service Bus Premium Tier |
---|---|
最低限必要な jar ファイル | azure-servicebus-jms-<VERSION>.jar (Maven Central からダウンロード) Qpid 1.11.0 からの JMS 2.0 互換 jar (Apache からダウンロード)
org.wso2.carbon.jndi-<VERSION>.jar (WSO2 Maven リポジトリ からダウンロード) |
ファクトリ クラス |
|
接続ファクトリ |
「JMS ConnectionFactory オブジェクトの作成」を参照してください。 |
ライセンスの制限 |
|
詳細 | https://github.com/Azure/azure-servicebus-jms |
まず、Azure Service Bus 名前空間の「接続文字列」が必要です: Endpoint=sb://<NAMESPACE>.servicebus.windows.net/;SharedAccessKeyName=<SAS_POLICY_NAME>;SharedAccessKey=<SAS_POLICY_KEY>
以下の Groovy スクリプトは、JMS ConnectionFactory
オブジェクトを作成し、それをインメモリの InitialContext
にバインドするために提供されています (bindConnectionFactory
メソッド)。SOAtest または Virtualize の起動ごとに 1 回、このスクリプトを実行します。オブジェクトを必要とする各 .tst に対して、拡張ツール (SOAtest .tst や Virtualize .pvn のセットアップ テストなど) を使用してスクリプトを実行したり、環境に適した方法でスクリプトの実行を自動化するより洗練されたプロセスを実装したりすることができます。
import com.microsoft.azure.servicebus.jms.ConnectionStringBuilder import com.microsoft.azure.servicebus.jms.ServiceBusJmsConnectionFactory import com.microsoft.azure.servicebus.jms.ServiceBusJmsConnectionFactorySettings; import java.util.Properties import javax.naming.Context import javax.naming.InitialContext void bindConnectionFactory() { Properties env = new Properties() env.put(Context.INITIAL_CONTEXT_FACTORY, "org.wso2.carbon.jndi.internal.InMemoryInitialContextFactory") Context ctx = new InitialContext(env) ConnectionStringBuilder connectionStringBuilder = new ConnectionStringBuilder("Endpoint=sb://<NAMESPACE>.servicebus.windows.net/;SharedAccessKeyName=<SAS_POLICY_NAME>;SharedAccessKey=<SAS_POLICY_KEY>") ServiceBusJmsConnectionFactorySettings connectionFactorySettings = new ServiceBusJmsConnectionFactorySettings(); connectionFactorySettings.setShouldReconnect(false); ServiceBusJmsConnectionFactory sbConnectionFactory = new ServiceBusJmsConnectionFactory(connectionStringBuilder, connectionFactorySettings) ctx.rebind("ServiceBusJmsConnectionFactory", sbConnectionFactory) } |
対象 | GlassFish |
---|---|
最低限必要な jar ファイル | GlassFish 3 - - gf-client.jar 注意: gf-client.jar は、インストールした Glass-Fish 3 からの数十の他の jar を参照します。参照された jar の検索、読み込みを可能にするために、 GlassFish インストール ディレクトリから gf-client.jar を参照する必要があります。GlassFish は http://glassfish.java.net/ からダウンロードできます。 GlassFish 2 - - appserv-admin.jar |
一般的なプロバイダー URL パターン | iiop://hostname:3700 |
ファクトリ クラス | JNDI Initial Context ファクトリ クラス 注意: GlassFish は、"com.sun.appserv.naming.S1ASCtxFactory" と呼ばれるもう1つの JNDI Initial Context ファクトリ クラスを持っています。このクラスはパフォーマンスで劣るため、使用すべきではありません。GlassFish 2 や GlassFish 3 の両方で利用可能なクラスの代わりに、上記の SerialInitContextFactory クラスを使用してください。 |
注釈 | GlassFish クライアントや GlassFish サーバーは、相互に DNS の逆引きを行います。サーバーがクライアントのホスト名を認識しない場合は、サーバー上の hosts ファイルにクライアントのホスト名と IP アドレスを追加することができます。クライアントがサーバーのホスト名を認識しない場合は、クライアント上の hosts ファイルにサーバーのホスト名と IP アドレスを追加することができます。hosts ファイルは、通常 /etc/hosts (Unix) または %System-Root%\system32\drivers\etc\hosts (Windows) にあります。 |
詳細 | http://glassfish.java.net/ |
対象 | WAS Default JMS プロバイダー。Parasoft は、WAS 7.0 以降で提供され、WAS 6.0.2 以降と相互運用が可能な、 IBM の JMS シンクライアントの使用を推奨しています。 |
---|---|
最低限必要な JAR |
|
一般的なプロバイダー URL パターン | iiop://hostname:2809/ |
ファクトリ クラス | JNDI Initial Context ファクトリ クラス |
詳細 | WebSphere Application Server Network Deployment, バージョン 7.0 ドキュメント |
WAS 7.0 以降を持っていない場合 WAS 7 インストールを使用していない (またはアクセスできない) 場合、 WAS 6.0.2 以降でも動作する IBM Client for JMS をダウンロードし、インストールします。
|
対象 | IBM MQ JMS プロバイダー | |
---|---|---|
最低限必要な jar ファイル |
| |
一般的なプロバイダー URL パターン | .bindings ファイルを含むディレクトリ パス。 例:
IBM MQ JMSAdmin を実行して JNDI .bindings ファイルに JMS 管理オブジェクトを設定する詳細な例 IBM MQ Explorer を実行して JNDI .bindings ファイルに JMS 管理オブジェクトを設定する詳細な例 | |
ファクトリ クラス | IBM MQ JNDI Initial Context ファクトリ クラス
| |
接続ファクトリ | .bindings ファイルで定義されている ConnectionFactory 名。 | |
JNDI を伴わない JMS メッセージング | プロパティ タブで次の設定を定義します。
| |
追加情報 | IBM の JNDI プロバイダーはユーザーのログイン名を送信することによって、 IBM MQ サーバーで自身を認証します。これは一般的に Virtualize を起動する前にワークステーションにログインするときに提供されたユーザー名です。 MQ サーバーがユーザー名を認識しない場合、ツールは次のエラーを返します: "javax.jms.JMSSecurityException: MQJMS2013: invalid security authentication supplied for MQQueueManager". このエラーは、 IBM MQ サーバー マシンに Windows ユーザーのアカウントを追加することで解決できます。 このアカウントは、 1)SOAtest および Virtualize を実行しているローカル マシン上のアカウントと同じユーザー名、および 2) IBM MQ Administration グループ "mqm" のメンバー、である必要があります。あるいは、 Java システム プロパティの user.name の値を変更することによって異なるユーザー名を使用します。 このシステム プロパティは、 Extension Tool を使って Sun の Java API の java.lang.System.setProperty() メソッドを呼び出すことで、テスト スイートの実行中に Java システム プロパティを変更することもできます。 | |
詳細 |
対象 | Boss JMS: 次の jar ファイルのリストは JBoss 5.0 に基づいています。 |
---|---|
最低限必要な jar ファイル |
|
一般的なプロバイダー URL パターン | hostname |
ファクトリ クラス | JNDI Initial Context ファクトリ クラス |
注意: OpenMQ はそれ自身で実行することも、 "Glassfish MQ" と呼ばれる Glassfish App Server の一部として実行することも可能です。Glassfish から OpenMQ を使用している場合は、 GlassFish セクションを参照してください。
対象 | OpenMQ Server |
---|---|
最低限必要な jar ファイル |
|
一般的なプロバイダー URL パターン | hostname |
ファクトリ クラス | JNDI Initial Context ファクトリ クラス |
詳細 | http://mq.java.net |
対象 | Oracle Advanced Queuing (AQ) |
---|---|
最低限必要な jar ファイル | Oracle Database に含まれる以下の Jar: または Oracle Weblogic Server に含まれる以下の Jar: |
プロバイダー URL | このフィールドは空のままにします。 |
JNDI 初期コンテキスト ファクトリ クラス | oracle.jms.AQjmsInitialContextFactory |
接続ファクトリ JNDI 名 | 以下のいずれか: |
必須 JNDI プロパティ |
|
キュー/トピック名 | キュー名の前に Queues/ を付加し、トピック名の前に Topics/ を負荷します。例: |
追加情報 | 10g などの古いバージョンの Oracle データベースに含まれる aqapi.jar には初期コンテキスト ファクトリ クラスがない可能性があります。Oracle 11g 以降の jar を使用してください。最新の Oracle Database Express Edition (XE) は、oracle.com からダウンロードできます。 Oracle Database Express Edition 11g Release 2 |
詳細 | Interoperating with Oracle AQ JMS |
対象 | Oracle BEA WebLogic |
---|---|
必要最低限なJAR (シンクライアント) * |
注意: 追加の Jar が必要となる可能性があります。多くの Jar を検索して追加する必要から解放されるので、フルクライアントの使用を推奨します。 |
必要最低限な JAR (フルクライアント) * | "Creating a wlfullclient5.jar for JDK 1.5 client applications" の手順に記載のように、単一の wlfullclient5.jar をビルドします。 |
一般的なプロバイダー URL パターン | シンクライアント: フルクライアント: |
ファクトリ クラス | JNDI Initial Context ファクトリ クラス: |
詳細 | http://docs.oracle.com/cd/E12840_01/wls/docs103/client/jarbuilder.html |
対象 | Progress Sonic MQ/ESB |
---|---|
最低限必要な jar ファイル | <SONIC_INSTALL_DIR>/MQ7.x/lib 配下にあります。 注意: SonicMQ の broker.jar と TIBCO の tibcojms.jar を一緒に使用することはできません。 |
一般的なプロバイダー URL パターン | tcp://hostname:2506 |
ファクトリ クラス | JNDI Initial Context ファクトリ クラス |
詳細 | SonicMQ Application Programming Guide の Appendix A (Using the Sonic JNDI SPI) を参照してください。その他の関連するセクションについても言及しています。 |
対象 | RabbitMQ |
---|---|
最低限必要な jar ファイル | Maven's Central Repository からクライアント ライブラリをダウンロードしてください。 rabbitmq-jms-<VERSION>.jar |
.bindings ファイルの例 | #This file is used by the JNDI FSContext. #Wed Jan 31 15:36:15 PST 2018 ConnectionFactory/FactoryName=com.rabbitmq.jms.admin.RMQObjectFactory ConnectionFactory/ClassName=javax.jms.ConnectionFactory ConnectionFactory/RefAddr/0/Type=name ConnectionFactory/RefAddr/0/Encoding=String ConnectionFactory/RefAddr/0/Content=jms/ConnectionFactory ConnectionFactory/RefAddr/1/Type=type ConnectionFactory/RefAddr/1/Encoding=String ConnectionFactory/RefAddr/1/Content=javax.jms.ConnectionFactory ConnectionFactory/RefAddr/2/Type=factory ConnectionFactory/RefAddr/2/Encoding=String ConnectionFactory/RefAddr/2/Content=com.rabbitmq.jms.admin.RMQObjectFactory ConnectionFactory/RefAddr/3/Type=host ConnectionFactory/RefAddr/3/Encoding=String ConnectionFactory/RefAddr/3/Content=host.company.com ConnectionFactory/RefAddr/4/Type=port ConnectionFactory/RefAddr/4/Encoding=String ConnectionFactory/RefAddr/4/Content=5672 |
一般的なプロバイダー URL パターン | .bindings ファイルを含むディレクトリ パス。
|
初期コンテキスト | com.sun.jndi.fscontext.RefFSContextFactory |
接続ファクトリ | JNDI Initial Context ファクトリ クラス |
対象 | Solace JMS |
---|---|
最低限必要な jar ファイル | commons-lang-<VERSION>.jar sol-common-<VERSION>.jar sol-jcsmp-<VERSION>.jar sol-jms-<VERSION>.jar |
一般的なプロバイダー URL パターン | smf://<HOST>:<PORT> |
ファクトリ クラス | JNDI Initial Context ファクトリ クラス 接続ファクトリのルックアップにアクセスするために追加の JNDI プロパティ |
対象 | Sun MQ Server |
---|---|
最低限必要な jar ファイル |
|
一般的なプロバイダー URL パターン | hostname |
ファクトリ クラス | JNDI Initial Context ファクトリ クラス |
詳細 | Sun Java System Message Queue Administration 3.x/4.x Guide の Quick-Start Tutorial セクションを参照してください。このドキュメントは http://docs.sun.com/app/docs/prod/message?l=en#hic からダウンロードできます。ドキュメント内で、 [Software] > [Application & Integration Services] > [Message Queue] に移動します。 |
対象 | TIBCO EMS |
---|---|
最低限必要な JAR |
注意: SonicMQ の broker.jar と TIBCO の tibcojms.jar を一緒に使用することはできません。 |
一般的なプロバイダー URL パターン | tcp://hostname:7222 hostname (if using default port numbers) |
ファクトリ クラス | JNDI Initial Context ファクトリ クラス |
SSL の構成 | 次の JNDI プロパティを構成する必要があります。 双方向 SSL では、次の追加プロパティも構成する必要があります。 |
追加情報 | Tibco EMS への接続にユーザー名とパスワードが必要なときはいつでも、次の JNDI プロパティを構成する必要があります。 |
詳細 | TIBCO Enterprise Message Service ユーザーズ ガイドの section 9: Developing an EMS Client Application > Programmer Checklist を参照してください。 |
SOAtest と Virtualize は Sun JNDI 実装をバンドルしています。Sun JNDI 実装 は、 com.sun.jndi.fscontext.RefFSContextFactory
を使用して、ローカル ハード ドライブ上のディレクトリおよびファイルに初期コンテキストとして JNDI バインディングを、およびユーザー定義のプロバイダー URL (ディレクトリ ) C:\JNDIRoot
などを格納しています。
Sun 実装を使用しているとき、 fscontext
が正常に ConnectionFactory および Queue か Topic オブジェクトをルックアップできるような .binding ファイルで C:\JNDIRoot
ディレクトリに データ投入することが必要です。Parasoft は SOAtest/Virtualize インストール ディレクトリ (/examples/jms/JndiFileProviderTest.java) に .binding ファイルを作成するサンプルを保持しています。
その他の JMS プロバイダーの場合、ご使用のシステムと通信する JMS クライアントを構成する方法についてはベンダーのガイドを参照してください。