Jetty是一个开源项目,提供了HTTP Server,HTTP Client和Javax.servlet容器,这里(http://www.eclipse.org/jetty/)是它的官方网站,这里对它做一个基本的介绍,包括基本目录、启动方式和应用部署。

Jetty目录结构

下面是Jetty 9.10的发布版本包含的文件和文件夹,及其作用。

license-eplv10-aslv20.html
			Jetty的License文件
README.txt
			Jetty的基本信息和命令
VERSION.txt
			发布版本
bin/
			Jetty运行在Unix系统上的shell脚本
demo-base/
			一个Jetty的base文件夹,用于运行演示webapps的Jetty server
etc/
			Jetty的XML配置文件文件夹
lib/
			Jetty依赖的JAR文件
logs/
			请求日志
modules/
			module定义文件夹
notice.html
			License信息和免责条款
resources/
			附属资源的配置文件
start.d/
			*.ini文件,这些文件包含一些配置文件,在命令行中会被作为参数添加上去(看start.ini)
start.ini
			包含添加到实际的命令行中的参数(modules,properties和XML配置文件)
start.jar
			调用Jetty的Jar
webapps/
			默认的Jetty放置webapps的文件夹

这里做一个基本的了解,后面将详细讲述。

启动Jetty

Jetty的默认端口是8080,使用下面的命令启动:

	>cd $JETTY_HOME
	>java -jar start.jar

然后你能在浏览器中访问:http://localhost:8080

Demo Base

在9.1.0之后,Jetty不再部署任何demo web应用,因此要看演示,你需要从demo-base文件夹启动Jetty,如下:

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

打开浏览器,输入http://localhost:8080,你将看到一个欢迎页面和几个demo/test web应用。

创建新Jetty Base

上面描述的demo-base文件夹是一个jetty.base机制的一个例子,该机制在Jetty 9.1增加。Jetty base允许服务端实例的配置和web应用被分别地存储,以保证升级的影响降到最小。Jetty的默认配置基于两个属性:
         jetty.home:定义jetty分发的位置,包括他的libs,默认modules和默认XML文件(例如start.jar,lib,等等)
         jetty.base:定义一个jetty服务器的特定实例的位置,包括他的配置,logs和web应用(例如start.ini,start.d,logs和webapps)
jetty.home和jetty.base可以直接在命令行中指定,也可以通过环境变量使用,例如:

	>cd $JETTY_BASE
	>java -jar $JETTY_HOME/start.jar

这个跟随的命令创建了一个新的base文件夹,并激活了一个HTTP连接器和web应用部署者:

	>mkdir /tmp/mybase
	>cd /tmp/mybase
	>java -jar $JETTY_HOME/start.jar
	WARNING: Nothing to start, exiting ...

	Usage: java -jar start.jar [options] [properties] [configs]
       java -jar start.jar --help  # for more information
	>java -jar $JETTY_HOME/start.jar --add-to-startd=http,deploy
	http            initialised in ${jetty.base}/start.d/http.ini (created)
	server          initialised in ${jetty.base}/start.d/server.ini (created)
	deploy          initialised in ${jetty.base}/start.d/deploy.ini (created)
	MKDIR: ${jetty.base}/webapps
	server          initialised in ${jetty.base}/start.d/server.ini
	>java -jar $JETTY_HOME/start.jar
	2013-09-06 14:59:32.542:INFO:oejs.Server:main: jetty-9.1.0-SNAPSHOT
	2013-09-06 14:59:32.572:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:/tmp/mybase/webapps/] at interval 1
	2013-09-06 14:59:32.602:INFO:oejs.ServerConnector:main: Started ServerConnector@405a2273{HTTP/1.1}{0.0.0.0:8080}
	
	[...]

改变Jetty端口

你可以通过在命令行中设置jetty.port改变端口:

	>cd $JETTY_HOME/demo-base
	>java -jar start.jar jetty.port=8081

你可以将属性值添加到start.ini文件或者start.d/*.ini文件中。默认情况下,jetty定义jetty.port属性在start.d/http.ini文件中,可以被修改。

使用HTTPS启动

使用下面的方式可以激活https模块:

	>java -jar start.jar --add-to-startd=https
	https           initialised in ${jetty.home}/start.d/https.ini (created)
	ssl             initialised in ${jetty.home}/start.d/ssl.ini (created)
	server          enabled in     ${jetty.home}/start.ini
	resources       enabled in     ${jetty.home}/start.ini
	ext             enabled in     ${jetty.home}/start.ini
	>java -jar start.jar
	2013-09-06 13:52:43.326:INFO:oejs.Server:main: jetty-9.1.0
	...

--add-to-startd执行如下操作:
 1)创建https.ini文件激活和配置https连接器模块。https模块增加etc/jetty-https.xml文件到命令行中。
 2)创建start.d/ssl.ini文件激活和配置SSL keystore。ssl模块增加etc/jetty-ssl.xml文件到命令行。
 3)检查etc/keystore文件是否存在,如果不存在,则下载一个示范keystore文件。

更多的start.jar选项

start.jar的工作是解释命令行,start.ini和start.d是提供Java classpath和属性和配置文件列表。start.jar有许多的选项,你可以通过下面的命令看到:

	>java -jar start.jar --help

部署web应用

web应用部署在webapps文件夹,支持热部署,支持标准的WAR文件和Jetty配置文件,并遵循下面的约定:
 1)如果文件夹example/被部署,且包含一个WEB-INF/子文件夹,则它作为标准web应用部署,否则它作为静态目录上下文部署。上下文路径是/example(即:http://localhost:8080/example/),但如果文件夹名是ROOT(大小写敏感),则上下文路径是/。如果文件夹名以“.d”结束,则被忽略(但可以通过直接配置来使用)。
 2)文件example.war被作为标准web应用部署,上下文路径为/example(即:http://localhost:8080/example/)。如果文件名是ROOT(大小写敏感),则上下文路径为/。如果example.war和example/同时存在,则WAR被部署。
 3)一个XML文件example.xml被部署,配置通过XML文件定义,配置必须包含上下文路径。如果example.xml和example.war存在,仅XML被部署。
如果你有一个标准的web应用,你能通过拷贝它到webapps文件夹来热部署它到Jetty。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