我正在尝试使用Apache Commons Daemon将Tika JAXRS作为Windows服务运行。
我来自http://tika.apache.org/download.html
的tika-server-1.7.jar我从http://commons.apache.org/proper/commons-daemon/binaries.html
下载了Apache Commons Daemon的Windows二进制文件v1.0.15我可以将Tika作为服务启动,但我无法确定停止方法的用途。
prunsrv.exe //IS//tika-daemon
--DisplayName "Tika Daemon"
--Classpath "C:\Tika Service\tika-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服务运行,或者在交互式会话之外自动启动。
答案 0 :(得分:0)
看起来这是Apache Commons Daemon 1.0.15的已知问题。 https://issues.apache.org/jira/browse/DAEMON-298
我交换了从Apache档案http://archive.apache.org/dist/commons/daemon/binaries/windows/下载的1.0.14版本,现在该服务已关闭。
原始java
StartMode在关闭时产生错误,但 关闭。 exe
StartMode可以正常运行。
答案 1 :(得分:0)
大约一年前,我遇到了这个问题,并找到了解决方案。在JVM模式下运行Apache Commons Daemon将允许您指定StartClass和StartMethod,它们可以正常工作,因为您可以将其指向
static void Main(...){}
但是,停止没有作用,因为没有停止方法可以调用。
因此,我从源代码构建,并添加了stop方法。为此,我在tika项目中创建了PR。 Babble的投票解决方案基本上是同一回事,但是我真的很想在基本jar文件中看到它。 https://github.com/apache/tika/pull/324
https://www.michaelwda.com/post/tika_windows_service此处还有一些其他详细信息和屏幕截图。
C:\source\tika\commons-daemon-1.2.2-bin-windows\amd64\prunsrv.exe //IS//tika-daemon ^
--DisplayName "Tika Daemon" ^
--Description "Tika Daemon Windows Service" ^
--Classpath C:\source\tika\tika-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 Files\Java\jdk1.8.0_211\jre\bin\server\jvm.dll" ^
++StartParams -spawnChild
答案 2 :(得分:-2)
我创建了一个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" ^