| Oracle® Fusion Middleware Oracle WebLogic Serverスタンドアロン・クライアントのプログラミング 11g リリース1(10.3.5) B61622-03 |
|
![]() 前 |
![]() 次 |
次の項では、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);
}
}
JDK 1.6クライアント・アプリケーションのWebLogicフル・クライアントを配信するには、SSL暗号化機能に使用されるRSA Crypto-Jライブラリも配信する必要があります。Crypto-Jライブラリは、WL_HOME/server/lib/cryptoj.jarに格納され、wlfullclient.jarマニフェストのClass-Pathヘッダー・フィールドで参照されます。
RSA Crypto-Jライブラリの読込み時(「非フォーク対象VMでのWebLogicフル・クライアントの実行」を参照してください)に自動的に実行される自己整合性チェックの要件によって、cryptoj.jarは、生成するwlfullclient.jarファイルに含められません。そのため、WebLogicフル・クライアントの配信時に2つのJARファイルを個別に提供する必要があります。これは以前のリリースのWebLogic Serverから変更された点です。
WebLogicフル・クライアントの配信先のマシンでは、cryptoj.jarをwlfullclient.jarと同じディレクトリに格納する必要があります。
WebLogicフル・クライアントの生成に関する詳細は、付録B「WebLogic JarBuilderツールの使用」を参照してください。
管理モードでのサーバー・インスタンスと通信するには、クライアントで次のフラグを設定して通信チャネルを構成する必要があります。
-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でのプロバイダの実装方法』のプロバイダにより自己整合性チェックの実行方法に関する項を参照してください。