java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar
⇔
StreamRelay.bat
ストリームの実体として、TCPやUDPだけではなく、RMI や Corba などが指定できるので、プロトコル変換器としても利用できる
RMIへ変換
サーバ側ではRMIレジストリサービスを起動する
START /min rmiregistry.exe
という感じ。その際に、StreamRelay.jar はクラスパスで検索できるようにしておかないとダメだ。
なので、
SET CLASSPATH=%CLASSPATH%;.
START /min rmiregistry.exe
という感じか・・・
サーバ側
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 1099 -LocalRMI -RemotePort 0
クライアント側
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -RemotePort 1099 -RemoteRMI -RemoteHost 192.0.2.1
で、RMI で通信する
パケットキャプチャで、どんなだろ・・・という時に使えるかもしれない。
Corbaへ変換
サーバ側ではCORBAオブジェクトブローカーサービスを起動する
START /min orbd.exe -ORBInitialPort 1050
という感じか・・・
サーバ側
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 1050 -LocalCORBA -RemotePort 0
クライアント側
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -RemotePort 1050 -RemoteCORBA -RemoteHost 192.0.2.1
で、CORBA で通信する
パケットキャプチャで、どんなだろ・・・という時に使えるかもしれない。
オプション
-LocalObjectName "リモート名"
-RemoteObjectName "リモート名"
既定はRMI/CORBA共に「StreamRelay」だけど、変更したい時に指定すればよい
-LocalHeartbeat
-RemoteHeartbeat
ハートビート、つまり相手が待機中かどうかハートビートメッセージを定期的に送りあうかどうかの設定。
マルチキャストUDPへ変換
マルチキャストアドレス(224.0.0.4)とUDPポート(33333/udp)という相手と、コンソール間でのデータ交換の場合
ローカルと呼称する側にマルチキャストを対応させる場合はこんな感じ
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalHost 224.0.0.4 -LocalPort 33333 -LocalUDP -RemotePort 0
リモートと呼称する側にマルチキャストを対応させる場合はこんな感じ
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 0 -RemoteHost 224.0.0.4 -RemotePort 33333 -RemoteUDP
パケットキャプチャで、どんなだろ・・・という時に使えるかもしれない。
マルチキャストUDPは、コンソールなどと同じ扱い(一つの共通のスレッド)にしている
つまり
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -LocalPort 90 -RemoteHost 224.0.0.4 -RemotePort 33333 -RemoteUDP
の場合、ローカルと呼称する側に接続がある度に、リモート側のオブジェクトを生成するのではなく、一つのオブジェクトが複数のローカル側のオブジェクトと対話するようになっている(ブロードキャストモード/ブローカーモード)