【问题标题】:calling java methods from a terminal从终端调用 java 方法
【发布时间】:2012-02-10 12:07:23
【问题描述】:

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

>java -jar myProgram.jar

并且程序将无限期地继续运行。现在如果程序有这样的功能呢

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

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

【问题讨论】:

    标签: java ssh cmd


    【解决方案1】:

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

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

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

    +1 表示 DagR 的建议 - 同样,根据您想要做什么,JMX 也可能非常适合。

    【讨论】:

    • 是的,很遗憾我无法在启动时提供字符串。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      这可以做到,但并不容易。

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

      【讨论】:

      • 我不会说它“不容易”来吓跑任何人远离 JMX,这是非常主观的。 +1 JMX 作为一种可能的解决方案。
      • 好建议! MBean 有一个相当笨重的用户界面,但对于简单/基本的方法调用,它们将是一个很好的选择,并且实现起来相对简单。
      猜你喜欢
      • 2020-02-22
      • 2023-03-05
      • 1970-01-01
      • 2017-09-17
      • 2019-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-19
      相关资源
      最近更新 更多