jetty下载地址:

https://www.eclipse.org/jetty/download.html


jetty的安装:

下载.tgz的包解压缩的指定目录后即可

例如:将jetty-distribution-9.4.6.v20170531.tar.gz包解压缩到/usr/local/jetty目录。

我们默认把jetty的根目录当成 $JETTY_HOME



jetty目录结构:

[root@localhostjetty01]#lltotal712drwxr-xr-x2rootroot4096Sep114:59bindrwxr-xr-x7rootroot4096Sep114:53demo-basedrwxr-xr-x3rootroot4096Sep114:53etc-rw-r--r--1rootroot198Sep116:19jetty01.statedrwxr-xr-x13rootroot4096Sep114:53lib-rw-r--r--1rootroot30012Sep114:53license-eplv10-aslv20.htmldrwxr-xr-x2rootroot4096Sep114:53logsdrwxr-xr-x19rootroot4096Sep114:53modules-rw-r--r--1rootroot6262Sep114:53notice.html-rw-r--r--1rootroot1637Sep114:53README.TXTdrwxr-xr-x2rootroot4096Sep114:53resources-rw-r--r--1rootroot5702Sep114:53start.ini-rw-r--r--1rootroot147725Sep114:53start.jar-rw-r--r--1rootroot483631Sep114:53VERSION.txtdrwxr-xr-x2rootroot4096Sep116:36webapps


目录、文件简介

LocationDescription

license-eplv10-aslv20.html

Jetty的许可文件

README.txt

有用的开始信息

VERSION.txt

版本信息

bin/

存放在Unix系统下运行的shell脚本

demo-base/

一个可运行包含示例web应用的Jetty服务器基目录

etc/

Jetty的配置文件

lib/

Jetty运行所必须的jar文件

logs/

日志

modules/

各个模块

notice.html

许可信息等

resources/

包含新增到classpath配置文件夹,如log4j.properties

start.ini

存放启动信息

start.jar

运行Jetty的jar

webapps/

一个用来存放运行在默认配置下的Jetty Web应用目录


重要的目录和文件:

bin/jetty.sh:jetty服务启动/停止脚本,主要有以下变量的配置

JAVA:设置java命令的绝对路径,即jdk的bin目录下的java命令的路径,如果没设置,则从PATH环境变量中查找;JAVA_OPTIONS:设置jvm参数;JETTY_HOME:jetty的安装目录,如果没有设置,则从调用该脚本的上下文环境中猜测;JETTY_BASE:jetty的base目录,即当前工程使用的jetty环境的根目录,如果没有设置,则与JETTY_HOME相同;JETTY_RUN:配置保存jettypid文件的路径,如果没有配置,根据以下顺序查找第一个可用目录:/var/run,/usr/var/run,JETTY_BASE,/tmp;JETTY_PID:pid文件路径,默认为:$JETTY_RUN/$NAME.pid(NAME变量表示启动jetty时,去掉扩展名的脚本名称);JETTY_ARGS:jetty参数,如配置端口号等:JETTY_ARGS=8080jetty.spdy.port=8443JETTY_USER:配置启动用户,如以nkcoder用户启动:JETTY_USER=nkcoder


jetty运行:

命令方式启动:

cd$JETTY_HOMEjava-jarstart.jar

这个命令能执行需要$JETTY_HOME下有start.ini文件,改文件中存放的是jetty服务启动信息

start.ini文件默认配置如下:

catstart.ini|egrep-v"^#|^$"--module=home-base-warning--module=ext--module=server--module=jsp--module=resources--module=deploy--module=jstl--module=websocket--module=http


通过上面的命令启动jetty后,在浏览器中输入http://localhost:8080访问jetty,出现以下报错页面


这是因为jetty启动时,会在$JETTY_HOME/webapps中找war包或者web应用的目录。而默认情况下$JETTY_HOME/webapps下没有web应用的war包和文件。所以提示404。


基础应用的例子:

cd$JETTY_HOME/demo-base/java-jar$JETTY_HOME/start.jar

访问http://localhost:8080此时可以看到一个Jetty的欢迎页面,页面上包含几个简单的例子,欢迎页面如下


来看下demo-base目录中的文件,同样有一个webapps目录。

#lldemo-base/total20drwxr-xr-x2rootroot4096Sep114:53etcdrwxr-xr-x3rootroot4096Sep114:53libdrwxr-xr-x2rootroot4096Sep114:53resourcesdrwxr-xr-x2rootroot4096Sep114:53start.ddrwxr-xr-x5rootroot4096Sep114:53webapps


jetty如何部署web应用的

