我将如何编写一些代码以允许从命令行访问我的 web 应用程序中的 Java 类。
例如,我有一个带有命令行界面的 java 类,它可以在 webapp 的上下文中运行代码,可以访问数据库等。我想登录在 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,写入的数据将传递给建立连接的客户端。