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

时间:2008-09-20 17:40:48

标签: java security tomcat war servlets

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

E.g。我有一个带有命令行界面的java类,它可以在webapp的上下文中运行代码,可以访问数据库等。我想在tomcat中登录托管我的WARred应用程序的机器并且能够与它进行交互

我应该从哪里开始寻找?

谢谢

2 个答案:

答案 0 :(得分:4)

您是否只想运行恰好捆绑在WAR中的类文件,或者您是否希望与实际运行的WAR实例进行交互?如果是前者,则WAR只是一个普通的Jar文件,您可以像其他任何Jar文件一样执行该类。

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

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

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

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

答案 1 :(得分:0)

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