从命令行在Java WAR上下文中运行代码

时间:2020-03-06 14:29:21  来源:igfitidea点击:

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

例如。我有一个带有命令行界面的Java类,该类可以在webapp的上下文中运行代码,并具有对DB的访问权限。我想在tomcat中登录托管我的WARred应用程序的计算机并能够与之交互

我应该从哪里开始寻找?

谢谢

解决方案

一条建议:
命令行界面类应接受InputStream作为输入,并提供要写入其输出的OutputStream(无法将输出硬编码到System.out,也不能将输入硬编码到System.in)。然后,我们必须编写一个服务器类,以侦听特定端口上的连接。建立连接后,服务器将从连接中获取InputStream并将其提供给命令行类,该类将提供OutputStream,写入的数据将传递给建立连接的客户端。

我们是否只想运行恰好捆绑在WAR中的类文件,还是要与实际的正在运行的WAR实例进行交互?如果是前者,那么WAR只是一个普通的Jar文件,我们可以像在其他所有Jar文件中一样在其中执行类。

如果要与正在运行的WAR进行交互,则可能需要查看JMX。

当前所有的JDK(至少1.5+)都"免费"提供JMX。创建小的接口类用作与WAR交互的命令很容易。

然后,我们将需要创建一个通过JMX连接到WAR的命令行程序,或者我们可以使用JConsole之类的工具(该工具随JDK一起提供,但它是一个GUI)与实例进行交互。还有其他JMX客户端。

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