簡體   English   中英

Shell腳本調用運行java程序的非主要方法

[英]Shell script calling non-main method of running java program

我開發了一個shell腳本,它調用java程序RHEL環境的main方法。

Shell腳本(比如說app.sh )在tomcat.sh上有多個選項

start:它將通過調用main方法啟動一個java程序

stop:它將獲得正在運行的進程ID並stop:進程

我已經實現了startstop命令,並期待實現暫停命令。

pause: 此選項應獲取運行java應用程序的pid並調用非Main方法

我沒有問題來獲取進程ID。 但是我可以從運行進程ID調用java程序的非Main方法嗎?

編輯:

如何從JVM外部調用對象中的方法? 問題提供了不同技術的解決方案,但我不能轉向使用shell腳本的不同技術。

解決方案如下:

  1. 通常創建服務。
  2. 該服務通過JMX公開了許多方法,或者只是通過監聽TCP / unix-domain套接字來獲取一組有限的已知命令。
  3. 當需要控制時,服務是專用進程(可能是用Java編寫的實用程序,與服務分開),通過指定的命令通道發出所需命令。

我在評論提到SO問題包含了所有必要的技術細節。 實際上所有的學分應該在那里,我只是重新安排他們的話。

或者在類Unix系統中,包括Linux,您可以為給定的pid發送SIGSTOP信號( kill -STOP <pid> ),並且在收到SIGCONT之前將無條件地停止JVM( kill -CONT <pid> )。 但我想這絕對是一個殘酷的解決方案。 可能你會失去所有打開的連接等。

我找到了一個解決方案來擺脫她腳本只調用一個程序的主要方法的限制。

  1. 程序A的RMI URL保留在數據庫或文件系統中。
  2. 程序B讀取該RMI URL。
  3. 腳本調用的啟動選項程序的主要方法A.腳本的暫停選項調用程序B的主要方法。
  4. 程序B調用程序A的遠程方法。

還有一個解決方案:調用一個jsp頁面,它通過在pause選項中使用腳本中的wget命令來調用程序A上的遠程方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM