使用Apache Commons Daemon配置Tika Windows服务



我正在尝试使用Apache Commons Daemon让Tika JAXRS作为Windows服务运行。

我有来自的tika-server-1.7罐子http://tika.apache.org/download.html

我已经从下载了Apache Commons Daemon的Windows二进制文件v1.0.15http://commons.apache.org/proper/commons-daemon/binaries.html

我可以将Tika作为一项服务启动,但我无法确定停止方法使用什么。

prunsrv.exe //IS//tika-daemon
 --DisplayName "Tika Daemon" 
 --Classpath "C:Tika Servicetika-server-1.7.jar"
 --StartClass "org.apache.tika.server.TikaServerCli"
 --StopClass "org.apache.tika.server.TikaServerCli"
 --StartMethod main
 --StopMethod main
 --Description "Tika Daemon Windows Service"
 --StartMode java
 --StopMode java

这开始了,并且正如我所希望的那样工作,但当试图停止服务时,它没有响应。显然,org.apache.tika.server.TikaServerCli.main(string[] args)不是一个合适的停止方法,但我不知道其他方法。

我也欢迎任何其他方法让Tika作为Windows服务运行,或者在交互式会话之外自动启动。

这似乎是Apache Commons Daemon 1.0.15的已知问题。https://issues.apache.org/jira/browse/DAEMON-298

我换了1.0.14版本,从Apache档案下载http://archive.apache.org/dist/commons/daemon/binaries/windows/服务现在确实关闭了。

原始java StartMode在关闭时会产生错误,但关闭。不过,exe启动模式可以正常工作。

大约一年前,我遇到了这个问题,并找到了解决方案。在JVM模式下运行Apache Commons Daemon将允许您指定StartClass和StartMethod,这很好,因为您只需将其指向static void Main(...){}

但是,stop不起作用,因为没有可调用的stop方法。

所以,我从源代码开始构建,并添加了一个stop方法。我在tika项目中为此创建了一个PR。Babble的否决解决方案基本上是一样的,但我真的很想在基本jar文件中看到它。https://github.com/apache/tika/pull/324

https://www.michaelwda.com/post/tika_windows_service这里有一些额外的细节和屏幕截图。

C:sourcetikacommons-daemon-1.2.2-bin-windowsamd64prunsrv.exe //IS//tika-daemon ^
--DisplayName "Tika Daemon"  ^
--Description "Tika Daemon Windows Service" ^
--Classpath C:sourcetikatika-server.jar ^
--StartClass "org.apache.tika.server.TikaServerCli" ^
--StopClass "org.apache.tika.server.TikaServerCli" ^
--StartMethod main ^
--StopMethod stop ^
--StartMode jvm  ^
--StopMode jvm ^
--StdOutput auto ^
--StdError auto ^
--Jvm "C:Program FilesJavajdk1.8.0_211jrebinserverjvm.dll" ^
++StartParams -spawnChild 

我创建了一个MSI,它为您完成了这一切:https://github.com/wbicode/TikaService-Installer(或者您可以自己安装安装程序:https://github.com/wbicode/TikaService)

您必须创建一个单独的类来实现自己的启动/停止类(tika-server-X.X.jar在它的类路径中)。

public class WinService {
  public static void start(String[] args) {
      Class<?> clazz = Class.forName("org.apache.tika.server.TikaServerCli");
      Method method = clazz.getMethod("main", String[].class);
      method.setAccessible(true);
      method.invoke(null, (Object)args.toArray(new String[0]));
  }
  public static void stop(String[] args) {
      System.out.println("stopping... TikaService");
      Runtime.getRuntime().exit(0);
  }
}

它是用这个脚本安装的(tika-server-X.X.jar位于lib文件夹中):

prunsrv.exe //IS//tika-daemon ^
    --DisplayName "Tika Daemon" ^
    --Classpath "%SERVICE_PATH%TikaService.jar;%SERVICE_PATH%lib*" ^
    --StartMode java ^
    --StartClass "your.namespace.WinService" ^
    --StartMethod start ^
    --StopMode java ^
    --StopClass "your.namespace.WinService" ^
    --StopMethod stop ^
    --Description "Tika Daemon Windows Service" ^

相关内容

  • 没有找到相关文章

最新更新