从shell命令访问正在运行的java程序
我正在寻找一种从命令行访问正在运行的java程序的方法。最好的办法是执行以下操作:
启动java应用程序:
bash$java -jar MyBundle.jar App
访问应用程序:
bash$test.sh param1 param2
因此,test.sh
以某种方式从MyBundle.jar
调用App
并传递值 param1
& 参数2
。
重要提示:我正在寻找非常快速的方法。 App
保留数据库连接,每次我需要访问数据库时启动 App
的成本非常昂贵。
我需要能在 Ubuntu 和 Debian 中运行的解决方案。如果它能在 Mac 上运行 - 那就太好了。
任何帮助表示赞赏!
I am looking for a way to access running java program from command line. The best woud be something that does the following:
Starting java app:
bash$java -jar MyBundle.jar App
Accessing app:
bash$test.sh param1 param2
So, test.sh
calls App
from MyBundle.jar
somehow and passes values param1
& param2
.
Important: I am looking for very fast approach. App
hold database connection and it is very expensive to start App
every time I need access do DB.
I need solution that will work in Ubuntu and Debian. If it will work on Mac - great.
Any help is appreciated!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为您需要采用客户端-服务器方法。您的应用程序是服务器,它作为后台进程运行并侦听某个端口上的连接。您的客户端向服务器发出请求并返回响应。
在 Java 中实现此功能的一种快速而简单的方法是将您的应用程序包装在 Jetty servlet 容器中。例如,您可以将其设置为返回 JSON 响应,这很容易处理。
I think you need to take a client-server approach. You app is the server, it runs as a background process and listens for connections on some port. And your client makes requests to the server and gets back the response.
A fast and simple way of implementing this in java would be to wrap your app in the Jetty servlet container. You could set it up to return JSON responses for example, which are easy to process.
打开 TCP/IP 套接字并从 shell 中使用
netcat
非常简单。Java 代码
Shell 代码
您需要使用线程来保持套接字打开以服务多个请求。
It would be quite straightforward to open a TCP/IP socket and use
netcat
from the shell.Java code
Shell code
You'd need to muck around with threads to keep the sockets open to serve multiple requests.