jetty8使用部署指南


jetty是什么

Jetty是Java领域另一个出色的Web服务器,它同样也是开源的。与tomcat不同的是它可作为一个嵌入式服务器。也就是说,如果我们在应用中加入jetty的核心jar文件,应用即可对外提供http服务。它同时也是平台无关的java web服务器,既可以在Windos平台上运行,也可以在Linux平台上运行。

可以登录站点下载Jetty的最新版本。下载的zip文件也是与平台无关的压缩包,不管是windows还是Linux都可使用。

下载jetty

下载jetty

把下载的包解压到任意目录,本文使用D盘

运行jetty的几种方式

1.最方便的就是直接执行java -jar命令

d:  
cd jetty  
java -jar start.jar  

如果希望通过start.jar停止,则在启动的时候需要指定STOP.PORT和STOP.KEY两个参数,且启动和停止时,两个参数的值必须匹配,如:

$ java -jar start.jar STOP.PORT=50001 STOP.KEY=cuss
$ java -jar start.jar STOP.PORT=50001 STOP.KEY=cuss--stop

2.做成Windows系统服务启动

  • 已编译好的 Apache Commons Daemon Windows 版下载 ,Apache Commons Daemon的使用可以参考这里 将压缩包里面的prunsrv.exe复制到D:\jetty8.1.17。

  • 在JETTYHOME目录下新建jetty_service.bat

prunsrv install JettyService --DisplayName="Jetty8 Service" --JavaHome="D:\Java\jdk1.6.0_21" --Startup=auto ++JvmOptions=-Djetty.home=D:\jetty8.1.17 ++JvmOptions=-Djetty.logs=D:\jetty8.1.17\logs\ ++JvmOptions=-DSTOP.PORT=50001 ++JvmOptions=-DSTOP.KEY=cuss --Install=D:\jetty8.1.17\prunsrv.exe ++StartMode=java --StopMode=java --Classpath=D:\jetty8.1.17\start.jar --StartClass=org.eclipse.jetty.start.Main --StopClass=org.eclipse.jetty.start.Main --StopParams=--stop  

上面的代码保持在一行

  • 运行上面的脚本之后,可以使用启动命令: prunsrv.exe //TS//Jetty8 Service或者 net start Jetty8 Service启动服务,也可以在服务管理那里启动

  • 还可以使用下面这个命令删除服务:prunsrv.exe //DS//Jetty8 Service

jetty配置上下文路径

jetty默认将webapps目录下的工程名作为context path,我们可以通过下面的方式修改jetty的配置

1.在web工程的WEB-INF目录下添加jetty-web.xml文件

<?xml version="1.0"  encoding="UTF-8"?>  
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">

<Configure class="org.eclipse.jetty.webapp.WebAppContext">  
  <Set name="contextPath">/cki-stat-web</Set>
</Configure>  

2.在D:\jetty8.1.17\contexts目录下面新增一个xx.xml配置文件

<?xml version="1.0"  encoding="UTF-8"?>  
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">

<Configure class="org.eclipse.jetty.webapp.WebAppContext">

  <Set name="contextPath">/</Set>
  <Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/test.war</Set>

  <Set name="extractWAR">true</Set>
  <Set name="copyWebDir">false</Set>
  <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
  <Set name="overrideDescriptor"><SystemProperty name="jetty.home" default="."/>/contexts/test.d/override-web.xml</Set>

  <Get name="securityHandler">
    <Set name="loginService">
      <New class="org.eclipse.jetty.security.HashLoginService">
        <Set name="name">Test Realm</Set>
        <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>          
      </New>
    </Set>
    <Set name="authenticator">
      <New class="org.eclipse.jetty.security.authentication.FormAuthenticator">
        <Set name="alwaysSaveUri">true</Set>
      </New>
    </Set>
    <Set name="checkWelcomeFiles">true</Set>
  </Get>

</Configure>  

jetty8升级到jetty9之后需要修改jetty-web.xml文件配置

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">

<!--  
This is the jetty specific web application configuration file.  When starting  
a Web Application, the WEB-INF/web-jetty.xml file is looked for and if found, treated  
as a org.eclipse.jetty.server.server.xml.XmlConfiguration file and is applied to the  
org.eclipse.jetty.servlet.WebApplicationContext objet  
-->

<Configure class="org.eclipse.jetty.webapp.WebAppContext">  
  <Call name="prependServerClass"><Arg>-org.eclipse.jetty.util.</Arg></Call>
  <Call name="prependServerClass"><Arg>-org.eclipse.jetty.servlets.</Arg></Call>
  <Get class="org.eclipse.jetty.util.log.Log" name="rootLogger">
    <Call name="warn"><Arg>cki-stat-we webapp is deployed. Please NOTICES USE IN PRODUCTION!</Arg></Call>
  </Get>
  <Set name="contextPath">/cki-stat-web</Set>
</Configure>  

bbear

继续阅读此作者的更多文章