ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Serverスタンドアロン・クライアントのプログラミング
11g リリース1 (10.3.6)
B61622-04
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

4 WebLogicフル・クライアントの開発

この章では、WebLogicフル・クライアントを開発および使用する方法について説明します。

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フル・クライアントの特徴は以下のとおりです。


注意:

weblogic.jarで利用できた機能がwlfullclient.jarでは利用できない場合があります。たとえば、wlfullclient.jarではWebサービスはサポートされません。Webサービスにはwseeclient.jarが必要になります。また、wlfullclient.jarでは、ejbcなどの開発用に必要な操作やデプロイメントなどの管理操作もサポートされません。これらの操作には、依然としてweblogic.jarの使用が必要がです。

WebLogicフル・クライアントの開発

基本的なWebLogicフル・クライアントを作成する手順は次のとおりです。

  1. JarBuilderツールを使用して、クライアント・アプリケーションのwlfullclient.jarファイルを生成します。付録B「WebLogic JarBuilderツールの使用」を参照してください。

  2. リモート・オブジェクトへの参照を取得します。

    1. T3 URLを使用してサービスをホストするサーバーの初期コンテキストを取得します。

    2. 初期コンテキストを使用してルックアップを実行することで、サービス・オブジェクトのインスタンスを取得します。このインスタンスは、ローカル・オブジェクト参照と同じように使用できます。

  3. リモート・オブジェクト・メソッドを呼び出します。

例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

非フォーク対象VMでのWebLogicフル・クライアントの実行

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 APIの以降の呼び出しが失敗します。このエラーの発生を回避するには、Antスクリプトから起動される<java>タスクでフル・クライアントを実行する場合は、必ずfork属性をtrueに設定します。

自己整合性チェックの詳細は、次のURLにある『Java(tm) Cryptography Architectureでのプロバイダの実装方法』のプロバイダにより自己整合性チェックの実行方法に関する項を参照してください。

http://download.oracle.com/javase/6/docs/technotes/guides/security/crypto/HowToImplAProvider.html#integritycheck