この章の内容は次のとおりです。
WebLogicシンT3クライアントのjar (wlthint3client.jar
)は、wlfullclient.jar
およびwlclient.jar
(IIOP)リモート・クライアントのjarの軽量かつ高パフォーマンス版です。シンT3クライアントは、サイズを最小限に抑えながら、クライアントでの使用に適した豊富なAPI群へのアクセスを実現します。その名前が示すように、WebLogic T3プロトコルを使用し、IIOPプロトコルを使用するwlclient.jarに勝る大幅なパフォーマンス向上をもたらします。
シンT3クライアントは、リモート・クライアントのほとんどのユース・ケースで推奨される方式です。シンT3クライアントには、次に示すような制限があります。これらの数少ないユース・ケースでは、フル・クライアントまたはIIOPシン・クライアントを使用する必要があります。
シンT3クライアントは、スタンドアロン・アプリケーションで使用でき、WebLogic以外の外部サーバーで実行するアプリケーションで使用できるように設計されています。一般的なユース・ケースの1つは、WebLogic JMS宛先との統合です。
このリリースでは、次の機能をサポートしています。
Oracle WebLogicのRemote Method Invocation (RMI)用のT3/T3Sプロトコル(RMI over HTTP (HTTPトンネリング)およびをRMI over HTTPS (SSLを介したHTTPトンネリング)含む)。WebLogic T3通信の詳細は、『Oracle WebLogic Server RMIアプリケーションの開発』のT3プロトコルを実装したWebLogic RMIの使用に関する項を参照してください。
WebLogic Serverで使用可能なJMS、JMX、JNDI、およびEJBの各リソースへのアクセス。
wlsaft3client.jar
を使用したWebLogicストア・アンド・フォワード(SAF)サービス。
JTAを使用したトランザクションの開始と終了(ロールバックまたはコミット)。
WebLogicクライアントJMS機能。順序単位、作業ユニット、メッセージ圧縮、XMLメッセージ、JMS自動クライアント再接続、Destination Availability Helper APIなどがあります。
クライアント側のクラスタリングを使用すると、クライアント・アプリケーションはフェイルオーバーやWebLogic Serverインスタンスのロード・バランシングに関与できます。『Oracle WebLogic Server RMIアプリケーションの開発』のクラスタ化されたRMIアプリケーションに関する項を参照してください。
JAAS認証とJSSE SSL。「セキュリティ」を参照してください。
ネットワーク・クラスのロード。デフォルトでは、シンT3クライアントのネットワーク・クラスのロードは無効化されています。次のシステム・プロパティを使用して、ネットワークのクラスロードを有効化します。
-Dweblogic.rmi.networkclassloadingenabled=true
このリリースでは、次の機能はサポートしていません。
Mbeanベースのユーティリティ(JMSヘルパー、JMSモジュール・ヘルパーなど)、およびJMSマルチキャストはサポートされていません。MbeanベースのヘルパーのかわりにJMX呼出しを使用できます。
WebLogic JDBC拡張をはじめとするJDBCリソース。
クライアントでのWebLogic RMIサーバーの実行。
シンT3クライアントでは、ホストへの接続にJDKクラスを使用します(デュアル・スタック・マシンへの接続を含む)。ホスト上に複数のアドレスが存在する場合、ホストが正しく構成されていないと、間違ったアドレスへの接続が試行され、接続に失敗する可能性があります。
このリリースのWebLogicシンT3クライアントは、相互運用性を次のようにサポートしています。
WebLogicシンT3クライアントにおける旧WebLogicリリースとの通信のサポートについては、『Oracle WebLogic Serverの理解』のプロトコルの互換性に関する項を参照してください。
クライアントのセキュリティに関する一般情報は、次の項を参照してください。
『Oracle WebLogic Serverセキュリティの理解』のJava Secure Socket Extension (JSSE)に関する項。
『Oracle WebLogic Serverセキュリティの理解』のJava Authentication and Authorization Services (JAAS)に関する項。
『WebLogicセキュリティ・サービスによるアプリケーションの開発』のJavaクライアントでのSSL認証の使用に関する説明。
『WebLogicセキュリティ・サービスによるアプリケーションの開発』のJavaクライアントにおけるJAAS認証の使用に関する項。
基本的なWebLogicシンT3クライアントを作成するには、次の手順に従います。
リモート・オブジェクトへの参照を取得します。
t3://ip address:port
またはt3s://ip address:port
という形式のT3 URLを使用して、サービスをホストするサーバーの初期コンテキストを取得します。
初期コンテキストを使用してルックアップを実行することで、サービス・オブジェクトのインスタンスを取得します。このインスタンスは、ローカル・オブジェクト参照と同じように使用できます。
リモート・オブジェクト・メソッドを呼び出します。
クライアントのクラスパスにwlthint3client.jar
を追加します。このファイルは、WebLogic ServerがインストールされているWL_HOME
\server\lib
ディレクトリにあります。
注意:
複数のクライアントを組み合せて拡張機能セットを作成することはサポートされていません。wlfullclient.jar
、wlthint3client.jar
またはwlclient.jar
を、WebLogic ServerのクラスパスやWebLogicフル・インストールのweblogic.jar
ファイルを参照するクラスパスに追加しないでください。追加した場合の動作は不明です。WebLogic Serverアプリケーションは、すでにWebLogicクライアントの機能をすべて利用できます。
例3-1に、基本的なWebLogicシンT3クライアントのサンプル・コードを示します。
例3-1 WebLogic初期コンテキストの作成および使用
Hashtable env = new Hashtable(); env.put("java.naming.factory.initial", "weblogic.jndi.WLInitialContextFactory"); env.put("java.naming.provider.url","t3://host:7001"); env.put("java.naming.security.principal","user"); env.put("java.naming.security.credentials","password"); Context ctx = new InitialContext(env); try { Object homeObject = context.lookup("EmployeeBean"); //use the EmployeeBean } catch (NamingException e) { // a failure occurred } finally { try {ctx.close();} catch (Exception e) { // a failure occurred } }
外部サーバーにホストされているアプリケーションは、wlthint3client.jar
を使用すると、WebLogic Serverインスタンスのリモート・クライアントとして機能できます。JMS、サーブレット、EJB、起動クラスなどのリモート・サービスへのアクセスを可能にするには、必要なアプリケーション・コードをwlthint3client.jar
とともにアプリケーション・サーバーにデプロイします。
JNDIを使用して外部アプリケーション・サーバーからWebLogic Serverリソースに接続し、アクセスするには、ガイドラインとして次の手順に従ってください。
次の項では、外部サーバーと相互運用する際に考慮すべき事項について概説します。
wlthint3client.jar
は、Java EEの標準的な方法でデプロイできます。ただし、使用するデプロイメント方法を決める際には、クライアントのサイズ、クラスのロード、パフォーマンス、およびコードの不整合が発生するリスクへの許容度を考慮する必要があります。例:
wlthint3client.jar
をサーブレットなどのアプリケーションに埋め込んだ場合、アプリケーションのサイズはwlthint3client.jar
のサイズだけ増えますが、コードの不整合が発生するリスクはアプリケーションの範囲に限定されます。
wlthint3client.jar
をlibディレクトリにデプロイした場合、アプリケーションのサイズに影響はありませんが、コードの不整合が発生するリスクは外部サーバー・コンテナ全体に及びます。
OC4J内で実行されているアプリケーションのうち、WebLogic Serverリソースを必要とするもののクラスパスにwlthint3client.jar
ファイルを追加します。Oracle Containers for J2EE開発者ガイドでOC4J共有ライブラリの共有ライブラリのインストールと公開を参照してください。
次の項では、WebLogic Serverリソースのリモート・クライアントとして機能するOracle OC4Jアプリケーション・サーバーと相互運用する際の重要な考慮事項について概説します。
トランザクションの伝播: サーバー間でのトランザクション・コンテキスト・オブジェクトの伝播はサポートされていません。
セキュリティ・コンテキストの伝播: サーバー間でのセキュリティ/アイデンティティ情報の伝播はサポートされていません。
OC4Jの詳細は、『Java EEアップグレード・ガイド』のOC4Jユーザー用Oracle WebLogic Serverの紹介に関する項を参照してください。
次の項では、JNDIを使用してOC4JからWebLogic Serverリソースに接続およびアクセスする方法について、例をあげて説明します。
クライアント・アプリケーションで、WebLogic初期コンテキストを作成してから、そのコンテキストを使用してリソースをルックアップし、使用します。詳細は、例3-1を参照してください。
OC4J URLコンテキスト・ファクトリ・プロパティを設定します。Oracle Containers for J2EEサービス・ガイドのサーバー側URLコンテキスト・ファクトリの有効化またはリモート・クライアントURLコンテキスト・ファクトリの有効化を参照してください。
クライアントのクラスパスにwlthint3client.jar
を追加します。
JARファイルをOC4J共有ライブラリとして追加します。Oracle Containers for J2EEデプロイメント・ガイドの共有ライブラリの作成と管理を参照してください。
クライアントを起動またはデプロイします。
ContextScanningResourceProvider
リソース・プロバイダを使用してWebLogicサーバーのJMS宛先にアクセスする際には、resource.names
プロパティを使用して、外部サーバーが要求するJMSリソースのJNDI名のカンマ区切りリストを明示的に設定する必要があります。サードパーティのJMS宛先にアクセスする場合のContextScanningResourceProvider
リソース・プロバイダの使用方法の詳細は、『Oracle Containers for J2EEサービス・ガイド』のOracle Enterprise Messaging Serviceの使用を参照してください。
注意:
resource.names
プロパティの構文では、リスト内のカンマと次のJNDI名との間の空白文字はサポートされていません。
次の例は、orion-application.xml
ファイルにresource.names
プロパティを設定する方法を示しています。resource.names
プロパティは、TopicOne
,QueueOne
,TopicTwo
に設定されます。この値は、ContextScanningResourceProvider
リソース・プロバイダが外部WebLogic Serverインスタンスから参照するJMS宛先のJNDI名のリストを表しています。
例3-2 resource.namesプロパティの設定
<resource-provider class="com.evermind.server.deployment.ContextScanningResourceProvider" name="WebLogicRP"> <property name="java.naming.factory.initial" value="weblogic.jndi.WLInitialContextFactory"/> <property name="java.naming.provider.url" value="t3://localhost:7001/"/> <property name="java.naming.security.principal" value="user_name"/> <property name="java.naming.security.credentials" value="user_password"/> ... <!-- configure the set of known JMS destinations that are required for this application --> <property name="resource.names" value="TopicOne,QueueOne,TopicTwo"/> ... </resource-provider>