3 WebLogicフル・クライアントの開発(非推奨)
ノート:
WebLogicフル・クライアントwlfullclient.jar
は、WebLogic Server 12.1.3から非推奨となっており、将来のリリースでは削除される可能性があります。ご使用の環境に応じて、WebLogicシンT3クライアントまたは他の適切なクライアントを使用することをお薦めします。WebLogicクライアントの種類の詳細は、表1-1を参照してください。
この章の内容は次のとおりです。
WebLogicフル・クライアントの理解
WebLogic Server 10.0以降のリリースでは、クライアント・アプリケーションはweblogic.jar
の代わりにwlfullclient.jar
ファイルを使用する必要があります。WebLogicフル・クライアントは、Oracle独自のT3プロトコルを使用してWebLogic Serverと通信するJava RMIクライアントであり、分散コンピューティングのJava-to-Javaモデルを使用します。
WebLogic T3通信を理解するには、『Oracle WebLogic Server RMIアプリケーションの開発』のT3プロトコルを実装したWebLogic RMIの使用に関する項を参照してください。
ノート:
WebLogicフル・クライアントは、各種クライアントの中で最大サイズのJARファイルを必要としますが、最も多くの機能を備え、IIOPクライアントよりもスケーラビリティに優れています。T3プロトコルのサポートを提供するJARがIIOPサポートも提供します。
WebLogicフル・クライアントの特徴は以下のとおりです。
-
クラス・パスに
wlfullclient.jar
が必要となる。 -
初期コンテキストでは、URLは
t3://ip address:port
の形式で使用します。 -
IIOPクライアントよりも高速で、スケーラビリティでも優れています。
-
ほとんどのWebLogic Server固有の機能をサポートします。
-
WebLogic Serverクラスタリングをサポートします。
-
ほとんどのJavaEE機能をサポートします。
-
WebLogic JMS、JMS SAFクライアント、およびJMS Cクライアントをサポートします。
-
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フル・クライアントを使用する場合の制限事項と考慮事項
WebLogicフル・クライアントを使用する場合の制限事項と考慮事項について説明します。
WebLogicフル・クライアントを使用する場合、次の点を考慮します。
-
weblogic.jar
で利用できた機能がwlfullclient.jar
では利用できない場合があります。たとえば、wlfullclient.jarではWebサービスはサポートされません。Webサービスにはwseeclient.jar
が必要になります。また、wlfullclient.jar
では、ejbcなどの開発用に必要な操作やデプロイメントなどの管理操作もサポートされません。これらの操作には、依然としてweblogic.jar
の使用が必要です。 -
WebLogic Server 12.1.3以降のリリースでは、WebLogicフル・クライアントは、rim
RTD.xml
解析中に検証を実行しないJDK StAXパーサーを実装します。WebLogic Serverの以前のリリースでは、WebLogicフル・クライアントは、rimRTD.xml
解析用の検証が含まれるWebLogic StAXパーサーを使用していました。
WebLogicフル・クライアントの開発
WebLogicフル・クライアントを開発する方法を学習します。
基本的なWebLogicフル・クライアントを作成する手順は次のとおりです。:
-
JarBuilderツールを使用して、クライアント・アプリケーションのwlfullclient.jarファイルを生成します。「WebLogic JarBuilder Toolの使用」を参照してください。
-
リモート・オブジェクトへの参照を取得します。
-
T3 URLを使用してサービスをホストするサーバーの初期コンテキストを取得します。
-
初期コンテキストを使用してルックアップを実行することで、サービス・オブジェクトのインスタンスを取得します。このインスタンスは、ローカル・オブジェクト参照と同じように使用できます。
-
-
リモート・オブジェクト・メソッドを呼び出します。
例3-1に、簡単なWebLogicフル・クライアントのサンプル・コードを示します。
例3-1 簡単なWebLogicフルhelloクライアント
package examples.rmi.hello; import java.io.PrintStream; import weblogic.utils.Debug; import javax.naming.*; import java.util.Hashtable; /** * This client uses the remote HelloServer methods. * * @author Copyright (c) Oracle. All Rights Reserved. */ public class HelloClient { private final static boolean debug = true; /** * Defines the JNDI context factory. */ public final static String JNDI_FACTORY="weblogic.jndi.WLInitialContextFactory"; int port; String host; private static void usage() { System.err.println("Usage: java examples.rmi.hello.HelloClient " + "<hostname> <port number>"); System.exit(-1); } public HelloClient() {} public static void main(String[] argv) throws Exception { if (argv.length < 2) { usage(); } String host = argv[0]; int port = 0; try { port = Integer.parseInt(argv[1]); } catch (NumberFormatException nfe) { usage(); } try { InitialContext ic = getInitialContext("t3://" + host + ":" + port); Hello obj = (Hello) ic.lookup("HelloServer"); System.out.println("Successfully connected to HelloServer on " + host + " at port " + port + ": " + obj.sayHello() ); } catch (Throwable t) { t.printStackTrace(); System.exit(-1); } } private static InitialContext getInitialContext(String url) throws NamingException { Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY); env.put(Context.PROVIDER_URL, url); return new InitialContext(env); } }
管理モードでのサーバーとの通信
管理モードでサーバー・インスタンスと通信するには、クライアントに次のフラグ-Dweblogic.AdministrationProtocol=t3
を設定して通信チャネルを構成する必要があります。
非フォーク対象VMでのWebLogicフル・クライアントの実行
fork=true
属性が設定されていないAntスクリプトから起動した<java>
タスクを使用するなど、WebLogicフル・クライアントが非フォーク対象VMで実行されている場合、次のエラーが発生する可能性があります。
生成されるエラー: java.lang.SecurityException: プロバイダ自己整合性チェックに失敗しました
。このエラーは、RSA Crypto-Jライブラリの読込み時に自動的に実行される自己整合性チェックによって発生します。(Crypto-Jライブラリとcryptoj.jar
は、wlfullclient.jar
マニフェスト・クラスパスにあります。)
この自己整合性チェック・エラーは、次に示す状況のような、クライアントが非フォーク対象VMで起動され、Crypto-J APIを直接または間接的に使用する場合に発生します。
-
クライアントがCrypto-Jライブラリを直接起動します。
-
クライアントが、基盤となるクライアントSSL実装をトリガーしてCrypto-J APIを起動するT3S接続を試行する場合。
自己整合性チェックが失敗した場合、Crypto-J APIの以降の呼び出しが失敗します。このエラーの発生を回避するには、Antスクリプトから起動される<java>
タスクでフル・クライアントを実行する場合は、必ずfork
属性をtrue
に設定します。
自己整合性チェックの詳細は、次のURLにある『Java(tm) Cryptography Architectureでのプロバイダの実装方法』のプロバイダにより自己整合性チェックの実行方法に関する項を参照してください。