Jetty是一個(gè)開(kāi)源項(xiàng)目,提供了HTTP Server,HTTP Client和Javax.servlet容器,這里(http://www.eclipse.org/jetty/)是它的官方網(wǎng)站,這里對(duì)它做一個(gè)基本的介紹,包括基本目錄、啟動(dòng)方式和應(yīng)用部署。
Jetty目錄結(jié)構(gòu)
下面是Jetty 9.10的發(fā)布版本包含的文件和文件夾,及其作用。
- license-eplv10-aslv20.html
- Jetty的License文件
- README.txt
- Jetty的基本信息和命令
- VERSION.txt
- 發(fā)布版本
- bin/
- Jetty運(yùn)行在Unix系統(tǒng)上的shell腳本
- demo-base/
- 一個(gè)Jetty的base文件夾,用于運(yùn)行演示webapps的Jetty server
- etc/
- Jetty的XML配置文件文件夾
- lib/
- Jetty依賴的JAR文件
- logs/
- 請(qǐng)求日志
- modules/
- module定義文件夾
- notice.html
- License信息和免責(zé)條款
- resources/
- 附屬資源的配置文件
- start.d/
- *.ini文件,這些文件包含一些配置文件,在命令行中會(huì)被作為參數(shù)添加上去(看start.ini)
- start.ini
- 包含添加到實(shí)際的命令行中的參數(shù)(modules,properties和XML配置文件)
- start.jar
- 調(diào)用Jetty的Jar
- webapps/
- 默認(rèn)的Jetty放置webapps的文件夾
這里做一個(gè)基本的了解,后面將詳細(xì)講述。
啟動(dòng)Jetty
Jetty的默認(rèn)端口是8080,使用下面的命令啟動(dòng):
- >cd $JETTY_HOME
- >java -jar start.jar
然后你能在瀏覽器中訪問(wèn):http://localhost:8080。
Demo Base
在9.1.0之后,Jetty不再部署任何demo web應(yīng)用,因此要看演示,你需要從demo-base文件夾啟動(dòng)Jetty,如下:
- >cd $JETTY_HOME/demo-base/
- >java -jar ../start.jar
打開(kāi)瀏覽器,輸入http://localhost:8080,你將看到一個(gè)歡迎頁(yè)面和幾個(gè)demo/test web應(yīng)用。
創(chuàng)建新Jetty Base
上面描述的demo-base文件夾是一個(gè)jetty.base機(jī)制的一個(gè)例子,該機(jī)制在Jetty 9.1增加。Jetty base允許服務(wù)端實(shí)例的配置和web應(yīng)用被分別地存儲(chǔ),以保證升級(jí)的影響降到最小。Jetty的默認(rèn)配置基于兩個(gè)屬性:
jetty.home:定義jetty分發(fā)的位置,包括他的libs,默認(rèn)modules和默認(rèn)XML文件(例如start.jar,lib,等等)
jetty.base:定義一個(gè)jetty服務(wù)器的特定實(shí)例的位置,包括他的配置,logs和web應(yīng)用(例如start.ini,start.d,logs和webapps)
jetty.home和jetty.base可以直接在命令行中指定,也可以通過(guò)環(huán)境變量使用,例如:
- >cd $JETTY_BASE
- >java -jar $JETTY_HOME/start.jar
這個(gè)跟隨的命令創(chuàng)建了一個(gè)新的base文件夾,并激活了一個(gè)HTTP連接器和web應(yīng)用部署者:
- >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端口
你可以通過(guò)在命令行中設(shè)置jetty.port改變端口:
- >cd $JETTY_HOME/demo-base
- >java -jar start.jar jetty.port=8081
你可以將屬性值添加到start.ini文件或者start.d/*.ini文件中。默認(rèn)情況下,jetty定義jetty.port屬性在start.d/http.ini文件中,可以被修改。
使用HTTPS啟動(dòng)
使用下面的方式可以激活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執(zhí)行如下操作:
1)創(chuàng)建https.ini文件激活和配置https連接器模塊。https模塊增加etc/jetty-https.xml文件到命令行中。
2)創(chuàng)建start.d/ssl.ini文件激活和配置SSL keystore。ssl模塊增加etc/jetty-ssl.xml文件到命令行。
3)檢查etc/keystore文件是否存在,如果不存在,則下載一個(gè)示范keystore文件。
更多的start.jar選項(xiàng)
start.jar的工作是解釋命令行,start.ini和start.d是提供Java classpath和屬性和配置文件列表。start.jar有許多的選項(xiàng),你可以通過(guò)下面的命令看到:
- >java -jar start.jar --help
部署web應(yīng)用
web應(yīng)用部署在webapps文件夾,支持熱部署,支持標(biāo)準(zhǔn)的WAR文件和Jetty配置文件,并遵循下面的約定:
1)如果文件夾example/被部署,且包含一個(gè)WEB-INF/子文件夾,則它作為標(biāo)準(zhǔn)web應(yīng)用部署,否則它作為靜態(tài)目錄上下文部署。上下文路徑是/example(即:http://localhost:8080/example/),但如果文件夾名是ROOT(大小寫(xiě)敏感),則上下文路徑是/。如果文件夾名以“.d”結(jié)束,則被忽略(但可以通過(guò)直接配置來(lái)使用)。
2)文件example.war被作為標(biāo)準(zhǔn)web應(yīng)用部署,上下文路徑為/example(即:http://localhost:8080/example/)。如果文件名是ROOT(大小寫(xiě)敏感),則上下文路徑為/。如果example.war和example/同時(shí)存在,則WAR被部署。
3)一個(gè)XML文件example.xml被部署,配置通過(guò)XML文件定義,配置必須包含上下文路徑。如果example.xml和example.war存在,僅XML被部署。
如果你有一個(gè)標(biāo)準(zhǔn)的web應(yīng)用,你能通過(guò)拷貝它到webapps文件夾來(lái)熱部署它到Jetty。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。