Skip to content

Latest commit

 

History

History
253 lines (193 loc) · 6.1 KB

File metadata and controls

253 lines (193 loc) · 6.1 KB

jetty

前言

Jetty是一个开源的项目,可以提供http服务端,客户端和javax.servlet服务的容器。下载地址:http://download.eclipse.org/jetty/

Jetty内容介绍

环境使用jetty的jdk版本为1.7,测试案例为9.2,参考文档为http://www.eclipse.org/jetty/documentation

jetty Versions

Version JVM Protocols Servlet JSP Status
9.3 1.8 HTTP/1.1 (RFC 7230), HTTP/2 (RFC 7540), WebSocket (RFC 6455, JSR 356), FastCGI 3.1 2.3 Stable
9.2 1.7 HTTP/1.1 RFC2616,javax.websocket, SPDY v3 3.1 2.3 Stable
8 1.6 HTTP/1.1 RFC2616, WebSocket RFC 6455, SPDY v3 3.0 2.2 Mature
7 1.5 HTTP/1.1 RFC2616, WebSocket RFC 6455, SPDY v3 2.5 2.1 Mature

Contents列表

位置 描述
license-eplv10-aslv20.html Jetty的许可证文件
README.txt 如何开始的使用说明文档
VERSION.txt 发行版信息
bin/ 运行Jetty的shell脚本所在目录
demo-base/ Jetty基础目录用来运行Jetty的演示程序
etc/ Jetty的xml配置目录
lib/ 运行Jetty的所有必须JAR所在目录
logs/ 请求日志目录
modules/ 模块定义目录
notice.html 许可证信息和例外
resources/ 配置扩展目录,需要激活包含此目录
start.d/ start.ini扩展目录
start.ini 添加命令行参数如:模块,属性,XML配置文件
start.jar jar启动Jetty
webapps Jetty默认配置运行webapps的目录

jetty.home与jetty.base区别

jetty.home

此选项主要定义jetty发行版自身一些属性,比如自身的libs,默认的模块,默认的XML配置文件(如start.jar,lib,etc)

jetty.base

此选项主要定义指定的jetty服务实例位置,配置文件,日志和web应用(如start.ini,start.d,logs and webapps)

启动演示案例小插曲:

Jetty版本对应JVM版本,演示案例则需要对应的java版本启动

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/eclipse/jetty/start/Main : Unsupported major.minor version 52.0

小直觉: 52.0 <=> jdk1.8  |  51.0 <=> jdk1.7

jetty直接启动应用方式

cd $JETTY_BASE

#指定端口,默认8080
java -jar $JETTY_HOME/start.jar jetty.http.port=8081

#Adding SSL for HTTPS & HTTP2
java -jar $JETTY_HOME/start.jar --add-to-startd=https,http2

#Changing the Jetty HTTPS Port
java -jar $JETTY_HOME/start.jar jetty.ssl.port=8444

#有用的help
java -jar $JETTY_HOME/start.jar --help

修改start.ini,指定配置参数,与后缀--等价,更方便些

## HTTP port to listen on
jetty.port=8081

----这个是读取当前目录下的start.ini,比如我们在Jetty目录修订为8081。
	进入demo-base,运行jetty,端口已然是演示实例下start.ini的设置。

虚拟主机配置,采用最简war方式,直接放在webapps

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
 
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
  <Set name="contextPath">/blah</Set>
  <Set name="war"><Property name="jetty.webapps"/>/webapps/blah.war</Set>
  <Set name="virtualHosts">
    <Array type="java.lang.String">
      <Item>333.444.555.666</Item>
      <Item>127.0.0.1</Item>
      <Item>www.blah.com</Item>
      <Item>www.blah.net</Item>
      <Item>www.blah.org</Item>
    </Array>
  </Set>
</Configure>

添加虚拟应用

1.根据应用jdk配置$JETTY_HOME/bin/jetty.sh

#JAVA可执行路径
JAVA=/web/jdk1.7.0_67/bin/java
CLASSPATH=/web/jdk1.7.0_67/lib:/web/jdk1.7.0_67/jre/lib

#JVM设置
JAVA_OPTIONS="$JAVA_OPTIONS -server -Xms512m -Xmx512m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:SurvivorRatio=16 -XX:MaxTenuringThreshold=5 -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSMaxAbortablePrecleanTime=500 -XX:+CMSClassUnloadingEnabled -verbose.gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:$JETTY_HOME/logs/gc.log -Djava.awt.headless=true"

#校验方式
$JETTY_HOME/bin/jetty.sh check

2.添加虚拟目录

方法1:在etc中添加

#在etc/jetty.conf中添加新的XML配置选项
eim-server.xml

#cat eim-server.xml
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">

<Configure id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection">
  <Call name="addHandler">
    <Arg>
      <New class="org.eclipse.jetty.webapp.WebAppContext">
	<Set name="contextPath">/eim-server</Set>
	<Set name="resourceBase">/web/eln4share/eim-server</Set>
      </New>
    </Arg>
  </Call>
</Configure>

方法2:在webapps中添加,效果等价,配置不同!

[webapps]$ cat eim-server.xml 
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">

<Configure id="Contexts" class="org.eclipse.jetty.webapp.WebAppContext">
	<Set name="contextPath">/eim-server</Set>
	<Set name="resourceBase">/web/eln4share/eim-server</Set>
</Configure>

3.应用下若是启用log4j.properties,注意日志路径

#这是相对路径
log4j.appender.dailyRoll.file=log/eim-server.log	

4.启动服务

bin/jetty.sh start