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

从命令行在java WAR上下文中运行代码,java,security,tomcat,war,servlets,Java,Security,Tomcat,War,Servlets,我将如何编写一些代码来允许从命令行访问webapp中的Java类 例如,我有一个带有命令行界面的java类,可以在webapp的上下文中运行代码,可以访问DB等。我想在tomcat中登录托管我的WARred app的机器,并能够与之交互 我应该从哪里开始寻找 谢谢你的建议: 您的命令行接口类应接受InputStream作为其输入,并提供其输出将写入的OutputStream(它不能硬编码输出到System.out和输入到System.in)。然后,您必须编写一个服务器类来侦听特定端口上的连接。当

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

例如,我有一个带有命令行界面的java类,可以在webapp的上下文中运行代码,可以访问DB等。我想在tomcat中登录托管我的WARred app的机器,并能够与之交互

我应该从哪里开始寻找

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

建议:
您的命令行接口类应接受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服务总是存在的。

您是希望运行恰好在WAR中捆绑的类文件,还是希望与实际运行的WAR实例交互?如果是前者,那么WAR只是一个普通的Jar文件,您可以像其他Jar文件一样在其中执行类

如果您想与运行中的WAR交互,那么您可能想看看JMX

所有当前的JDK(至少1.5+)都附带JMX“免费”。很容易创建一些接口类,用作与WAR交互的命令

然后,您需要创建一个通过JMX连接到WAR的命令行程序,或者您可以使用像JConsole这样的工具(它是JDK附带的,但它是一个GUI)与您的实例交互。还有其他JMX客户机


如果这些都不吸引人的话,那就是web服务。

谢谢,这正是我想要的。那么JMX就可以胜任这项工作了。我们将对此进行探讨。ThksWith提到“WAR只是一个普通的Jar文件,您可以像其他任何Jar文件一样在其中执行类”,这意味着您可以说“java-cp foo.WAR…”甚至“java-Jar foo.WAR”,让它像Jar文件一样工作。你真的能做到吗?谢谢这就是我要找的。那么JMX就可以胜任这项工作了。我们将对此进行探讨。ThksWith提到“WAR只是一个普通的Jar文件,您可以像其他任何Jar文件一样在其中执行类”,这意味着您可以说“java-cp foo.WAR…”甚至“java-Jar foo.WAR”,让它像Jar文件一样工作。你真的能做到吗?