【问题标题】:Running Jetty 7 as Windows Service将 Jetty 7 作为 Windows 服务运行
【发布时间】:2010-01-19 15:08:57
【问题描述】:

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

【问题讨论】:

    标签: windows service jetty


    【解决方案1】:

    @glb,感谢您指出 apache commons-daemon Procrun。
    它在 Windows 7 64 位上非常适合我,这是我的设置方法。

    更多信息见

    • procrun 页面来自@glb 的链接
    • jetty 帮助屏幕 > 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  
    

    完成!

    【讨论】:

    • 感谢您提供的信息。只是为了让您知道:为了使其正常工作,我必须设置 JAVA_HOME 环境变量。
    • UI 特别有助于仔细检查正在使用的 Java 运行时。并确保在 System 环境变量中设置了 JAVA_HOME,而不是用户的。否则,这一切都适用于您,但不适用于服务。
    【解决方案2】:

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

    【讨论】:

      【解决方案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
      

      【讨论】:

      • 在我最初的测试中,如果 JSW 从 %JETTY_HOME% 启动(即将 JSW 配置、jar 和 DLL 放入 Jetty 安装目录),Jetty 似乎工作得最好。这样,如果 Jetty 查找与服务从预期位置运行的当前路径相关的配置设置。
      【解决方案4】:

      您可以从: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

      似乎开始正常,它似乎也优雅地关闭了。

      【讨论】:

        【解决方案5】:

        我在运行@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命令才能生效。

        【讨论】:

          【解决方案6】:

          您可以作为 Windows 服务运行 Jetty 可用于 exewrap。
          还分发了 Jetty Windows 服务一体化软件包。

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

          【讨论】:

            【解决方案7】:

            如果您处于一个封闭的环境中并且需要使用 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 => ${JAVA_HOME}/bin/java.exe
            • AppParameters => -jar selenium-server-standalone-2.42.2.jar -role hub
            • AppDirectory => C:\tools\selenium

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-05-29
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2023-03-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多