将Jetty 7作为Windows服务运行

时间:2010-01-19 15:08:57

标签: windows service jetty

Jetty 7是否支持使用Java Service Wrapper作为服务运行? 我现在有什么选择?

7 个答案:

答案 0 :(得分:25)

@glb,感谢指出apache commons-daemon Procrun 它在Windows 7 64 Bit上对我很有用,这就是我如何设置它。

有关详细信息,请参阅

    根据@glb 中的链接
  • procrun页面
  • 码头帮助屏幕> java -jar start.jar --help

REM 1. Open command prompt as Administrator

mkdir C:\java\apache-commons-daemon
REM 2. Download commons-daemon binaries for windows to directory above from
REM      http://www.apache.org/dist/commons/daemon/binaries/windows/commons-daemon-1.0.15-bin-windows.zip
REM 3. unzip which will create C:\java\apache-commons-daemon\commons-daemon-1.0.5-bin-windows

mkdir C:\java\jetty
REM 4. Download jetty to directory above from
REM      http://download.eclipse.org/jetty/7.4.2.v20110526/dist/jetty-distribution-7.4.2.v20110526.zip 
REM 5. install / unzip which will create C:\java\jetty\jetty-distribution-7.4.2.v20110526

REM 6. Verify that jetty can be started
cd C:\java\jetty\jetty-distribution-7.4.2.v20110526
java -jar start.jar
REM     Look for any obvious errors on the console
REM     Open a browser at http://localhost:8080/
REM     You should be presented with the Jetty Start Page,
REM      and be able to execute the Hello World Servlet
REM     OK, that's enough,
REM      come back to the command prompt and ctrl-C to stop the jetty server

REM 7. Copy and rename commons-daemon binaries into the JETTY_HOME directory structure
REM     Note that the GUI manager is copied to JETTY_HOME,
REM      and the service exe is copied to JETTY_HOME\bin
REM     Note that both binaries get the same target name,
REM      but are placed in different directories
REM     This is just makes it easier to launch the GUI manager
REM      by not having to provide command line arguments
REM     Note that I have selected the amd64\prunsrv.exe as the service exe,
REM      I am running on Windows 7 64 bit Intel i7 Xeon
cd C:\java\jetty\jetty-distribution-7.4.2.v20110526
copy \java\apache-commons-daemon\commons-daemon-1.0.5-bin-windows\prunmgr.exe .\JettyService.exe
copy \java\apache-commons-daemon\commons-daemon-1.0.5-bin-windows\amd64\prunsrv.exe .\bin\JettyService.exe

REM 8. Time to install the service
bin\JettyService //IS//JettyService --DisplayName="Jetty Service" --Install=C:\java\jetty\jetty-distribution-7.4.2.v20110526\bin\JettyService.exe --LogPath=C:\java\jetty\jetty-distribution-7.4.2.v20110526\logs --LogLevel=Debug --StdOutput=auto --StdError=auto --StartMode=Java --StopMode=Java --Jvm=auto ++JvmOptions=-Djetty.home=C:\java\jetty\jetty-distribution-7.4.2.v20110526 ++JvmOptions=-DSTOP.PORT=8087 ++JvmOptions=-DSTOP.KEY=downB0y ++JvmOptions=-Djetty.logs=C:\java\jetty\jetty-distribution-7.4.2.v20110526\logs ++JvmOptions=-Dorg.eclipse.jetty.util.log.SOURCE=true ++JvmOptions=-XX:MaxPermSize=128M ++JvmOptions=-XX:+CMSClassUnloadingEnabled ++JvmOptions=-XX:+CMSPermGenSweepingEnabled --Classpath=C:\java\jetty\jetty-distribution-7.4.2.v20110526\start.jar --StartClass=org.eclipse.jetty.start.Main ++StartParams=OPTIONS=All ++StartParams=C:\java\jetty\jetty-distribution-7.4.2.v20110526\etc\jetty.xml ++StartParams=C:\java\jetty\jetty-distribution-7.4.2.v20110526\etc\jetty-deploy.xml ++StartParams=C:\java\jetty\jetty-distribution-7.4.2.v20110526\etc\jetty-webapps.xml ++StartParams=C:\java\jetty\jetty-distribution-7.4.2.v20110526\etc\jetty-contexts.xml ++StartParams=C:\java\jetty\jetty-distribution-7.4.2.v20110526\etc\jetty-testrealm.xml --StopClass=org.eclipse.jetty.start.Main ++StopParams=--stop

REM 9. Test that the service starts at the command prompt
bin\JettyService //TS

REM 10. To delete the service uncomment the line below
REM bin\JettyService //DS

REM 11. Now launch the GUI manager to check the parameter settings
JettyService.exe

REM You can use the GUI to start and stop the service, and to change the settings
REM If you want the GUI exe to have a different name to the service exe,
REM   then close the GUI and uncomment and run the line below
REM ren JettyService.exe JettyServiceMgr.exe
REM To launch the renamed GUI uncomment and run the line below
REM JettyServiceMgr.exe //ES//JettyService  

