ここでは、カスタム RMI ソケットファクトリをインストールして使用するように修正した Hello World プログラムをコンパイルして実行する方法を説明します。
まず、ソースファイルを格納するディレクトリを作成し、ソースファイルをダウンロードします。このステップがまだ完了していない場合、次のステップに進む前に完了させてください。
このチュートリアルで使うソースコードは、次の形式から選択できます。
ここでは、ソースファイルを格納するディレクトリを、SOURCE_DIRECTORY とします。たとえば、「test」という名前のディレクトリにソースファイルをダウンロードした場合は、これ以降の説明の「SOURCE_DIRECTORY」を「test」に置き換えて実行してください。
- SOURCE_DIRECTORY ディレクトリを作成する
- ソースコードを SOURCE_DIRECTORY にダウンロードする
- SOURCE_DIRECTORY ディレクトリに移動する
- ダウンロードした TAR ファイルを解凍する
- 次の方法で、すべてのソースファイルをコンパイルする
javac -d . *.javaこの例のすべてのファイルはパッケージ名
examples.rmisocfacを持つので、このコマンドを実行した結果は、次のようになります。
examplesという名前のディレクトリが SOURCE_DIRECTORY に作成されるrmisocfacという名前のディレクトリがexamplesに作成される- コンパイルされた .class ファイルはすべて、
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.classとHelloImpl_Skel.classは~/SOURCE_DIRECTORY/examples/rmisocfacに格納されます。
このチュートリアルでは、rmiregistry、クライアント、およびサーバの各々を 3 つの独立したウィンドウ (シェル) で実行します。レジストリを起動し、次にサーバ、最後にクライアントを起動します。
- 各ウィンドウで、SOURCE_DIRECTORY に移動する (パッケージディレクトリ
examples/rmisocfacが SOURCE_DIRECTORY のサブディレクトリである場合)
- 次に、JavaTM 2 プラットフォームのランタイムが実行ファイルの場所を確実に検索できるようにする。このためには、3 つのウィンドウすべてで、
CLASSPATHに SOURCE_DIRECTORY を含めて設定する必要がある
rmiregistryを起動するには、3 つのウィンドウの 1 つをレジストリウィンドウとして選択し、次のように入力する
rmiregistry注:
rmiregistryを開始する前に、レジストリを実行するシェルまたはウィンドウに CLASSPATH が設定されていないこと、あるいは設定されていても、クライアントにダウンロードするクラスへのパス (リモートオブジェクトの実装クラスのスタブを含む) が含まれていないことを確認してください。
rmiregistryが、その開始時に CLASSPATH 内でスタブクラスを見つけると、サーバのjava.rmi.server.codebaseプロパティは無視されます。 その結果、クライアントは、そのリモートオブジェクトのスタブコードをダウンロードできません。RMI を使ったコードのダウンロードについては、チュートリアルの「RMI の使用による動的なコードのダウンロード」を参照してください。
- サーバを起動するには、サーバ用ウィンドウを選択して、次のように入力する
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プロパティの設定に問題がある可能性があります。
- クライアントを起動するには、3 つ目のウィンドウで次のように入力する
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 |