- 浏览: 353953 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (73)
- Spring (4)
- Oracle (9)
- MySql (7)
- ibatis (2)
- Java (19)
- JavaScript (6)
- JQuery (0)
- MyEclipse (7)
- Linux (4)
- log4j (1)
- Jetty (3)
- SVN (4)
- JIRA (1)
- Spring JPA (0)
- Myeclipse8.5 集成 CheckStyle (1)
- weservice (0)
- Thread (0)
- Oracle Hibernate (1)
- Hibernate (1)
- 计算机组成原理 (1)
- memcached (0)
- Redis Memcached (1)
- Java RMI (1)
- 经验 (1)
- MyEclipse Maven (1)
- Git (1)
- MongoDB (1)
- velocity framemarker (1)
- Java Idea (0)
- Idea (1)
最新评论
-
Mr.lucky:
...
c3p0数据库连接池死锁问题
Jetty的首页地址是http://www.mortbay.org/jetty/
,点击Downloads
进入下载介绍页面,由于Jetty7之后,托管服务有Eclipse接替,所以jetty6.1之前(包含6.1)继续由Codehaus提供下载服务,在该页面的下方有如下信息:
就可以在本机的另外一个终端窗口来停止jetty服务。在linux系统中,你可以先将jetty进程转移到后台执行,然后再通过命令行来停止Jetty服务。
Jetty-8 eclipse | 1.6- | HTTP/1.1 RFC2616 | 3.0 | 2.2 | Development | Standardized async |
Jetty-7 eclipse | 1.5- | HTTP/1.1 RFC2616 | 2.5 | 2.1 | Almost stable | org.eclipse.jetty |
Jetty-6.1 | 1.4-1.6 | HTTP/1.1 RFC2616 | 2.5 | 2.1 or 2.0 | Stable | Async SSL, AJP, cometd, testing |
Jetty-6 | 1.4-1.5 | HTTP/1.1 RFC2616 | 2.5 | 2.1 or 2.0 | Deprecated | Continuations, IOC, NIO, dynamic buffers, smaller, faster, better |
Jetty-5.1 | 1.2-1.5 | HTTP/1.1 RFC2616 | 2.4 | 2.0 | Stable | J2EE 1.4 Compliance tested, optimizations, geronimo integration. |
Jetty-5.0 | 1.2-1.4 | HTTP/1.1 RFC2616 | 2.4 | 2.0 | Deprecated | Schema, JettyPlus |
Jetty-4.2 | 1.2-1.4 | HTTP/1.1 RFC2616 | 2.3+ | 1.2 | Mature | JettyPlus |
Jetty-4.1 | 1.2-1.4 | HTTP/1.1 RFC2616 | 2.3 | 1.2 | Deprecated | JAXP1.1, AJP13(mod_jk) |
Jetty-4.0 | 1.2 | HTTP/1.1 RFC2616 | 2.3 | 1.2 | Deprecated | |
Jetty-3.1 | 1.2 | HTTP/1.1 RFC2068 | 2.2 | 1.1 | Ancient | JMX |
Jetty-3.0 | 1.2 | HTTP/1.1 RFC2068 | 2.2 | 1.1 | Fossilized | |
Jetty-2.4 | 1.1 | HTTP/1.0 RFC1945 | 2.1 | 1.0 | Legendary | |
Jetty-1.0 | 1.0 | HTTP/1.0 RFC1945 | - | - | Mythical |
本书讨论的Jetty版本是6.1,也是目前使用最多的稳定版本,我们到http://dist.codehaus.org/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
我们下载24M大小的
jetty-6.1.22.zip文件,另外一个文件有5M是因为只包含了Jetty源码和实例源码,jetty-6.1.22.zip文件包包含了
api文档,实例代码、jetty源码、发行Jar文件、各操作系统下的启动脚本和其他部分依赖包。也许你会有疑问,我之前介绍Jetty的时候说Jetty体积非常小,是的没错!Jetty核心文件的大小只有约700K!
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 etc/jetty.xml |
提示:关于如何执行java的jar文件请查找其他资料。
start.jar 后面内容是传递给start.jar的参数,多个参数用空格隔开。
参数内容可以有以下几种:
- --help 查看帮助信息
- --stop 停止服务,下节中会讲到
- --version 查看当前jetty版本信息
- 其他:作为Jetty服务配置文件
我们看到上条命令指定参数内容为etc/jetty.xml,它实际指向一个服务配置文件 ,该文件是用来设置jetty服务启动的系统配置信息。比如监听端口,发布某个目录下面的web应用,jndi的配置等等,这些将在后续章节详细描述。当然服务配置文件 可以是多个,比如:
java -jar start.jar etc/jetty.xml etc/jetty-plus.xml |
这条命令就指定了两个服务配置文件
,etc/jetty.xml和etc/jetty-plus.xml。
在后续的章节中术语“服务配置文件
”就是指的这些文件。
使用浏览器打开地址 http://localhost:8080/
,你将会看到jetty的默认示例站点。
2.3.2 停止服务
在刚才启动jetty的终端窗口里面按住ctrl-c键即可。
不过你可以这样来启动
java
-DSTOP.PORT=8009 -DSTOP.KEY=secret -jar
start.jar
|
jetty启动后会在本地监听你指定的端口8009,并将在验证下次关闭命令的密码secret。现在再通过命令:
java -DSTOP.PORT=8009 -DSTOP.KEY=secret -jar start.jar --stop |
哦,看了上面的介绍你或许以为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 在启动过程中都做了哪些操作:
- 自动设置正确的 jetty home目录
- 根据JDK版本配置classpath,比如jdk1.5版本之前的版本只能使用jsp2.0规范所需的jar包
- 根据设定的classpath,构建好一个类加载器。再根据设定的main class来调用指定main class的main方法
由此可见start组件是相当独立的组件,甚至我们可以在自己的项目里面单独使用该组件控制程序的启动。
start.config语法
Jetty
start是由一个名叫start.config的配置文件控制的,这个文件存在在
start.jar里面,路径是org/mortbay/start/start.config。熟悉
这个配置文件的内容会对jetty作为服务器的启动过程有更好的了解。最重要的是我们知道jetty的classpath的设置和如何通过设置系统变量来把外部类路径增加到jetty中。
start.config的格式是每一行一条指令,如果以#开头则为注解行。指令的后面是执行条件,如果条件不符合则忽略。
指令有如下几种情况:
- 以.path结尾: 如果.path前面的字符串存在且长度大于0,则将该类路径加入到系统类路径中
- 包含 “=” : 执行System.setProperty(property,value)调用,“=”左边为property,右边为value
- 以.class结尾:如果".class"前面有值的话,就设定为Main class
- 以.xml结尾: 如果指定的xml文件存在的话就作为jetty服务的启动配置文件之一
- 以/*结尾: 指定目录下面的所以jar或者zip文件,被加入到classpath中
- 以/**结尾: 指定递归该 目录下面的所以jar或者zip文件,被加入到classpath中
- 以/结尾: 指定的目录作为classpath的一部分
- 其他: 作为一个文件加入到classpath中
关于条件:
- "<",">"," <=",">=","==","!=" 是条件的比较操作符,从左到右执行
- exists 检测紧跟着后面的文件是否存在
- available 检测紧跟着后面的class是否存在
- !表示非;always表示true
- 变量nargs表示传递给start.jar的参数数量
- 变量java 表示java版本
其他规则:
- 所有 的指令按行从上到下执行
- 如果一个文件或者目录由于条件被否决,没有被加入到类路径中,那么即使后续指令中包含了该文件或者目录,那么同样不会被加入到 类路径中
- 指令或者条件中, $(...) 表示获取系统属性,即一次System.getProperty()调用。如$(jetty.class.path).path指令,当系统属性“jetty.class.path”没有设置,那么运行时实际指令的值位 “.path”。如果设置系统属性“jetty.class.path”的值为"/usr/local/jarlib",那么运行时实际指令值为 "/usr/local/jarlib.path"
start.config文件
$(jetty.class.path).path
always
$(jetty.lib)/**
exists
$(jetty.lib)
# Try different
settings of jetty.home until the jetty.jar is
found.
jetty.home=.
! exists
$(jetty.home)/start.jar
jetty.home=..
! exists
$(jetty.home)/start.jar
jetty.home=/home/jetty
! exists
$(jetty.home)/start.jar
jetty.home=/C:/jetty
! exists
$(jetty.home)/start.jar
jetty.home=.
! exists
$(jetty.home)/start.jar
# The main class to
run
org.mortbay.xml.XmlConfiguration.class
$(start.class).class
# The default
configuration files
$(jetty.home)/etc/jetty.xml
nargs == 0
# Set the jetty
classpath
$(jetty.home)/lib/*
always
# Set the classpath
for the supporting cast
$(jetty.home)/lib/jsp-2.1/*
java >= 1.5
$(jetty.home)/lib/jsp-2.0/*
! available org.apache.jasper.servlet.JspServlet
$(jetty.home)/lib/management/*
$(jetty.home)/lib/management/mx4j/*
java < 1.5
$(jetty.home)/lib/naming/*
$(jetty.home)/lib/plus/*
$(jetty.home)/lib/xbean/*
$(jetty.home)/lib/wadi/*
$(jetty.home)/lib/grizzly/*
$(jetty.home)/lib/annotations/*
java >= 1.5
$(jetty.home)/lib/jre1.5/**
java >=
1.5
# Recursively add
all jars and zips from the ext lib
$(jetty.home)/lib/ext/**
always
# Try some standard
locations for anything missing.
/usr/share/java/ant.jar
! available
org.apache.tools.ant.Main
# Add a resources
directory if it is there
$(jetty.home)/resources/
|
2.4我们可以学到什么
2.5 Windows系统下启动和关闭控制
jetty利用Win32Wrapper工具(http://wrapper.tanukisoftware.org
)使得在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启动的一个启动配置文件
- 指向一个目录的路径:如果该目录存在,则目录下的所有.xml的文件会被作为启动配置文件
如果不存在该文件,jetty.sh将会使用默认值 :
“ ${JETTY_HOME}/etc/jetty-logging.xml ${JETTY_HOME}/etc/jetty.xml ”
/etc/default/jetty 、/etc/default/jetty6 和 $HOME/.jettyrc
若任何一个文件存在,那么jetty.sh文件执行时都会执行它。我们可以在这些文件中配置系统变量。
转自:http://blog.sina.com.cn/s/blog_4b81125f0100mikb.html
相关推荐
在Linux环境下安装Jetty服务器是一项常见的任务,尤其对于开发者和系统管理员来说。Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,广泛用于处理HTTP请求,支持Web应用程序的部署和管理。下面将详细介绍...
本文将详细介绍Jetty的安装过程以及如何使用它。 **1. 安装Jetty** 首先,你需要从Jetty的官方网站下载最新的Jetty发行版。通常,发行版会包含一个解压即用的压缩包。例如,你可以访问`...
本压缩包包含了不同平台——windows以及linux最新的tomcat版本,(包含:tomcat-5.5.36、tomcat-6.0.37、tomcat-7.0.47)。 和jetty-distribution-9.0.6.v20130930。 供java web开发人员去下载
总之,Eclipse Jetty插件是开发和测试Java Web应用的得力助手,通过离线安装,即使在网络条件不佳的情况下也能方便地使用。它的便捷性、灵活性和强大的调试能力使得开发者能更高效地进行Web应用的开发工作。只需简单...
Jetty 是一个开源的servlet容器,它为...Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。
Jetty是一款轻量级、高性能的Java Web服务器和...以上是安装和使用Jetty的基本步骤,对于初学者来说,理解这些概念和操作是掌握Jetty的关键。随着经验的增长,你会发现在Jetty中部署和管理Web应用非常灵活且高效。
Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。(Jetty是一个开源的软件,可以作为HTTP...
含 过程介绍详细文本、源码(去除公司业务)、maven生成的压缩包。 一开始接到这个命题任务的时候,完全不知道怎么办,网上也没找到什么资料。现整理一下上传看看能不能帮到别人,顺便赚点积分。...
**三、安装 Jetty Runner 插件** 1. 打开 IntelliJ IDEA,进入 "File" 菜单,选择 "Settings"(Windows/Linux)或 "Preferences"(macOS)。 2. 在设置界面,点击 "Plugins",然后选择 "Marketplace" 栏目。 3. 在...
- **下载与安装**:提供Jetty的下载地址和简单安装步骤,包括Windows和Linux下的操作。 - **启动与停止**:通过java命令快速启动和停止Jetty服务,以及使用start.jar的深入解析。 - **Windows和Linux的启动关闭...
在Linux环境下,通常通过Shell脚本来控制Jetty的启动和关闭,还需要注意的是Linux下的权限设置和环境变量配置。 - **2.6.1 系统变量的设置**: 如`JAVA_HOME`和`JETTY_HOME`。 - **2.6.2 命令参数**: 可以通过命令行...
- 为了保持系统整洁,通常会将Java安装在 `/usr/lib/jvm` 目录下,使用`sudo mv`命令将其移动至此。 4. **配置环境变量** - 打开或创建`~/.bashrc`或`~/.bash_profile`文件(根据你的Shell类型),编辑器如`nano`...
对于Windows用户,还可以选择使用Jetty的安装程序进行安装。 **2.3 使用java命令启动** - **2.3.1 快速启动**:可以通过执行`java -jar start.jar`来快速启动Jetty服务。 - **2.3.2 停止服务**:通过`java -jar ...
本实例大全将全面解析Jetty在不同场景下的使用,帮助你深入理解和掌握Jetty的特性。 1. **文件资源处理**: Jetty允许直接处理静态文件,如HTML、CSS、JavaScript等。通过`WebAppContext`或`ResourceHandler`,...
- **连接器技术**:Jetty支持多种连接器,如NIO(非阻塞I/O)、EPOLL(Linux下高效I/O)等,适应不同场景下的性能需求。 - **WebSocket支持**:Jetty很早就支持WebSocket协议,提供了全面的API和工具,方便开发实时...
- **jetty.sh**:这是一个启动脚本,用于在Unix/Linux环境下启动Jetty服务器。 - **run**:可能包含的是启动和配置Jetty服务器的相关脚本或配置文件。 - **patches**:此目录可能包含针对该版本的修复补丁或者...
4. **线程模型**:Jetty采用高效的线程模型,如NIO(非阻塞I/O)或EPOLL(在Linux上),以提高并发处理能力,这对于高流量的Web应用至关重要。 5. **WebSocket支持**:如果lib目录包含websocket相关的JAR,例如...
8. **连接器**: Jetty支持多种类型的连接器,如NIO(非阻塞I/O)和EPOLL(用于Linux系统的高效I/O),以适应不同的操作系统和网络环境。 9. **模块化设计**: Jetty的模块化结构使得只加载需要的组件成为可能,从而...