从终端调用java方法

时间:2012-01-14 19:59:01

标签: java ssh cmd

假设我有一个java程序myProgram.jar,我在服务器上运行它。要启动程序,我会将其输入终端:

>java -jar myProgram.jar

该程序将继续无限期运行。那么如果程序具有诸如

之类的功能呢?
void processInput(String text){
     //process the text
}

我想通过SSH连接到服务器并使用特定字符串调用此函数?所以我可以随时登录我的服务器并改变我的程序状态。这可能吗?

3 个答案:

答案 0 :(得分:2)

这可以做到,但不容易。

有一些标准的方法可以实现您的需求:MBeans。看看http://docs.oracle.com/javase/tutorial/jmx/mbeans/standard.html

答案 1 :(得分:0)

这里有很多选择。最简单的是,如果您只需要在启动时将自定义文本作为参数提供给Java程序 - 在这种情况下,java命令末尾的任何参数都将作为String数组传递到程序中main方法。

否则,您将寻求实现某种远程过程调用(RPC)。您可以使用Java RMI(远程方法调用)之类的东西 - 您的程序的主要执行开始,并且您可以使用程序的子执行(或所有其他客户端库),它们在主执行时调用方法运行。如果您想进一步扩展,可以让它通过标准HTTP托管Web服务,并使用SOAP或REST调用。

此处还有许多其他选项和变体,具体取决于您的具体要求。

+1 DagR的建议 - 再次,取决于你想要做什么,JMX也可能适合这一点。

答案 2 :(得分:0)

您可以实现一个Java客户端应用程序,该应用程序使用RMI调用服务器上运行的Java应用程序上的方法。然后,当您进入服务器时,可以使用您需要的参数运行客户端应用程序,并让它调用其他程序中的方法。