[英]Implementing JSVC directly without apache-commons-daemon jar
根據apache commons文檔( https://commons.apache.org/proper/commons-daemon/jsvc.html ),我應該能夠直接使用jsvc作為守護程序運行我的應用程序,而無需實現Daemon類:
直
編寫一個實現以下方法的類(MyClass):
- void init(String [] arguments):在這里打開配置文件,創建跟蹤文件,創建ServerSockets,線程
- void start():啟動線程,接受傳入的連接
- void stop():通知線程終止run(),關閉ServerSockets
- void destroy():銷毀在init()中創建的任何對象
將其存儲在jarfile中,並按上述方式使用:
./jsvc -cp my.jar MyClass
MyClass實現上述方法,而不實現Daemon類。 但是,如果我嘗試如上所述調用jsvc而不在類路徑中包含commons-daemon.jar,
我收到以下錯誤:
Cannot find the daemon loader org/apache/commons/daemon/support/DaemonLoader
java_init failed
如果我將其包含在類路徑中,則一切正常。
./jsvc -cp commons-daemon.jar:my.jar MyClass
我從文檔中了解到,如果我不使用該庫中的任何內容,則無需包含commons-daemon.jar,而只需在實現了所需方法的類上直接調用jsvc即可。 這不正確嗎? 我不想將任何不必要的罐子與我的包裝捆綁在一起。
我應該能夠直接使用jsvc將應用程序作為守護程序運行,而無需實現Daemon類 Correct。
但是,如果我嘗試如上所述調用jsvc而不在類路徑中包含commons-daemon.jar。 這是您出問題的地方。 您需要commons-daemon.jar
,而不是實現Daemon
。 Apache JSVC仍然需要它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.