完成!

答案 1 :(得分:3)

Java Service Wrapper(JSW 3.4.1)的最新稳定版本中,有WrapperJarApp集成方法:

这是我配置的一部分:

wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperJarApp
wrapper.java.classpath.1=%WRAPPER_HOME%/lib/*.jar
wrapper.java.classpath.2=%JETTY_HOME%/lib/*.jar
wrapper.java.classpath.3=%JETTY_HOME%/start.jar
wrapper.java.library.path.1=%WRAPPER_HOME%/lib
wrapper.app.parameter.1=%JETTY_HOME%/start.jar
wrapper.app.parameter.2=%JETTY_HOME%/etc/jetty.xml
# other config params as needed

答案 2 :(得分:3)

从Apache Commons看看Procrun。您需要浏览本机二进制文件下载区域以获取Windows二进制文件。

答案 3 :(得分:2)

您可以从http://svn.codehaus.org/jetty/jetty/branches/jetty-7/jetty-win32/获取src并自行构建。

但我手动将包装器安装为任何“标准”包装器安装。

取出原始的Jetty-Service.conf文件并更改:

wrapper.java.mainclass = org.mortbay.jetty.win32service.JettyServiceWrapperListener 至 wrapper.java.mainclass = org.tanukisoftware.wrapper.WrapperSimpleApp

并补充说......

wrapper.app.parameter.1 = org.eclipse.jetty.start.Main< - 主要课程 wrapper.app.parameter.2 = .. /等/的jetty.xml wrapper.app.parameter.x = .. / etc / jetty-x.xml< - 您希望包含的任何其他配置文件... wrapper.app.parameter.y = .. /等/码头-y.xml

似乎开始很好,它似乎也优雅地关闭。

答案 4 :(得分:2)

我遇到了运行@ crowne的安装服务代码的问题(我正在运行Jetty 8.1.0)。只需将-StartMode=Java --StopMode=Java 更改为-StartMode=jvm --StopMode=jvm并删除++JvmOptions=-XX:+CMSPermGenSweepingEnabled

之后我在jetty / bin文件夹中创建了一个create_jetty_service.bat并从那里运行文件:

set jetty_home = C:\java\jetty\jetty-hightide-8.1.0.v20120127

JettyService //IS//JettyService --DisplayName="Jetty Service" ^
--Install=%jetty_home%\bin\JettyService.exe ^
--LogPath=%jetty_home%\logs ^
--LogLevel=Debug --StdOutput=auto --StdError=auto --StartMode=jvm --StopMode=jvm --Jvm=auto ^
++JvmOptions=-Djetty.home=%jetty_home% ^
++JvmOptions=-DSTOP.PORT=8087 ^
++JvmOptions=-DSTOP.KEY=downB0y ^
++JvmOptions=-Djetty.logs=%jetty_home%\logs ^
++JvmOptions=-Dorg.eclipse.jetty.util.log.SOURCE=true ^
++JvmOptions=-XX:MaxPermSize=256M ^
++JvmOptions=-XX:+CMSClassUnloadingEnabled ^
--Classpath=%jetty_home%\start.jar ^
--StartClass=org.eclipse.jetty.start.Main ^
++StartParams=OPTIONS=All ^
++StartParams=%jetty_home%\etc\jetty.xml ^
++StartParams=%jetty_home%\etc\jetty-deploy.xml ^
++StartParams=%jetty_home%\etc\jetty-webapps.xml ^
++StartParams=%jetty_home%\etc\jetty-contexts.xml ^
++StartParams=%jetty_home%\etc\jetty-testrealm.xml ^
--StopClass=org.eclipse.jetty.start.Main ++StopParams=--stop

请记住以管理员身份运行cmd.exe以使命令生效。

答案 5 :(得分:2)

您可以作为Windows服务运行Jetty可以用来执行exewrap Jetty Windows Service一体化软件包也是分发的。

http://exewrap.sourceforge.jp/jetty/

答案 6 :(得分:1)

如果您处于某种锁定环境并需要保留在Microsoft提供的工具集中,则srvanyinstsrvsc是您的朋友。不幸的是,它通常包括进行注册表编辑。好消息是它非常灵活。

以下是我最近为自动启动Selenium Grid中心服务器所做的工作。


srvany.exe复制到c:\tools\srvany\srvany.exe

以管理员身份打开cmd窗口并运行:

$ cd C:\tools\srvany
$ sc create "Selenium Grid Hub Server" binPath= c:\tools\srvany\srvany.exe DisplayName= "Selenium Grid Hub Server"

<强>注册表编辑

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Selenium Grid Hub Server

添加名为Parameters的新密钥 在该键下,添加3个名为的新字符串值:

  • Application =&gt; ${JAVA_HOME}/bin/java.exe
  • AppParameters =&gt; -jar selenium-server-standalone-2.42.2.jar -role hub
  • AppDirectory =&gt; C:\tools\selenium

归功于http://codeforjava.blogspot.com/2010/12/run-java-application-as-windows-nt.html