コマンドラインからJava WARのコンテキストでコードを実行する
質問
コマンド ラインから Web アプリの Java クラスにアクセスできるようにするコードを記述するにはどうすればよいでしょうか。
例えば。コマンドラインインターフェイスを備えたJavaクラスがあり、DBなどにアクセスしてWebアプリのコンテキストでコードを実行できます。Tomcat で WARred アプリをホストしているマシンにログオンし、それと対話できるようにしたいと考えています
どこから探し始めればよいでしょうか?
ありがとう
解決
たまたま WAR にバンドルされているクラス ファイルを実行したいだけですか、それとも実際に実行中の WAR インスタンスと対話したくないですか?前者の場合、WAR は単なる通常の Jar ファイルであり、他の Jar ファイルと同様にその中のクラスを実行できます。
実行中の WAR を操作したい場合は、JMX を検討するとよいでしょう。
現在のすべての JDK (少なくとも 1.5 以降) には、JMX が「無料」で付属しています。WAR と対話するためのコマンドとして使用する小さなインターフェイス クラスを作成するのは簡単です。
次に、JMX 経由で WAR に接続するコマンド ライン プログラムを作成する必要があります。または、JConsole (JDK に付属していますが、GUI です) などのツールを使用してインスタンスと対話することもできます。他にも JMX クライアントがあります。
どれも魅力的ではない場合でも、Web サービスは常に存在します。
他のヒント
提案:コマンド ライン インターフェイス クラスは、InputStream を入力として受け入れ、出力が書き込まれる OutputStream (出力を System.out に、入力を System.in にハードコードすることはできません) を提供する必要があります。次に、特定のポートで接続をリッスンするサーバー クラスを作成する必要があります。接続が確立されると、サーバーは接続から InputStream を取得し、それをコマンド ライン クラスに渡します。コマンド ライン クラスは、書き込まれたデータが接続を行ったクライアントに渡される OutputStream を提供します。