0

根据 apache commons 文档(https://commons.apache.org/proper/commons-daemon/jsvc.html),我应该能够直接使用 jsvc 将我的应用程序作为守护程序运行,而无需实现 Daemon 类:

直接地

编写一个实现以下方法的类(MyClass):

  • void init(String[] arguments):这里打开配置文件,创建跟踪文件,创建ServerSockets,Threads
  • 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 并实现所需的方法。这是不正确的吗?我不想在我的包裹中捆绑任何不必要的罐子。

4

1 回答 1

0

我应该能够直接使用 jsvc 将我的应用程序作为守护进程运行,而无需实现 Daemon 类Correct。

但是,如果我尝试像上面那样调用 jsvc 而不在我的类路径中包含 commons-daemon.jar。这是你出错的地方。您需要commons-daemon.jar,您只是没有实施Daemon. Apache JSVC 仍然需要它。

于 2018-03-19T20:33:35.080 回答