2012-01-14 5 views
0

サーバー上で実行しているjavaプログラムmyProgram.jarがあるとします。私は、端末にこれを入力したプログラムを開始するには、次の端末からJavaメソッドを呼び出す

>java -jar myProgram.jar 

をし、プログラムが無期限に実行し続けます。今、どのようなプログラムが

void processInput(String text){ 
    //process the text 
} 

などの機能を持っていた私は、サーバーにSSHで接続し、特定の文字列で、この関数を呼び出すしたい場合は?いつでも私のサーバにログインして自分のプログラムの状態を変えることができました。これは可能ですか?

答えて

2

これは実行できますが、容易ではありません。

おそらく必要なものを達成するための標準的な方法があります。見てくださいhttp://docs.oracle.com/javase/tutorial/jmx/mbeans/standard.html

+0

私はJMXから離れている人を恐れることはありません。それは「簡単ではない」ということです。これは非常に主観的です。可能な解決策としてJMXの場合+1。 – ziesemer

+0

すばらしい提案! MBeanは非常に厄介なユーザインタフェースを持っていますが、単純/基本的なメソッド呼び出しの場合、それらは適切であり、実装が比較的簡単です。 – user949300

+0

ああ、素晴らしい。ありがとうございました –

0

ここにはいくつかのオプションがあります。最も簡単なのは、起動時にカスタムテキストをJavaプログラムに渡すだけでよい場合です。この場合、javaコマンドの最後の引数は、文字列配列としてプログラムmainメソッドに渡されます。

そうしないと、何らかのリモートプロシージャコール(RPC)を実装することになります。 Java RMI(リモートメソッド呼び出し)のようなものを使うことができます。プログラムの主な実行が開始され、実行中のメソッドを呼び出すプログラム(または別のクライアントライブラリ)ランニング。これをさらに拡張したい場合は、標準のHTTP経由でWebサービスをホストし、SOAPまたはREST呼び出しを使用できます。

正確な要件に応じて、ここにはさらに多くのオプションとバリエーションがあります。

+1また、DagRの提案では、あなたが何をしようとしているかにもよるが、JMXはこれにも適しているかもしれない。

+0

はい残念ながら私は起動時に文字列を提供することはできません。 –

0

RMIを使用してサーバー上で実行されているJavaアプリケーションでメソッドを呼び出すJavaクライアントアプリケーションを実装できます。次に、サーバーにsshを実行すると、必要なパラメーターを使用してクライアント・アプリケーションを実行し、他のプログラムのメソッドを呼び出すことができます。

関連する問題