Jetty的安裝、配置和使用
Jetty 是一個開源的servlet容器,它為基於Java的web內容,例如JSP和servlet提供執行環境。Jetty是使用Java語言編寫的,它的API以一組JAR包的形式釋出。開發人員可以將Jetty容器例項化成一個物件,可以迅速為一些獨立執行(stand-alone)的Java應用提供網路和web連線。(Jetty是一個開源的軟體,可以作為HTTP服務,javax.servlet的容器。)
配置jetty server的步驟:
建立server
配置connector
配置handler
配置servlet
啟動server
1. 安裝maven
Maven是基於專案物件模型(POM),可以通過一小段描述資訊來管理專案的構建,報告和文件的軟體專案管理工具.
如果你已經有十次輸入同樣的Ant targets來編譯你的程式碼、jar或者war、生成javadocs,你一定會自問,是否有一個重複性更少卻能同樣完成該工作的方法。Maven便提供了這樣一種選擇,將你的注意力從作業層轉移到專案管理層。Maven專案已經能夠知道如何構建和捆綁程式碼,執行測試,生成文件並宿主專案網頁.
(1)下載將jdk加壓後放到/usr/local目錄下:
[root@master ~]#chmod 755 jdk-6u5-Linux-x64.bin
[root@master ~]# ./jdk-6u5-linux-x64.bin
[root@master ~]#mv jdk1.6.0_05 /usr/local
建立/usr/local/下的jdk軟連線方便以後版本升級 :
[root@master ~]# ln -s /usr/local/jdk1.6.0_05/ /usr/local/jdk
(2)安裝apache-maven,並設定環境變數
[root@master zy]# tar -zxvf apache-maven-2.2.1-bin.tar.gz
[root@master zy]# mv apache-maven-2.2.1 /usr/local/maven
[root@master zy]#vim /etc/profile
新增以下內容:
JAVA_HOME=/usr/local/jdk1.6.0_05
JAVA_BIN=/usr/local/jdk1.6.0_05/bin
PATH=$PATH:$JAVA_BIN:/usr/local/maven/bin
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
JETTY_HOME=/usr/local/jetty
export JAVA_HOME JAVA_BIN PATH CLASSPATH JETTY_HOME
[root@master zy]# source /etc/profile
[root@master zy]# mvn --version
Apache Maven 2.2.1 (r801777; 2009-08-07 03:16:01+0800)
Java version: 1.6.0_05
Java home: /usr/local/jdk1.6.0_05/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux" version: "2.6.18-238.el5" arch: "amd64" Family: "unix"
2. 安裝啟動jetty
[root@master zy]# unzip jetty-distribution-7.3.0.v20110203.zip
[root@master zy]# mv jetty-distribution-7.3.0.v20110203 /usr/local/jetty/
[root@master zy]# cd /usr/local/jetty/
[root@master jetty]# java -jar start.jar【或者進去到bin目錄,然後執行./jetty.sh start 】
[root@master bin]# ./jetty.sh start
Starting Jetty: STARTED Jetty Mon Jul 11 11:54:03 CST 2011
[root@master bin]# 2011-07-11 11:54:04.014:INFO::Redirecting stderr/stdout to /usr/local/jetty/logs/2011_07_11.stderrout.log
在瀏覽器中輸入 http://192.168.55.229:8080/remote.html(這裡加上remote.html的原因是避免和tomcat衝突,實際上http://192.168.55.229:8080也能夠訪問到,但是前提是必須把tomcat給禁掉。或者在jetty.xml中將埠改成8081,此時我們就可以直接訪問http://192.168.55.229:8081)
jetty目錄結構如下:
* contexts 熱部署目錄
* etc jetty配置檔案目錄
* examples jetty示例
* extras jetty可選擴充套件
* lib 包含jetty所需的jar檔案
* LICENSES 就是LICENSES
* modules 子模組
* patches 補丁patches
* pom.xml is jetty的maven2構建檔案
* project-website jetty7網站
* README.txt readme.txt
* start.jar is jetty7主程式
* VERSION.txt
* webapps應用路徑,釋出的引用基本都放這裡
3.簡單部署一個應用
[root@master ~]# cd /usr/local/jetty/webapps/
[root@master webapps]# ls
test.war
[root@master webapps]# mkdir test1
[root@master webapps]# cd test1
[root@master test1]# vi hello.jsp
<html>
<body>
<h4>simple test</h4>
<%--echo hello world--%>
<%@page language="java"%>
<%="Hello World"%>
</body>
</html>
[root@master test1]# cd /usr/local/jetty/
[root@localhost jetty]#java -jar start.jar
2011-07-11 13:34:16.175:INFO::Deployable added: /usr/local/jetty/webapps/test1
2011-07-1113:34:16.411:INFO::started.e.j.w.WebAppContext{/test1,file:/usr/local/jetty/webapps/test1/},/usr/local/jetty/webapps/test1
【或者進去bin目錄執行命令./jetty.sh start】
[root@master bin]# ./jetty.sh start
Starting Jetty: STARTED Jetty Mon Jul 11 13:38:55 CST 2011
[root@master bin]# 2011-07-11 13:38:56.122:INFO::Redirecting stderr/stdout to /usr/local/jetty/logs/2011_07_11.stderrout.log
在瀏覽器中輸入:http://192.168.55.229:8080/test1/hello.jsp
之前都用tomcat的童鞋是不是覺得tomcat很方便啊?但是還有個更方便的web伺服器叫jetty,而且它的體積很小,只有幾百KB,所以在專案中使用是很方便的。
下面來介紹下jetty所必需的一些東西:請注意看他的包結構
這些包都是必需的。你可以去網上下個jetty-7.2版本的類似於tomecat的東西。
其實運用jetty的方法比較多。我們一一來分析。
方法1:
看到jetty.xml和webdefault.xml這2玩意了嗎?
webdefault.xml官方的解釋是 The default descriptor is a web.xml format file that is applied to the context before the standard WEB-INF/web.xml 你可以理解為在web.xml載入之前先載入的jetty所需的一個容器的配置檔案。
你可以去你下載的jetty裡面拿出來 比如說你的路徑D:\jetty-hightide-7.2.1.v20101111\etc 去這裡拽個出來放在你專案裡面。內容基本上不要改。
然後我們來看下jetty.xml 這是一個負責告訴jetty容器要執行的你的工程是什麼。
我們們可以先看下它的內容:
- <?xml version="1.0"?>
- <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
- <Configure id="Server" class="org.mortbay.jetty.Server">
- <Set name="ThreadPool">
- <New class="org.mortbay.thread.QueuedThreadPool">
- <Set name="minThreads">10</Set>
- <Set name="maxThreads">200</Set>
- <Set name="lowThreads">20</Set>
- <Set name="SpawnOrShrinkAt">2</Set>
- </New>
- </Set>
- <Call name="addConnector">
- <Arg>
- <New class="org.mortbay.jetty.nio.SelectChannelConnector">
- <!--你的IP-->
- <Set name="host"><SystemProperty name="jetty.host" default="localhost"/></Set>
- <!--你的埠-->
- <Set name="port"><SystemProperty name="jetty.port" default="9090"/></Set>
- <Set name="maxIdleTime">30000</Set>
- <Set name="Acceptors">2</Set>
- <Set name="statsOn">false</Set>
- <Set name="confidentialPort">8443</Set>
- <Set name="lowResourcesConnections">5000</Set>
- <Set name="lowResourcesMaxIdleTime">5000</Set>
- </New>
- </Arg>
- </Call>
- <Set name="handler">
- <New id="Handlers" class="org.mortbay.jetty.handler.HandlerCollection">
- <Set name="handlers">
- <Array type="org.mortbay.jetty.Handler">
- <Item>
- <New id="RequestLog" class="org.mortbay.jetty.handler.RequestLogHandler"/>
- </Item>
- <Item>
- <New class="org.mortbay.jetty.webapp.WebAppContext">
- <Set name="contextPath">/jettytest</Set>
- <Set name="war">./WebRoot</Set> <!--你的web應用根目錄-->
- </New>
- </Item>
- </Array>
- </Set>
- </New>
- </Set>
- <Ref id="RequestLog">
- <Set name="requestLog">
- <New id="RequestLogImpl" class="org.mortbay.jetty.NCSARequestLog">
- <Set name="filename"><SystemProperty name="jetty.logs" default="./WebRoot/logs"
- />/yyyy_mm_dd.request.log</Set>
- <Set name="filenameDateFormat">yyyy_MM_dd</Set>
- <Set name="retainDays">90</Set>
- <Set name="append">true</Set>
- <Set name="extended">true</Set>
- <Set name="logCookies">false</Set>
- <Set name="LogTimeZone">GMT</Set>
- </New>
- </Set>
- </Ref>
- <Set name="stopAtShutdown">true</Set>
- <Set name="sendServerVersion">true</Set>
- <Set name="sendDateHeader">true</Set>
- <Set name="gracefulShutdown">1000</Set>
- </Configure>
字面就很好理解吧?看完了上面的你啥類都可以先不寫,可以進入debug配置裡面 如下圖
右擊new 一個如下圖來配置
到這裡方法1就基本完成了,儲存配置 run debug!http://localhost:9090/jettytest 直接去訪問吧。
方法2和方法3 都是用java程式碼來call jetty。
方法2先來:
- public static void startJettyMethodO() {
- String jetty_home = "jettytest";//這個就是你的專案釋出時候的名字
- try {
- Server server = new Server();
- Connector connector = new SelectChannelConnector();
- connector.setPort(9999);
- server.setConnectors(new Connector[] { connector });
- WebAppContext webapp = new WebAppContext();
- webapp.setContextPath("/"+jetty_home);//上下文路徑 比如說/jettytest
- webapp.setResourceBase("./WebRoot");//你的資原始檔所在的路徑 一般都在這下面
- webapp.setDefaultsDescriptor("./WebRoot/etc/webdefault.xml");
- server.setHandler(webapp);
- server.start();
- server.join();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
方法3:
- FileNotFoundException, Exception {
- Server server = new Server();
- XmlConfiguration configuration = new XmlConfiguration(
- new FileInputStream(
- "D:\\teamwork\\jettytest\\WebRoot\\etc\\jetty.xml")); //指定自定義的jetty.xml路徑
- configuration.configure(server);
- server.start();
附:官方apihttp://jetty.codehaus.org/jetty/jetty-6/apidocs/index.html
其他我也沒啥好說的了。如果還有其他方法的話我會更新的。多謝支援~!
本文作為jetty的初體驗體會,著重於怎樣移植webapp到jetty,以及如何快速在jetty上部署webapp,也嘗試了嵌入方式啟動webapp,這些工作在找到方法後很輕鬆(實際上我可找了很久)。主要是完成你的webapp對jetty的配置,然後start!
本文並沒有重點討論jetty.xml的配置,這部分內容可以根據官方文件和看jetty自帶的examples來學習,以後有時間看了再說。
注意:
jetty6是基於servlet2.5和jsp2.1設計的,
幾個核心包是jetty-6.1.11.jar、jetty-util-6.1.11.jar、servlet-api-2.5-6.1.11.jar;
如果以嵌入式啟動,需要引用jsp2.1包,我一開始引用的是jsp2.0包,結果造成了一些方法呼叫對不上引數的問題,明顯是class版本有差別,換用jsp2.1就可以了。
另外對於嵌入式,/lib/naming和/lib/plus下的包最好也全部引入。
有時候jetty配置檔案中會有如下引用jetty.home等變數
<Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
需要在啟動程式配置中加上vm引數,如果是jetty.home,則加上
-Djetty.home=D:/devworkspace/jetty-6.1.11
相關文章
- Jetty的配置、部署與API使用——(1)下載安裝JettyJettyAPI
- CentOS上JETTY環境的配置安裝CentOSJetty
- Oracle Stream的安裝、配置和使用Oracle
- 內建jetty server下solrcloud6.2.1和Zookeeper叢集的安裝和配置過程詳解JettyServerSolrCloud
- HBase的安裝配置和使用Java連線Java
- Jetty的配置、部署與API使用——(2)通過Jetty的Java API執行一個Jetty伺服器JettyAPIJava伺服器
- git安裝及配置教程 windows windows上git的安裝和使用GitWindows
- Flutter的安裝和配置Flutter
- JDK的安裝和配置JDK
- rsync的安裝 和 配置
- VNC的安裝配置使用VNC
- mongodb的安裝配置,使用MongoDB
- Nginx的安裝配置使用Nginx
- Maven Jetty Plugin執行配置jetty:runMavenJettyPlugin
- Jetty的配置、部署與API使用——(3)Linux下利用Jetty API執行一個Jetty伺服器JettyAPILinux伺服器
- zabbix安裝—–nginx安裝和配置Nginx
- 安裝和配置Drupal 8教程,如何安裝和配置Drupal 8?
- OSWatcher的安裝、配置、使用
- DNSmasq 的安裝、配置與使用DNS
- 安裝和配置sendmailAI
- Zookeeper 安裝和配置
- 安裝和配置OCFS
- SonarQube 安裝配置使用
- Elasticsearch 的安裝和簡單配置Elasticsearch
- Nginx的安裝和多域名配置Nginx
- Git-TortoiseGit的安裝和配置Git
- git bash的安裝和配置教程Git
- ubuntu中ANT的安裝和配置Ubuntu
- Android的安裝和配置【Z】Android
- WebLogic的安裝和配置(轉)Web
- MySQL的下載、安裝和配置MySql
- Maven配置 Jetty 外掛MavenJetty
- (MAC) PHP安裝和配置MacPHP
- mac MYSQL安裝和配置MacMySql
- Jemeter-安裝和配置
- Oracel bbed安裝和配置
- dataguard安裝和配置(DG)
- Git server安裝和配置GitServer