サンプル 5b : RMI ソケットのカスタマイズ

サンプル 5b は、ServerSocket にカスタマイズ済みの backlog パラメータを指定するという、RMI ソケットの標準的なカスタマイズ方法を示しています。このサンプルは、カスタム ストリームおよび SSL ソケットを提供するように簡単に拡張できます。サードパーティの標準カスタマイズや製品も使用できます。

サンプルを開始する前に deploy.properties ファイルで必要なホスト情報を変更します。JRun のルート ディレクトリは、JRun インストール ディレクトリに置き換えてください。

bash$ export JRUN_HOME=JRun のルート ディレクトリ
bash$ cd JRun のルート ディレクトリ/samples/sample5b

次のコマンドを入力します。

bash$ make jars 
bash$ make deploy
bash$ make standalone

次に、別のコマンド プロンプト ウィンドウでクライアントを起動します。

bash$ make go host=ホスト名 count=10

ServerSockets に対する backlog パラメータの既定値は 50 です。キューが満杯になったときに接続指示が出されると、その接続は拒否されます。count=10 は、サーバへの同時接続数を指定します。

backlog キューが受け入れ可能な同時接続数を超えてサンプルを再実行すると、エラーが発生します。

bash$ make go host=ホスト名 count=150

このエラーが発生しないようにするには、META-INF/ejb-jar.xml ファイルの次の env-entry 要素を削除します。

<env-entry>
<env-entry-name>ejipt.homeSocketFactory</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>ejbeans.SocketFactory</env-entry-value>
</env-entry>
<env-entry>
<env-entry-name>ejipt.objectSocketFactory</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>ejbeans.SocketFactory</env-entry-value>
</env-entry>

次のコマンドを入力します。

bash$ make jars 
bash$ make deploy
bash$ make standalone

別のプロンプト ウィンドウでクライアントを起動します。

bash$ make go host=ホスト名 count=350

backlog キューが 350 個の同時接続を処理するように拡張されます。現実的には、350 個もの接続要求がサーバに対して同時に出されるという事態はあまり起きませんが、活動がピークに達して接続が拒否されるような場合は、この種のカスタマイズが有効です。