Oracle® Fusion Middleware Oracle WebLogic Serverスタンドアロン・クライアントのプログラミング 12c リリース1 (12.1.1) B65897-02 |
|
前 |
次 |
この章では、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のプログラミング』のWebLogic RMIでのT3プロトコルの使用方法に関する項を参照してください。
注意: 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クライアントをサポートします。
注意: weblogic.jarで利用できた機能がwlfullclient.jarでは利用できない場合があります。たとえば、wlfullclient.jarではWebサービスはサポートされません。Webサービスにはwseeclient.jarが必要になります。また、wlfullclient.jarでは、ejbcなどの開発用に必要な操作やデプロイメントなどの管理操作もサポートされません。これらの操作には、依然としてweblogic.jarの使用が必要がです。 |
基本的なWebLogicフル・クライアントを作成する手順は次のとおりです。
JarBuilderツールを使用して、クライアント・アプリケーションのwlfullclient.jarファイルを生成します。付録B「WebLogic JarBuilderツールの使用」を参照してください。
リモート・オブジェクトへの参照を取得します。
T3 URLを使用してサービスをホストするサーバーの初期コンテキストを取得します。
初期コンテキストを使用してルックアップを実行することで、サービス・オブジェクトのインスタンスを取得します。このインスタンスは、ローカル・オブジェクト参照と同じように使用できます。
リモート・オブジェクト・メソッドを呼び出します。
例4-1に、簡単なWebLogicフル・クライアントのサンプル・コードを示します。
例4-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
fork=true
属性が設定されていないAntスクリプトから起動した<java>
タスクを使用するなど、WebLogicフル・クライアントが非フォーク対象VMで実行されている場合、次のエラーが発生する可能性があります。
java.lang.SecurityException: The provider self-integrity check failed.
このエラーは、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でのプロバイダの実装方法』のプロバイダにより自己整合性チェックの実行方法に関する項を参照してください。