简体   繁体   English

将Jetty 7作为Windows服务运行

[英]Running Jetty 7 as Windows Service

Did Jetty 7 drop support to run as a service using Java Service Wrapper? Jetty 7是否放弃了使用Java Service Wrapper作为服务运行的支持? What options do I have now? 我现在有什么选择?

@glb, thanks for pointing out apache commons-daemon Procrun. @glb,感谢您指出apache commons-daemon Procrun。
Its working great for me on Windows 7 64 Bit, here's how I set it up. 在Windows 7 64位上,它对我来说非常有用,这是我设置的方式。

For more info see 有关更多信息,请参见

  • procrun page as per link from @glb 按照@glb中的链接的procrun页面
  • jetty help screen > java -jar start.jar --help 码头帮助屏幕> 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  

done! 完成!

In the latest stable version of Java Service Wrapper (JSW 3.4.1) there's WrapperJarApp method of integration: 在最新的Java Service Wrapper稳定版本(JSW 3.4.1)中,有WrapperJarApp集成方法:

This is part of my configuration: 这是我的配置的一部分:

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

Take a look at Procrun from the Apache Commons. 从Apache Commons看一下Procrun You'll want to browse the native binaries download area to get the Windows binaries. 您将要浏览本机二进制文件下载区域以获取Windows二进制文件。

You can run as a Windows service Jetty can be used to exewrap. 您可以作为Windows服务运行,可以将Jetty用作exraprap。
Jetty Windows Service all-in-one packages are also distributed. Jetty Windows Service多合一软件包也已分发。

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

You can get the src from: http://svn.codehaus.org/jetty/jetty/branches/jetty-7/jetty-win32/ and build it yourself. 您可以从以下网址获取src: http//svn.codehaus.org/jetty/jetty/branches/jetty-7/jetty-win32/并自行构建。

But I manually installed the wrapper as any “standard” wrapper installation. 但是我以任何“标准”包装器安装方式手动安装了包装器。

Took the original Jetty-Service.conf file and changed: 更改了原始Jetty-Service.conf文件并进行了更改:

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

And added… 并添加了...

wrapper.app.parameter.1=org.eclipse.jetty.start.Main <-- Main class wrapper.app.parameter.2=../etc/jetty.xml wrapper.app.parameter.x=../etc/jetty-x.xml <--Any additional config files you wish to include… wrapper.app.parameter.y=../etc/jetty-y.xml wrapper.app.parameter.1 = org.eclipse.jetty.start.Main <-主类wrapper.app.parameter.2 = .. / etc / jetty.xml wrapper.app.parameter.x = .. / etc /jetty-x.xml <-您希望包括的任何其他配置文件…wrapper.app.parameter.y = .. / etc / jetty-y.xml

Seems to start fine and it seems to shutdown gracefully too. 似乎可以正常启动,并且似乎也可以正常关闭。

I had a problema running @crowne's code for install the service (I'm running Jetty 8.1.0). 我在运行@crowne的代码来安装服务时遇到了问题(我正在运行Jetty 8.1.0)。 Just needed to change -StartMode=Java --StopMode=Java to -StartMode=jvm --StopMode=jvm and remove ++JvmOptions=-XX:+CMSPermGenSweepingEnabled . 只需将-StartMode=Java --StopMode=Java更改为-StartMode=jvm --StopMode=jvm并删除++JvmOptions=-XX:+CMSPermGenSweepingEnabled

After that I created a create_jetty_service.bat at the jetty/bin folder and run the file from there: 之后,我在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

Remember to run cmd.exe as administrator to the command take effect. 记住要以管理员身份运行cmd.exe,命令才能生效。

If you are in a bit of a locked down environment and need to stay within the Microsoft provided tool set, then srvany , instsrv and sc are your friends. 如果您处于srvany环境中,并且需要使用Microsoft提供的工具集,那么srvanyinstsrvsc是您的朋友。 Unfortunately it often includes making registry edits. 不幸的是,它通常包括进行注册表编辑。 The nice thing is it's very flexible. 好处是它非常灵活。

Here's what I did recently to auto-start a Selenium Grid hub server. 这是我最近自动启动Selenium Grid Hub服务器的操作。


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

Open cmd window as admin and run: 以管理员身份打开cmd窗口并运行:

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

RegEdit RegEdit

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

Add a new key named Parameters Under that key, add 3 new String Values named: 添加一个名为Parameters的新键在该键下,添加3个新的String Values,名称为:

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

Credit for this goes to http://codeforjava.blogspot.com/2010/12/run-java-application-as-windows-nt.html 为此,请访问http://codeforjava.blogspot.com/2010/12/run-java-application-as-windows-nt.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM