首页 > 代码库 > Jetty学习一:基本功能介绍

Jetty学习一:基本功能介绍

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 serveretc/			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的Jarwebapps/			默认的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。