このセクションは、一般的な JMS プロバイダー用に SOAtest および Virtualize を構成するためのリファレンスを提供します。
このセクションの内容:
必要な JAR ファイルの追加
以下の操作を行って、SOAtest および Virtualize のクラスパスに必要な Jar ファイル (下の表に記載) を追加します。
- [Parasoft] メニューの [設定] をクリックします。
- [Parasoft] > [システム プロパティ] ページを開きます。
- [Jar の追加] ボタンをクリックし、必要な Jar ファイルを選択して追加します。
JNDI 認証
JMS システム (JNDI アクセスに認証を要求するように設定された) への接続にユーザー名とパスワードが要求される場合はいつでも、次の JNDI プロパティを設定する必要があります。
- java.naming.security.principal=<username>
- java.naming.security.credentials=<password>
Amazon Simple Queue Service (SQS)
対象 | JNDI ルックアップによる JMS ConnectionFactory の構築が難しい Amazon Simple Queue Service (SQS) およびその他の JMS プロバイダー。 |
---|---|
最低限必要な JAR | Amazon SQS java client JAR:
Apache httpclient dependencies:
WSO2 carbon-jndi JAR: org.wso2.carbon.jndi-<version>.jar |
ファクトリ クラス | WSO2 carbon-jndi プロジェクトの InMemoryInitialContextFactoryCreating the JMS ConnectionFactory Object を参照してください。 |
AWS との接続 | AWS への接続には IAM ユーザー ロールを使用します。詳細については以下の Amazon のドキュメントを参照してください。 |
詳細 | https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/getting-started.html |
JMS ConnectionFactory オブジェクトの作成
以下の Groovy スクリプトは、JMS ConnectionFactory オブジェクトを作成し、それをインメモリの InitialContext にバインドするために提供されています (bindConnectionFactory
メソッド)。SOAtest または Virtualize の起動ごとに 1 回、このスクリプトを実行します。オブジェクトを必要とする各 .tst に対して、拡張ツール (SOAtest .tst や Virtualize .pvn のセットアップ テストなど) を使用してスクリプトを実行したり、環境に適した方法でスクリプトの実行を自動化するより洗練されたプロセスを実装したりすることができます。
このスクリプトは、AWS との認証に 2 つの方法をサポートしています。SOAtest/Virtualize サーバーが AWS 環境内にデプロイされている場合、AWS はインスタンス プロバイダー フローを使用した認証を推奨します。また、AWS との認証には、リージョン、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 認証情報の有効期間を指定する値。 |
Apache ActiveMQ
対象 | Apache Active MQ |
---|---|
最低限必要な Jar | ActiveMQ インストール ディレクトリ配下にあります。 - activemq-all-[version].jar |
一般的なプロバイダー URL パターン | tcp://hostname:61616 |
ファクトリ クラス | JNDI Initial Context ファクトリ クラス デフォルトの接続ファクトリ JNDI 名 |
詳細 | http://activemq.apache.org/jndi-support.html |
Apache Qpid
対象 | Apache Qpid |
---|---|
最低限必要な JAR | http://qpid.apache.org/download.htmlで取得した qpid-java-client-{ver}.tar.gz にあります。 Qpid のバージョンによって Jar が異なります。Qpid 0.8 の Jar は次を含みます。
|
接続 URL JNDI プロパティ | connectionfactory.<jndiname> For example: connectionfactory.local = amqp://user:password@clientid/testpath?brokerlist='tcp://localhost:5672' |
ファクトリ クラス | JNDI Initial Context ファクトリ クラス |
詳細 | https://cwiki.apache.org/qpid/how-to-use-jndi.html |
GlassFish MQ
対象 | GlassFish |
---|---|
最低限必要な JAR | GlassFish 3 - [GlassFish install directory]/glassfish/lib 配下にあります。- gf-client.jar 注意: gf-client.jar は、インストールした Glass-Fish 3 からの数十の他の Jar を参照します。参照された Jar の検索、読み込みを可能にするために、 GlassFish インストール ディレクトリから gf-client.jar を参照する必要があります。 GlassFish は http://glassfish.java.net/ からダウンロードできます。 GlassFish 2 - [GlassFish install directory]/lib 配下にあります。 - appserv-admin.jar |
一般的なプロバイダー URL パターン | iiop://yourhostname: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/ |
IBM WebSphere Application Server (WAS)
対象 | WAS Default JMS プロバイダー。Parasoft は、WAS 7.0 以降で提供され、WAS 6.0.2 以降と相互運用が可能な、 IBM の JMS シンクライアントの使用を推奨しています。 |
---|---|
最低限必要な JAR | [WAS installation dir]/runtimes 配下にあります。 |
一般的なプロバイダー URL パターン | iiop://yourhostname:2809/ |
ファクトリ クラス | JNDI Initial Context ファクトリ クラス |
詳細 | WebSphere Application Server Network Deployment, バージョン 7.0 ドキュメント |
WAS 7.0 以降を持っていない場合
WAS 7 インストールを使用していない (またはアクセスできない) 場合、 WAS 6.0.2 以降でも動作する IBM Client for JMS をダウンロードし、インストールします。
- http://www-01.ibm.com/support/docview.wss?uid=swg24012804 から JMS Client のインストーラー Jar をダウインロードします。
- ダウンロード ページの手順に従って、 Sun JRE 用の JMS と JNDI の両方の Jar をインストールします。クライアント Jar をインストールするコマンドは、以下のようになります。
"java -jar sibc_oeminst-o0902.06.jar jms_jndi_sun C:\ibmjms"
クライアント Jar は lib フォルダーは以下にインストールされます。 - JNDI プロパティ
com.ibm.CORBA.ORBInit=com.ibm.ws.sib.client.ORB
を追加します。- 簡単にするために、この JNDI プロパティは JRE lib フォルダーの jndi.properties ファイルでグローバルに設定できます。
- この製品のスタンドアロン ビルドでは、 JRE lib フォルダーは <INSTALL>/plugins/com.parasoft.ptest.jdk.eclipse.core.web.<OS>.<ARCH>_<VERSION>/jdk/jre/lib にあります。
- この JNDI プロパティは、 WAS 7 の runtimes フォルダーから Jar を使用するときには必要ありません。
IBM WebSphere MQ (MQ Series)
対象 | WebSphere MQ JMS プロバイダー |
---|---|
最低限必要な JAR | MQ 9 用次の Jar が [WebSphere MQ installation directory]/java/lib 配下にあります。
MQ 8 用次の Jar が [WebSphere MQ installation directory]/java/lib 配下にあります。
MQ 7.0 用次の Jar が [WebSphere MQ installation directory]/java/lib 配下にあります。
以下の Jar もダウンロードする必要があります。
MQ 6.0 用次の Jar が [WebSphere MQ installation directory]/java/lib 配下にあります。
以下の Jar もダウンロードする必要があります。
MQ クライアントのダウンロード[WebSphere MQ installation directory]/java/lib の Jar は、MQ クライアントにも含まれています。MQ 6 Client は、現在では IBM から入手できません。MQ 7 Client は次からダウンロードできます: http://www-01.ibm.com/support/docview.wss?uid=swg24019253 |
一般的なプロバイダー URL パターン | yourhostname:1414/SYSTEM.DEF.SVRCONN |
ファクトリ クラス | WebSphere MQ JNDI Initial Context ファクトリ クラス - com.ibm.mq.jms.context.WMQInitialContextFactory |
SSL の構成 | WebSphere JMS クライアントは初期コンテキストで適切なプロパティを設定することで SSL 接続を実現できます。 WebSphere MQ と WebSphere JMS 両方のクライアントは SSL の接続性に同じプロパティを設定します。 |
JNDI を伴わない JMS メッセージング | プロパティ タブで次の設定を定義します。 import com.ibm.mq.jms.*; ... MQConnectionFactory cf = new MQConnectionFactory(); cf.setHostName(hostname); cf.setPort(port); cf.setQueueManager(queuemanager); cf.setChannel(channel); cf.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP); cf.setFailIfQuiesce(JMSC.MQJMS_FIQ_YES); cf.setUseConnectionPooling(true); |
追加情報 | IBM の JNDI プロバイダーはユーザーのログイン名を送信することによって、 Websphere MQ サーバーで自身を認証します。これは一般的に Virtualize を起動する前にワークステーションにログインするときに提供されたユーザー名です。 MQ サーバーがユーザー名を認識しない場合、ツールは次のエラーを返します: "javax.jms.JMSSecurityException: MQJMS2013: invalid security authentication supplied for MQQueueManager". このエラーは、 Websphere MQ サーバー マシンに Windows ユーザーのアカウントを追加することで解決できます。このアカウントは、 1)SOAtest および Virtualizeを実行しているローカル マシン上のアカウントと同じユーザー名、および 2) IBM WebSphere MQ Administration グループ "mqm" のメンバー、である必要があります。 あるいは、 Java システム プロパティの user.name の値を変更することによって異なるユーザー名を使用します。このシステム プロパティは、SOAtest および Virtualizeを Extension Tool を使って Sun の Java API の java.lang.System.setProperty() メソッドを呼び出すことで、テスト スイートの実行中に Java システム プロパティを変更することもできます。 このエラーに関する詳細については、http://www.mqseries.net/phpBB/view-topic.php?t=40640 を参照してください。 |
詳細 | http://www-01.ibm.com/software/integration/wmq/library/ http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzaw.doc/jm10320_.htm |
JBoss JMS
対象 | Boss JMS; 次の Jar リストは JBoss 5.0 に基づいています。 |
---|---|
最低限必要な JAR | [JBoss install dir]/client 配下にあります。 |
一般的なプロバイダー URL パターン | yourhostname |
ファクトリ クラス | JNDI Initial Context ファクトリ クラス |
Open Message Queue (OpenMQ)
注意: OpenMQ はそれ自身で実行することも、 "Glassfish MQ" と呼ばれる Glassfish App Server の一部として実行することも可能です。Glassfish から OpenMQ を使用している場合は、 GlassFish セクションを参照してください。
対象 | OpenMQ Server |
---|---|
最低限必要な JAR | [OpenMQ install dir]/mq/lib |
一般的なプロバイダー URL パターン | yourhostname |
ファクトリ クラス | JNDI Initial Context ファクトリ クラス |
詳細 | http://mq.java.net |
Oracle Advanced Queuing (AQ)
対象 | Oracle Advanced Queuing (AQ) |
---|---|
最低限必要な JAR | Oracle Database に含まれる以下の Jar: または Oracle Weblogic Server に含まれる以下の Jar: |
プロバイダー URL | このフィールドは空のままにします。 |
JNDI 初期コンテキスト ファクトリ クラス | oracle.jms.AQjmsInitialContextFactory |
接続ファクトリ JNDI 名 | 以下のいずれか: |
必須 JNDI プロパティ | java.naming.security.principal=<username> |
キュー/トピック名 | キュー名の前に 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
対象 | Oracle BEA WebLogic |
---|---|
必要最低限なJAR (シンクライアント) * | [weblogic home]/wlserver_x/server/lib 配下にあります。 注意: 追加の 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
対象 | Progress Sonic MQ/ESB |
---|---|
最低限必要な JAR | [sonic install dir]/MQ7.x/lib 配下にあります。 注意: SonicMQ の broker.jar と TIBCO の tibcojms.jar を一緒に使用することはできません。 |
一般的なプロバイダー URL パターン | tcp://yourhostname:2506 |
ファクトリ クラス | JNDI Initial Context ファクトリ クラス |
詳細 | SonicMQ Application Programming Guide の Appendix A (Using the Sonic JNDI SPI) を参照してください。その他の関連するセクションについても言及しています。 |
RabbitMQ
対象 | 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 ファイルを含むディレクトリ パス。 file://C:/JNDI/rabbitMQ/ |
初期コンテキスト | com.sun.jndi.fscontext.RefFSContextFactory |
接続ファクトリ | JNDI Initial Context ファクトリ クラス |
Solace JMS
対象 | 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 プロパティ Solace_JMS_VPN=myvpn を設定する必要があります。デフォルトの VPN 名はありません。 |
Sun Java System Message Queue (Sun MQ)
対象 | Sun MQ Server |
---|---|
最低限必要な JAR | [Sun MQ install dir]Sun/MessageQueue/mq/lib 配下にあります。 |
一般的なプロバイダー URL パターン | yourhostname |
ファクトリ クラス | 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
対象 | TIBCO EMS |
---|---|
最低限必要な JAR | [TIBCO install dir]/ems/clients/java 注意: SonicMQ の broker.jar と TIBCO の tibcojms.jar を一緒に使用することはできません。 |
一般的なプロバイダー URL パターン | tcp://yourhostname:7222 yourhostname (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 を参照してください。 |
Sun JMS
SOAtest と Virtualize は Sun JNDI 実装をバンドルしています。Sun JNDI 実装 は、 com.sun.jndi.fscontext.RefFSContextFactory を使用して、ローカル ハード ドライブ上のディレクトリおよびファイルに初期コンテキストとして JNDI バインディングを、およびユーザー定義のプロバイダー URL (ディレクトリ ) “C:\JNDIRoot” などを格納しています。
Sun 実装を使用しているとき、 fscontext が正常に ConnectionFactory および Queue か Topic オブジェクトをルックアップできるような .binding ファイルで “C:\JNDIRoot”ディレクトリに データ投入することが必要です。Parasoft は Virtualize インストール ディレクトリ (/examples/jms/JndiFileProviderTest.java) に .binding ファイルを作成するサンプルを保持しています。
その他の JMS プロバイダー
その他の JMS プロバイダーの場合、ご使用のシステムと通信する JMS クライアントを構成する方法についてはベンダーのガイドを参照してください。