代码之家  ›  专栏  ›  技术社区  ›  macarthy

从命令行运行Java战上下文中的代码

  •  1
  • macarthy  · 技术社区  · 16 年前

    我将如何编写一些代码以允许从命令行访问WebApp中的Java类。

    例如,我有一个带有命令行接口的Java类,它可以在WebApp的上下文中运行代码,访问DB等。我想登录在Tomcat中托管我的应用程序的机器,并能够与之交互。

    我应该从哪里开始寻找?

    谢谢

    2 回复  |  直到 15 年前
        1
  •  4
  •   Will Hartung    16 年前

    您只想运行恰好在战争中捆绑在一起的类文件,还是不想与实际运行的战争实例交互?如果是前者,那么战争只是一个普通的JAR文件,您可以像其他任何JAR文件一样执行其中的类。

    如果您想要与正在运行的战争进行交互,那么您可能需要查看JMX。

    所有当前的JDK(至少1.5以上)都附带JMX“免费”。很容易创建一个小的接口类作为命令来与您的战争进行交互。

    然后,您需要创建一个通过JMX连接到战争的命令行程序,或者您可以使用类似jconsole的工具(它与JDK一起提供,但它是一个GUI)与您的实例进行交互。还有其他的JMX客户机。

    如果这些都不吸引人,那么总有Web服务。

        2
  •  0
  •       16 年前

    一个建议: 您的命令行接口类应该接受一个输入流作为输入,并提供一个输出流(它不能硬编码输出到System.Out和输入到System.In),它的输出将被写入。然后您必须编写一个服务器类来监听某个端口上的连接。当建立连接时,服务器将从连接中获取输入流并将其提供给命令行类,该类将提供输出流,写入的数据将传递给建立连接的客户机。