Running Jetty 7 as Windows Service

前端 未结 7 1772
孤独总比滥情好
孤独总比滥情好 2020-12-13 10:01

Did Jetty 7 drop support to run as a service using Java Service Wrapper? What options do I have now?

相关标签:
7条回答
  • 2020-12-13 10:31

    I had a problema running @crowne's code for install the service (I'm running Jetty 8.1.0). Just needed to change -StartMode=Java --StopMode=Java to -StartMode=jvm --StopMode=jvm and remove ++JvmOptions=-XX:+CMSPermGenSweepingEnabled.

    After that I created a create_jetty_service.bat at the jetty/bin folder and run the file from there:

    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.

    0 讨论(0)
  • 2020-12-13 10:36

    In the latest stable version of Java Service Wrapper (JSW 3.4.1) there's WrapperJarApp method of integration:

    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
    
    0 讨论(0)
  • 2020-12-13 10:42

    @glb, thanks for pointing out apache commons-daemon Procrun.
    Its working great for me on Windows 7 64 Bit, here's how I set it up.

    For more info see

    • procrun page as per link from @glb
    • jetty help screen > 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!

    0 讨论(0)
  • 2020-12-13 10:44

    You can get the src from: http://svn.codehaus.org/jetty/jetty/branches/jetty-7/jetty-win32/ and build it yourself.

    But I manually installed the wrapper as any “standard” wrapper installation.

    Took the original Jetty-Service.conf file and changed:

    wrapper.java.mainclass=org.mortbay.jetty.win32service.JettyServiceWrapperListener to 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

    Seems to start fine and it seems to shutdown gracefully too.

    0 讨论(0)
  • 2020-12-13 10:45

    You can run as a Windows service Jetty can be used to exewrap.
    Jetty Windows Service all-in-one packages are also distributed.

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

    0 讨论(0)
  • 2020-12-13 10:46

    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. 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.


    Copy srvany.exe into c:\tools\srvany\srvany.exe

    Open cmd window as admin and run:

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

    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:

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

    Credit for this goes to http://codeforjava.blogspot.com/2010/12/run-java-application-as-windows-nt.html

    0 讨论(0)
提交回复
热议问题