HelloWorld のコンパイル方法と実行方法


ここでは、カスタム RMI ソケットファクトリをインストールして使用するように修正した Hello World プログラムをコンパイルして実行する方法を説明します。


プログラム例のコンパイル

まず、ソースファイルを格納するディレクトリを作成し、ソースファイルをダウンロードします。このステップがまだ完了していない場合、次のステップに進む前に完了させてください。

このチュートリアルで使うソースコードは、次の形式から選択できます。

ここでは、ソースファイルを格納するディレクトリを、SOURCE_DIRECTORY とします。たとえば、「test」という名前のディレクトリにソースファイルをダウンロードした場合は、これ以降の説明の「SOURCE_DIRECTORY」を「test」に置き換えて実行してください。

  1. SOURCE_DIRECTORY ディレクトリを作成する
  2. ソースコードを SOURCE_DIRECTORY にダウンロードする
  3. SOURCE_DIRECTORY ディレクトリに移動する
  4. ダウンロードした TAR ファイルを解凍する
  5. 次の方法で、すべてのソースファイルをコンパイルする
  6. javac -d . *.java

    この例のすべてのファイルはパッケージ名 examples.rmisocfac を持つので、このコマンドを実行した結果は、次のようになります。

  • ソースファイルのコンパイルが終了したら、RMI コンパイラ rmic を使って、リモートオブジェクト実装サーバ HelloImpl のスタブとスケルトンコードを生成します。
  • rmic を呼び出すときは、実装クラスの完全指定されたパッケージ名を使う必要があります。この例では、examples.rmisocfac.HelloImpl です。ここまでの手順を終えると、現在のディレクトリは SOURCE_DIRECTORY になるので、次のように入力して rmic を起動します。

    rmic -d . examples.rmisocfac.HelloImpl

    このコマンドが終了すると、スタブとスケルトンは他の .class ファイルと同じディレクトリに生成されます。

    Microsoft Windows プラットフォームでは、このディレクトリは C:\SOURCE_DIRECTORY\examples\rmisocfac です。

    SolarisTM のオペレーティング環境では、このディレクトリは ~/SOURCE_DIRECTORY/examples/rmisocfac です。

    rmic の起動後は、スタブとスケルトンの .class ファイル HelloImpl_Stub.classHelloImpl_Skel.class~/SOURCE_DIRECTORY/examples/rmisocfac に格納されます。
     


    例題の実行

    このチュートリアルでは、rmiregistry、クライアント、およびサーバの各々を 3 つの独立したウィンドウ (シェル) で実行します。
    1. 各ウィンドウで、SOURCE_DIRECTORY に移動する (パッケージディレクトリ examples/rmisocfac が SOURCE_DIRECTORY のサブディレクトリである場合)

    2.  
    3. 次に、JavaTM 2 プラットフォームのランタイムが実行ファイルの場所を確実に検索できるようにする。このためには、3 つのウィンドウすべてで、CLASSPATH に SOURCE_DIRECTORY を含めて設定する必要がある

    4.  
    レジストリを起動し、次にサーバ、最後にクライアントを起動します。
    1. rmiregistry を起動するには、3 つのウィンドウの 1 つをレジストリウィンドウとして選択し、次のように入力する
    2. rmiregistry

      注: rmiregistry を開始する前に、レジストリを実行するシェルまたはウィンドウに CLASSPATH が設定されていないこと、あるいは設定されていても、クライアントにダウンロードするクラスへのパス (リモートオブジェクトの実装クラスのスタブを含む) が含まれていないことを確認してください。

      rmiregistry が、その開始時に CLASSPATH 内でスタブクラスを見つけると、サーバの java.rmi.server.codebase プロパティは無視されます。 その結果、クライアントは、そのリモートオブジェクトのスタブコードをダウンロードできません。RMI を使ったコードのダウンロードについては、チュートリアルの「RMI の使用による動的なコードのダウンロード」を参照してください。

    3. サーバを起動するには、サーバ用ウィンドウを選択して、次のように入力する
    4. java -Djava.security.policy=/SOURCE_DIRECTORY/policy -Djava.rmi.server.codebase=file:/SOURCE_DIRECTORY/ examples.rmisocfac.HelloImpl

      サーバが正常に起動すると、「HelloServer Bound in registry.」と表示されます。サーバの起動時にエラーが発生した場合は、rmiregistry の CLASSPATH または java.rmi.server.codebase プロパティの設定に問題がある可能性があります。
       

    5. クライアントを起動するには、3 つ目のウィンドウで次のように入力する
    6. java -Djava.security.policy=/SOURCE_DIRECTORY/policy examples.rmisocfac.HelloClient

      HelloClient プログラムが正常に実行されると、ウィンドウに「Hello World!」というメッセージが表示されます。


    Copyright © 1999 Sun Microsystems, Inc. All Rights Reserved.
    コメントの送付先: rmi-comments@java.sun.com 
    Sun