把要部署的工程(war包、工程目录或者xml描述文件放到${JETTY_HOME}的webapps目录下即可;

需要注意的是:

jetty会对webapps目录下的几乎所有war包、目录、xml文件(有一些例外,如隐藏文件和.d结尾的目录等会被忽略)进行自动部署。

如果war包、目录和xml文件同名,则部署的顺序为xml文件 > war包 > 目录 。比如,webapps目录下有:rank.war,rank目录以及rank.xml,其中rank目录为rank.war解压后的目录,rank.xml中引用的是rank.war包或者rank目录,则此时,仅有xml文件被部署,这里成立的前提是同名,如果不同名,但它们是同一个工程,则会导致工程被重复部署,切记!


例如一个包含 WEB-INF/ 子文件夹的example/文件夹做为一个标准的web应用进行部署,否则就按静态资源部署,context路径为/example(访问路径: http://localhost:8080/example/);若文件夹名字为ROOT,则访问路径为/;若文件夹名字末尾为.d则此文件夹被忽略(除非被特殊的配置文件引用)

若一个文件example.war被部署在webapps下,则context路径为example/,如果名字为ROOT则访问路径为/,如果example.war文件和example/文件夹同时存在,只有war文件会被部署(这个文件会被当做一个没有被解压的目录来使用)

一个像example.xml的配置文件,若文件中是标准的配置信息,也会被部署,文件中必须包含context path,如果context path和example.xml同时存在,只有example.xml会被部署。

  如果你有一个标准的web应用,可以直接将其拷贝到webapps文件夹下进行热部署。


看下demo-base/webapps目录下的文件

#ls-lwebapps/total3624-rw-r--r--1rootroot986372Sep114:53async-rest.wardrwxr-xr-x3rootroot4096Sep114:53doc-rw-r--r--1rootroot533Sep114:53example-moved.xml-rw-r--r--1rootroot341Sep114:53README.TXTdrwxr-xr-x3rootroot4096Sep114:53ROOTdrwxr-xr-x2rootroot4096Sep114:53test.d-rw-r--r--1rootroot60716Sep114:53test-jaas.war-rw-r--r--1rootroot945Sep114:53test-jaas.xml-rw-r--r--1rootroot62949Sep114:53test-jndi.war-rw-r--r--1rootroot3430Sep114:53test-jndi.xml-rw-r--r--1rootroot517192Sep114:53test-spec.war-rw-r--r--1rootroot2456Sep114:53test-spec.xml-rw-r--r--1rootroot1012480Sep114:53test.war-rw-r--r--1rootroot4623Sep114:53test.xml-rw-r--r--1rootroot1018072Sep114:53xref-proxy.war

webapps中文件介绍:

ROOT/:这个文件夹包含各种静态资源。包含Jetty欢迎页面,默认访问路径为/test.d:一个包含附加配置文件的文件夹,被test.xml使用用来为test.war增加额外的配置test.xml:一个context配置文件,用来配置和部署test.war,包含上下文环境和test.d里面的配置附加的配置信息test.war:在test.xml里面配置的示例web程序async-rest.war:一个异步示例的web应用程序test-jaas.war:一个使用JAAS身份验证的web应用程序。test-jaas.xml:用来配置test-jaas.war的配置文件test-jndi.war:一个使用JNDI的示例应用test-jndi.xml:用来配置test-jndi.war的配置文件test-spec.war:一个使用注解,ServletContainerInitializers和Servlet3.0/3.1规范的示例应用test-spec.xml:用来配置test-spec.war的配置文件xref-proxy.war:使用代理的一个示例应用example-moved.xml:一个演示MovedContextHandler重定向使用的示例应用


总结:

demo-base/webapps目录下有很多同名的war包和xml文件比如:

test.war和test.xml ,test-jaas.war和test-jaas.xml

这两个文件可以看成是一组。jetty部署example.war包时,需要一个同名的example.xml文件,该文件保存war包的配置

一个简单的xml文件内容如下:

<Configureclass="org.eclipse.jetty.webapp.WebAppContext"><Setname="contextPath">/jenkins</Set><Setname="war"><SystemPropertyname="jetty.home"default="."/>/webapps/jenkins.war</Set><Getname="securityHandler"><Setname="loginService"><Newclass="org.eclipse.jetty.security.HashLoginService"><Setname="name">JenkinsRealm</Set><Setname="config"><SystemPropertyname="jetty.home"default="."/>/etc/realm.properties</Set></New></Set></Get></Configure>

contextPath配置的是访问web应用时的路径,上面配置的是/jenkins,所以访问该应用时,路径为

http://localhost:8080/jenkins/


下面以jetty9部署jenkins为例介绍jetty9使用配置

将jenkins.war拷贝到$JETTY_HOME/webapps目录下,创建jenkins.xml文件,配置如上面的文件。启动jetty服务即可。

#lltotal63180-rwxr-xr-x1rootroot64685923Sep116:04jenkins.war-rw-r--r--1rootroot642Sep116:26jenkins.xml-rw-r--r--1rootroot1412Sep114:53README.TXT


参考链接:

https://nkcoder.github.io/2014/06/18/jetty-deploy-help/

http://www.cnblogs.com/yiwangzhibujian/p/5832597.html