2.1 下载
Jetty
的首页地址是http://www./jetty
/
,点击 Downloads
进入下载介绍页面,由于Jetty7之后,托管服务有Eclipse接替,所以jetty6.1之前(包含6
.1)继续由Codehaus提供下载服务,在该页面的下方有如下信息:
本书讨论的Jetty
版本是6
.1,也是目前使用最多的稳定版本,我们到http://dist./jetty
/jetty
-6
.1.22/
下载6
.1系列最新的6
.1.22版本:
jetty
-6
.1.22-src.zip
16-Nov-2009 23:04 5.7M
jetty
-6
.1.22.zip
16-Nov-2009 23:10 24M
2.2 安装 要运行Jetty
的首要条件当然是需要安装
JDK了,建议使用j2se 1.5以上的版本,关于JDK或者JRE的安装,为了环保这里就不再花费篇章介绍了,请参考其他网络资料。
其实Jetty
所谓的安装过程也就是将下载的文件解压到指定的目录,然后根据不同的操作系统来配置环境变量而已。
以后讲解如何从maven源码编译等。
2.3 使用java命令启动 只要在支持j2se的平台的操作系统下,jetty
都可以运行。所以我们先介绍jetty
提供的跨平台的服务启动方式。
2.3.1 快速启动 打开控制台,定位到jetty
的安装目录,执行命令:
提示:关于如何执行java的jar文件请查找其他资料。
start.jar 后面内容是传递给start.jar的参数,多个参数用空格隔开。
参数内容可以有以下几种:
我们看到上条命令指定参数内容为etc/jetty .xml,它实际指向一个 服务配置文件 ,该文件是用来设置jetty 服务启动的系统配置信息。比如监听端口,发布某个目录下面的web应用,jndi的配置等等,这些将在后续章节详细描述。当然 服务配置文件 可以是多个,比如:
这条命令就指定了两个 服务配置文件
,etc/jetty
.xml和etc/jetty
-plus.xml。
在后续的章节中术语“ 服务配置文件
”就是指的这些文件。
使用浏览器打开地址 http://localhost:8080/ ,你将会看到jetty
的默认示例站点。
2.3.2 停止服务 在刚才启动jetty
的终端窗口里面按住ctrl-c键即可。
不过你可以这样来启动
jetty
启动后会在本地监听你指定的端口8009,并将在验证下次关闭命令的密码secret。现在再通过命令:
哦,看了上面的介绍你或许以为jetty
启动和关闭是如此麻烦,一点也不符合Jetty
小巧玲珑的气质。其实Jetty
为我们准备了各个操作系统中快捷的方式。不过记住不管何种方式最终都是通过start.jar来启动jetty
服务的。
2.3.3 start.jar深入探讨 初学者可以先跳过本节。本节讨论start.jar模块的作用和细节。start.jar让jetty
各个不同的组件联合起来工作,使得jetty
看上去像一个服务器软件,同时start.jar也不过是jetty
的其中一个组件而已。了解start.jar工作原理后,我们就可以知道#jetty_home/lib下面那么多文件夹下面的jar文件是如何配被选择性地加入到classpath中去的。
Jetty
start 组件提供了跨平台的启动方式。 通过启动命令 java -DDEBUG=true -jar start.jar [jetty
.xml ... ] 可以看到启动过程的debug日志信息。
看看Jetty
start 在启动过程中都做了哪些操作:
由此可见start组件是相当独立的组件,甚至我们可以在自己的项目里面单独使用该组件控制程序的启动。
start.config语法 Jetty
start是由一个名叫start.config的配置文件控制的,这个文件存在在
start.jar里面,路径是org/mortbay/start/start.config。熟悉
这个配置文件的内容会对jetty
作为服务器的启动过程有更好的了解。最重要的是我们知道jetty
的classpath的设置和如何通过设置系统变量来把外部类路径增加到jetty
中。
start.config的格式是每一行一条指令,如果以#开头则为注解行。指令的后面是执行条件,如果条件不符合则忽略。
指令有如下几种情况:
关于条件:
其他规则:
start.config文件
2.4我们可以学到什么2.5 Windows系统下启动和关闭控制 jetty
利用Win32Wrapper工具(http://wrapper.
)使得在window系统上可以以控制台或者Window服务的方式运行jetty
程序,使用起来非常方便。
在 $jetty_home/bin目录下有如下几个相关文件:Jetty
-Service.exe , jetty
-service.conf。双击Jetty
-Service.exe 文件,即可以控制台的方式来运行jetty
了。jetty
-service.conf 显然是配置文件了,一会详细介绍。
(以后我们用 $jetty_home来表示Jetty
的安装目录)
注册Windows服务 打开命令行,转到 $jetty_home/bin 目录,执行命令:
E:/jetty
-6
.1.22/bin>Jetty
-Service.exe --install jetty
-service.conf
wrapper | Jetty6-Service installed.
启动服务 执行命令: Jetty
-Service.exe --start jetty
-service.conf
停止服务 执行命令:Jetty
-Service.exe --stop jetty
-service.conf
注销服务 执行命令:Jetty
-Service.exe --remove jetty
-service.conf
你在成功注册Windows服务后,可以修改服务让其随系统自动启动。
jetty -service.conf 配置文件wrapper.java.classpath.1=../lib/win32/*.jar wrapper.java.classpath.2=../lib/*.jar
wrapper.java.classpath.3=../start.jar
wrapper.java.library.path.1=../lib/win32/
#wrapper.java.additional.n可以设置jvm参数
wrapper.java.additional.1=-Djetty.home=../ #设置系统属性jetty
.home,指定jetty
根目录
wrapper.java.additional.2=-Djetty.logs=../logs #设置系统属性jetty
.logs
wrapper.java.initmemory=3 #jvm初始内存大小
wrapper.java.maxmemory=64
#jvm内存大小
wrapper.java.mainclass=org.mortbay.jetty
.win32service.JettyServiceWrapperListener
#wrapper.app.parameter.n可以设置应用程序参数,及 -jar start.jar 后面的参数
#例如 wrapper.app.parameter.1=../etc/jetty
.xml ../etc/jetty
-ajp.xml
wrapper.app.parameter.1=../etc/jetty
.xml
wrapper.console.format=PM
wrapper.console.loglevel=INFO
wrapper.logfile=../logs/jetty
-service.log #输出到System.out到内容将同时被记录在该文件
wrapper.logfile.format=LPTM
wrapper.logfile.loglevel=INFO
wrapper.logfile.maxsize=0 #jetty
-service.log文件的最大尺寸,0表示不限制
wrapper.logfile.maxfiles=0 #当限制文件大小时,允许存在的最多文件个数
wrapper.syslog.loglevel=NONE
wrapper.ntservice.name=Jetty
wrapper.ntservice.displayname=Jetty6-Service
wrapper.ntservice.description=Jetty
is an open-source, standards-based, full-featured web server implemented entirely in java
wrapper.ntservice.starttype=AUTO_START
wrapper.ntservice.interactive=false
#Win32Wrapper中定义一个触发器,当控制抛出OutOfMemoryError错误,则重启Jetty
服务
wrapper.filter.trigger.1=java.lang.OutOfMemoryError
wrapper.filter.action.1=RESTART
2.6 Linux系统下启动和关闭控制 在$jetty_home/bin目录下,Jetty
为我们提供了一个名为jetty
.sh的shell脚本文件,在linux环境下我们用这命令 ./jetty
.sh start 和 .jetty
.sh stop 命令来启动和关闭jetty
。jetty
.sh在启动Jetty
后,将jvm的系统进程ID保存在一个$JETTY_RUN/jetty
.pid的文件里面,然后在收到stop命令后读取pid来关闭相应进程。
在jetty
.sh里面还可以定制变量来控制jetty
,如指定JAVA_HOME目录、指定jvm最大内存、指定pid文件的位置等。
2.6 .1 系统变量的设置提示:在编辑变量的时候“=”两边千万不要有空格。
下面逐个介绍各变量的作用:
JAVA_HOME 指定Java安装目录。当你需要指定特定位置的jdk或者jetty
搜索不到java安装目录时,需要设定该变量。
例如: JAVA_HOME=/usr/local/java/jdk1.5.0_10/
JAVA 执行java命令。默认值为 $JAVA_HOME/bin/java。一般不需要设置。
JAVA_OPTIONS JVM的可选参数。你可以利用这个选项配置内存大小、系统变量等等其他参数,这个变量非常有用。
例如:JAVA_OPTIONS="-Xmn128M -Xms256M -Xmx1024M
-Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider"
JETTY_RUN jetty
.pid文件的存放目录。默认值为 /var/run, /usr/var/run 或 /tmp 三者之一
。如果你需要在一台服务器上启动多个安装目录下的jetty
,那么必须设定该变量以避免共享同一pid文件而造成冲突。建议设置为各个安装目录下面新建的run目录。
JETTY_PID pid文件的路径。默认值 $JETTY_RUN/jetty
.pid。一般不需要设置。
JETTY_ARGS 传递给
jetty
的参数。值 java -jar start.jar 后面的部分。
JETTY_HOME jetty
安装目录。虽然jetty
尝试搜索jetty
安装目录,但是我们还是建议设定该变量。
例如:
JETTY_HOME=/usr/local/jetty
-6
.1.22
在启动java时增加jvm 参数 “-Djetty.home=$JETTY_HOME” 。所以在Linux环境下,start.jar的自动搜索jetty_home的动作会被取消。
JETTY_USER 如设定该值,那么将以该用户的身份启动jetty
JETTY_PORT jetty
服务器监听端口。如果设定该值,那么在启动java时增加jvm 参数 “-Djetty.port=$JETTY_PORT” 。
在 jetty
启动配置文件里,<Set name="Port"><SystemProperty name="jetty
.port" default="8080"/></Set>这个语句将会使用我们这里指定的端口值。
2.6 .2 命令参数 系统控制台中,跳转到 $jetty_home/bin目录下,输入“ ./jetty
.sh start”,其中start为命令参数,现在介绍几个常用命令参数
start启动jetty 服务
stop
停止jetty 服务 restart重启jetty 服务supervise
挂起服务
check
显示当前jetty
实例运行时所使用的变量参数,可以用来查看变量是否设置正确。
显示结果实例:
node-189 bin # ./jetty
.sh check
Checking arguments to Jetty
:
JETTY_HOME = /usr/local/jetty
-6
.1.15
JETTY_CONF =
JETTY_RUN = /var/run
JETTY_PID = /var/run/jetty
.pid
JETTY_PORT =
JETTY_LOGS =
CONFIGS = /usr/local/jetty
-6
.1.15/etc/jetty
-logging.xml /usr/local/jetty
-6
.1.15/etc/jetty
.xml
JAVA_OPTIONS = -Djetty.home=/usr/local/jetty
-6
.1.15 -Djava.io.tmpdir=/tmp
JAVA = /usr/local/java/jdk1.5.0_10/bin/java
CLASSPATH = /usr/local/java/jdk1.5.0_10/lib:/usr/local/java/jdk1.5.0_10/jre/lib
RUN_CMD = /usr/local/java/jdk1.5.0_10/bin/java -Djetty.home=/usr/local/jetty
-6
.1.15 -Djava.io.tmpdir=/tmp -jar /usr/local/jetty
-6
.1.15/start.jar /usr/local/jetty
-6
.1.15/etc/jetty
-logging.xml /usr/local/jetty
-6
.1.15/etc/jetty
.xml
Jetty
running pid=24573
2.6 .3 相关配置文件/etc/jetty .conf 如果该文件存在,那么该文件的内容会被解析用来设定jetty
启动配置文件
(configurations),规则如下:
如果不存在该文件,jetty .sh将会使用默认值 : “ ${JETTY_HOME}/etc/jetty -logging.xml ${JETTY_HOME}/etc/jetty .xml ” /etc/default/jetty 、/etc/default/jetty6 和 $HOME/.jettyrc若任何一个文件存在,那么jetty .sh文件执行时都会执行它。我们可以在这些文件中配置系统变量。 |
|