{{{ #!html
安裝 Jetty
}}} [[PageOutline]] = jetty 前言 = * 本篇 雖然說明了兩種安裝jetty 的方式,但是還是建議去jetty 官網下載 jetty的原始壓縮檔來安裝,因為包含了src才能看原始碼 * 若要jetty上手,還是請使用[wiki:Jetty-Demo jetty-demo] == jetty 特性 == * 易用性 1. 通過 XML 或者 API 來對 Jetty 進行配置; 2. 默認配置可以滿足大部分的需求; 3. 將 Jetty 嵌入到應用程序當中只需要非常少的代碼; * 可擴展性 1. 即使在有大量服務請求的情況下(如Ajax 的 Web 2.0),系統的性能也能保持在一個可以接受的狀態。 2. 利用 Continuation 機制來處理大量的用戶請求以及時間比較長的連接。 * 易嵌入性 * Jetty 設計之初就是作為一個優秀的組件來設計的,這也就意味著 Jetty 可以非常容易的嵌入到應用程序當中而不需要程序為了使用 Jetty 做修改。從某種程度上,你也可以把 Jetty 理解為一個嵌入式的Web服務器。 = apt-get 之 jetty = == 安裝jetty == * [http://docs.codehaus.org/display/JETTY/Debian+Packages debian安裝方法] * 在ubuntu用apt-get 安裝得到 jetty 5.1.14版 (2007/8/9) 與 hadoop 0.18.3 的lib 內放的jar檔版本相同 {{{ $ sudo apt-get install jetty jetty-extra libecj-java }}} * ubuntu 安裝後的目錄與debian有些不同 || /usr/share/jetty/|| || jetty home|| || || cgi-bin/|| 0|| || ||ext/ || 0|| || || lib/ || jar檔|| || || webapps/||root下有預設網站 || ||/usr/share/doc/jetty/ || || 文件目錄|| || /var/log/jetty/|| || log || || /usr/share/java/|| jetty-5.0.0.jar|| 主程式|| || /etc/jetty/|| || 設定檔|| || /etc/default/|| jetty || 0 || || /etc/init.d/|| jetty|| 驅動檔 || == 啟動 jetty == * 設定 jetty -> /etc/jetty/jetty.xml {{{ #!text }}} * 啟動 {{{ $sudo /etc/init.d/jetty start }}} * 瀏覽 [http://localhost:8280/ ] * ps : 不知設定檔如何找出port : * 先用 '''ps aux | jetty''' 找出jetty的pid * 在用pid 來探索 '''netstat -anlp | grep $pid''' ,可查出port號如 {{{ tcp6 0 0 :::8280 :::* LISTEN 30597/java }}} * 在/etc/jetty/start.config 加入 {{{ #!sh $(tomcat.lib.home)/jasper-compiler-jdt.jar ! available org.eclipse.jdt.core.JDTCompilerAdapter }}} * 預設port在8280 * ps2: jetty的預設網頁裡的[http://localhost:8280/tut/index.html tutorial] 還不錯 == 問題解決 == * 用 apt-get install jetty 所安裝的jetty無法開啟jsp的網頁 * 將會出現錯誤訊息 {{{ #!text HTTP ERROR: 500 No Java compiler available RequestURI=/sample/hello.jsp }}} * 解決方法: {{{ sudo apt-get install libecj-java }}} 並在/etc/jetty/start.config 加入 {{{ #!sh $(tomcat.lib.home)/jasper-compiler-jdt.jar ! available org.eclipse.jdt.core.JDTCompilerAdapter }}} === 補充分析 === * apt-get 安裝的 jetty ,在無安裝libecj-java以及加入jasper-compiler-jdt.jar 前,無法使用jsp,但 tarball的jetty 在同樣的前提下卻可以,而tarball 的lib , ext 的目錄下也沒有jasper-compiler-jdt.jar ,因此分析一下 start.config的不同 {{{ $ diff -Naur /home/waue/Desktop/start.config /etc/jetty/start.config }}} --- jetty-src 包在start.jar內的 start.config (左) +++ /etc/jetty/的 start.config (右) {{{ #!diff --- /home/waue/Desktop/start.config 2009-08-12 17:53:10.000000000 +0800 +++ /etc/jetty/start.config 2009-08-14 12:12:47.000000000 +0800 @@ -22,10 +22,9 @@ # CONDITION is one of: # always # never -# available classname # true if class on classpath -# property name # true of set -# java OPERATOR version # java version compared to literal -# nargs OPERATOR number # number of command line args compared to literal +# available classname +# java OPERATOR version +# nargs OPERATOR number # OPERATOR := one of "<",">","<=",">=","==","!=" # # CONTITIONS can be combined with AND OR or !, with AND being the assume @@ -36,55 +35,53 @@ $(jetty.class.path) always -org.mortbay.log.LogFactory.noDiscovery=true ! property org.mortbay.log.LogFactory.noDiscovery -javax.management.builder.initial=mx4j.server.MX4JMBeanServerBuilder java > 1.4 +org.apache.commons.logging.LogFactory=org.mortbay.log.Factory AND ! property org.apache.commons.logging.LogFactory ! property org.apache.commons.logging.Log # Try different settings of jetty.home until the jetty.jar is found. -jetty.home=. ! exists $(jetty.home)/lib/org.mortbay.jetty.jar -jetty.home=.. ! exists $(jetty.home)/lib/org.mortbay.jetty.jar -jetty.home=/home/jetty ! exists $(jetty.home)/lib/org.mortbay.jetty.jar -jetty.home=/C:/jetty ! exists $(jetty.home)/lib/org.mortbay.jetty.jar -jetty.home=. ! exists $(jetty.home)/lib/org.mortbay.jetty.jar +jetty.home=/usr/share/jetty + +# Debian jars home +java.lib.home=/usr/share/java always +tomcat.lib.home=/usr/share/tomcat5.5/common/lib/ always + +# Do not validate xml files by default. +# Disabled because servlet-2.3.jar references an XSD which is not longer +# hostet by IBM. This should generally make the startup faster. +property=org.mortbay.xml.XmlParser.NotValidating=true # The main class to run -org.mortbay.jetty.Server.class -# override class with old property name -$(start.class).class -# override class with preferred property name -$(main.class).class +org.mortbay.jetty.Server.class # The default configuration files -$(jetty.home)/etc/admin.xml nargs == 0 -$(jetty.home)/etc/jetty.xml nargs == 0 +#/etc/admin.xml nargs == 0 +/etc/jetty/jetty.xml nargs == 0 # Set the jetty classpath -$(jetty.home)/lib/org.mortbay.jetty.jar java >= 1.4 -$(jetty.home)/lib/javax.servlet.jar always - -# Add JMX jars -$(jetty.home)/lib/org.mortbay.jmx.jar java >= 1.4 +# Always use the >1.2 version because version matching does not work with kaffe +$(jetty.home)/lib/org.mortbay.jetty.jar +#$(jetty.home)/lib/org.mortbay.jetty.jar java >= 1.4 +#$(jetty.home)/extra/lib/org.mortbay.jetty-jdk1.2.jar java < 1.4 AND java >= 1.2 +$(jetty.home)/lib/org.mortbay.jmx.jar +$(java.lib.home)/servlet-api-2.4.jar +$(java.lib.home)/jsp-api-2.0.jar -# Always use xercesImpl from ext if it is present -$(jetty.home)/ext/xercesImpl.jar ! available org.apache.xerces.jaxp.DocumentBuilderImpl +# Always use xercesImpl from debian if it is present +$(java.lib.home)/xercesImpl.jar ! available org.apache.xerces.jaxp.DocumentBuilderImpl.class # Add the XML support jars if needed. -$(jetty.home)/ext/xmlParserAPIs-2.5.jar ! available org.w3c.dom.DOMError -$(jetty.home)/ext/xml-apis.jar ! available org.w3c.dom.Document +$(java.lib.home)/xmlParserAPIs.jar ! available org.w3c.dom.DOMError +$(java.lib.home)/xml-apis.jar ! available org.w3c.dom.Document # Set the classpath for the supporting cast -$(jetty.home)/ext/ant.jar ! available org.apache.tools.ant.Main -$(jetty.home)/ext/jasper-runtime.jar ! available org.apache.jasper.Constants -$(jetty.home)/ext/jasper-compiler.jar ! available org.apache.jasper.JspCompilationContext -$(jetty.home)/ext/jnet.jar ! available javax.net.SocketFactory -$(jetty.home)/ext/jsse.jar ! available javax.net.ssl.SSLServerSocket -$(jetty.home)/ext/jcert.jar ! available javax.security.cert.X509Certificate -# Add anything in ext we have not yet considered. -$(jetty.home)/ext/* - -# Try some standard locations for anything missing. -/usr/share/java/ant.jar ! available org.apache.tools.ant.Main +$(java.lib.home)/commons-logging.jar ! available org.apache.commons.logging.LogFactory +$(java.lib.home)/commons-el.jar ! available org.apache.commons.el.ExpressionEvaluatorImpl +$(java.lib.home)/jmxri.jar ! available javax.management.MBeanServer +$(tomcat.lib.home)/jasper-compiler-jdt.jar ! available org.eclipse.jdt.core.JDTCompilerAdapter +$(tomcat.lib.home)/jasper-runtime.jar ! available org.apache.jasper.Constants +$(tomcat.lib.home)/jasper-compiler.jar ! available org.apache.jasper.JspCompilationContext +$(java.lib.home)/ant-1.6.jar ! available org.apache.tools.ant.BuildException $(java.home)/lib/tools.jar ! available com.sun.tools.javac.Main $(java.home)/../lib/tools.jar ! available com.sun.tools.javac.Main -# Add a resources directory if it is there -$(jetty.home)/resources/ +# Add anything in ext we have not yet considered. +$(jetty.home)/ext/* }}} = src 之 jetty = == 安裝 == * 此處下載 [http://dist.codehaus.org/jetty/] * 解壓縮即可 == 啟動 == {{{ cd $jetty_home java -jar start.jar etc/jetty.xml }}} = 用jetty 的 eclipse plugin = * [http://www.webtide.com/eclipse/ eclipse plugin ] * [http://www.webtide.com/eclipse/features/org.mortbay.jetty.serveradaptor_1.0.4.jar 1.0.4下載] * 新增 Jetty Web Container 環境(Server)(似乎eclipse 3.2版才有效) [[Image(http://sites.google.com/site/javacodelibrary/_/rsrc/1240252400400/java-net/jetty/Jetty_Eclipse.png?height=366&width=420)]] {{{ #!text 8080 30000 5000 5000 / F:/Data/WebApp config/JettyWeb.xml }}} == 補充 == * hadoop的web server 用jetty 所搭配的 資料夾與 port 對應 || $hadoop_home/webapps/task/ || 50060 || || $hadoop_home/webapps/dfs/ || 50070 || || $hadoop_home/webapps/datanode/ || 50010 || || $hadoop_home/webapps/job/ || 50030 || || $hadoop_home/webapps/task/ || 50060 || || $hadoop_home/webapps/dfs/ || 50070 || == 更多資料 == * [http://docs.codehaus.org/display/JETTY/Jetty+Documentation jetty 官方文件] * [http://www.matrix.org.cn/resource/article/2006-08-14/Jetty_44588.html jetty 中文介紹] * [http://www.ibm.com/developerworks/cn/web/wa-lo-jetty/index.html 入門 ]