ServerSocketのような常駐するJavaアプリに対してリクエストを投げて、レスポンスを得るにはどうすればいいのか悩んでいました。要はメソッドの呼び出しのように、引数を渡すと結果を返してくれるJavaアプリを作りたかったんです。
結論としてはクライアント側のSocketを介してメッセージをやりとりすればいいという、なんとも単純な話だったわけですが、そこへ至るまでに(調べ方すらわからないため)少し悩みました。
最初、アプリの静的変数にアクセスすれば?という無茶なことを考えていたんですが、当然、失敗しました。そもそも外部からアプリ内の変数にアクセスできたらセキュリティ上とんでもない脆弱性が生まれることになります。
でも、常駐アプリは外部とやりとりするために常駐しているわけなので、何か方法があるはずだとしばらく考えてみると、ふと浮かんだのはtomcatでした。tomcatは一度起動すると、8080ポートを使って外部とやりとりします。SocketServerも、初期化時に指定したポートを使ってやりとりします。つまり、指定したポートにメッセージを送信できる仕組みさえあれば対話することができるはず、と考えました。
指定したポートにI/Oストリームが使えるクラス・・・
それってまさに、いま使っているSocketクラスではないか!
というわけで、サーブレット上でSocketを開いてメッセージのやりとりができることを知ったのでした。。
コメントする