切換到Jetty安裝目錄(JETTY_HOME),運行:html
$ java -jar start.jar 2017-09-20 15:45:11.986:INFO::main: Logging initialized @683ms to org.eclipse.jetty.util.log.StdErrLog 2017-09-20 15:45:12.197:WARN:oejs.HomeBaseWarning:main: This instance of Jetty is not running from a separate {jetty.base} directory, this is not recommended. See documentation at http://www.eclipse.org/jetty/documentation/current/startup.html 2017-09-20 15:45:12.243:INFO:oejs.Server:main: 9.4.10.v20180503 2017-09-20 15:45:12.266:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:///installs/repository/jetty/webapps/] at interval 1 2017-09-20 15:45:12.298:INFO:oejs.AbstractConnector:main: Started ServerConnector@39c0f4a{HTTP/1.1,[http/1.1]}{0.0.0.0:8080} 2017-09-20 15:45:12.298:INFO:oejs.Server:main: Started @995ms
啓動成功後,訪問http://localhost:8080,會提示 Error 404,由於此時尚未發佈web應用。須要注意啓動日誌中的告警信息:「This instance of Jetty is not running from a separate {jetty.base} directory, this is not recommended」。後面會介紹如何建立Jetty Base。java
在JETTY_HOME下,有demo-base目錄,裏面包括了不少web應用,用來演示jetty的不一樣功能。demo-base演示了在base目錄(不一樣於JETTY_HOME)啓動jetty的推薦方式:node
$ java -jar $JETTY_HOME/start.jar 2018-06-05 08:29:11.870:INFO::main: Logging initialized @417ms to org.eclipse.jetty.util.log.StdErrLog 2018-06-05 08:29:12.107:WARN::main: demo test-realm is deployed. DO NOT USE IN PRODUCTION! 2018-06-05 08:29:12.109:INFO:oejs.Server:main: jetty-9.4.8.v20171121, build timestamp: 2017-11-22T05:27:37+08:00, git hash: 82b8fb23f757335bb3329d540ce37a2a2615f0a8 2018-06-05 08:29:12.126:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:///usr/local/jetty-distribution-9.4.8.v20171121/demo-base/webapps/] at interval 1 2018-06-05 08:29:12.369:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=73ms 2018-06-05 08:29:12.534:INFO:oejs.session:main: DefaultSessionIdManager workerName=node0 2018-06-05 08:29:12.534:INFO:oejs.session:main: No SessionScavenger set, using defaults 2018-06-05 08:29:12.535:INFO:oejs.session:main: Scavenging every 600000ms 2018-06-05 08:29:12.650:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@1b26f7b2{/proxy,file:///private/var/folders/nl/c5qxs2q91611yk6fkr7sky4w0000gn/T/jetty-0.0.0.0-8080-javadoc-proxy.war-_javadoc-proxy-any-837789697743993530.dir/webapp/,AVAILABLE}{/javadoc-proxy.war} 2018-06-05 08:29:12.721:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=20ms 2018-06-05 08:29:12.723:WARN::main: test-spec webapp is deployed. DO NOT USE IN PRODUCTION! 2018-06-05 08:29:12.794:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@71e9ddb4{/test-spec,[file:///private/var/folders/nl/c5qxs2q91611yk6fkr7sky4w0000gn/T/jetty-0.0.0.0-8080-test-spec.war-_test-spec-any-8226002697051187969.dir/webapp/, jar:file:///private/var/folders/nl/c5qxs2q91611yk6fkr7sky4w0000gn/T/jetty-0.0.0.0-8080-test-spec.war-_test-spec-any-8226002697051187969.dir/webapp/WEB-INF/lib/test-web-fragment-9.4.8.v20171121.jar!/META-INF/resources],AVAILABLE}{/test-spec.war} 2018-06-05 08:29:12.798:INFO:oejsh.ContextHandler:main: Started o.e.j.s.h.MovedContextHandler@3e6ef8ad{/oldContextPath,null,AVAILABLE} 2018-06-05 08:29:12.826:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=6ms 2018-06-05 08:29:12.828:WARN::main: test-jaas webapp is deployed. DO NOT USE IN PRODUCTION! 2018-06-05 08:29:12.857:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@1eb5174b{/test-jaas,file:///private/var/folders/nl/c5qxs2q91611yk6fkr7sky4w0000gn/T/jetty-0.0.0.0-8080-test-jaas.war-_test-jaas-any-7329119210896140335.dir/webapp/,AVAILABLE}{/test-jaas.war} 2018-06-05 08:29:12.951:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=5ms 2018-06-05 08:29:12.952:WARN::main: test-jndi webapp is deployed. DO NOT USE IN PRODUCTION! 2018-06-05 08:29:12.990:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@193f604a{/test-jndi,file:///private/var/folders/nl/c5qxs2q91611yk6fkr7sky4w0000gn/T/jetty-0.0.0.0-8080-test-jndi.war-_test-jndi-any-779308328747630073.dir/webapp/,AVAILABLE}{/test-jndi.war} 2018-06-05 08:29:13.003:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=5ms 2018-06-05 08:29:13.021:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@306e95ec{/,file:///usr/local/jetty-distribution-9.4.8.v20171121/demo-base/webapps/ROOT/,AVAILABLE}{/ROOT} 2018-06-05 08:29:13.071:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=16ms 2018-06-05 08:29:13.073:WARN::main: async-rest webapp is deployed. DO NOT USE IN PRODUCTION! 2018-06-05 08:29:13.094:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@61001b64{/async-rest,[file:///private/var/folders/nl/c5qxs2q91611yk6fkr7sky4w0000gn/T/jetty-0.0.0.0-8080-async-rest.war-_async-rest-any-618871760667783130.dir/webapp/, jar:file:///private/var/folders/nl/c5qxs2q91611yk6fkr7sky4w0000gn/T/jetty-0.0.0.0-8080-async-rest.war-_async-rest-any-618871760667783130.dir/webapp/WEB-INF/lib/example-async-rest-jar-9.4.8.v20171121.jar!/META-INF/resources],AVAILABLE}{/async-rest.war} 2018-06-05 08:29:13.176:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=15ms 2018-06-05 08:29:13.178:WARN::main: test webapp is deployed. DO NOT USE IN PRODUCTION! 2018-06-05 08:29:13.229:INFO:oejsh.ManagedAttributeListener:main: update PushFilter null->org.eclipse.jetty.servlets.PushCacheFilter@533bda92 on o.e.j.w.WebAppContext@740cae06{/test,file:///private/var/folders/nl/c5qxs2q91611yk6fkr7sky4w0000gn/T/jetty-0.0.0.0-8080-test.war-_test-any-439933502607574342.dir/webapp/,STARTING}{/test.war} 2018-06-05 08:29:13.232:INFO:oejsh.ManagedAttributeListener:main: update QoSFilter null->org.eclipse.jetty.servlets.QoSFilter@4a8355dd on o.e.j.w.WebAppContext@740cae06{/test,file:///private/var/folders/nl/c5qxs2q91611yk6fkr7sky4w0000gn/T/jetty-0.0.0.0-8080-test.war-_test-any-439933502607574342.dir/webapp/,STARTING}{/test.war} 2018-06-05 08:29:13.234:WARN:oeju.DeprecationWarning:main: Using @Deprecated Class org.eclipse.jetty.servlets.MultiPartFilter 2018-06-05 08:29:13.257:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@740cae06{/test,file:///private/var/folders/nl/c5qxs2q91611yk6fkr7sky4w0000gn/T/jetty-0.0.0.0-8080-test.war-_test-any-439933502607574342.dir/webapp/,AVAILABLE}{/test.war} 2018-06-05 08:29:13.271:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=7ms 2018-06-05 08:29:13.290:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@480d3575{/doc,file:///usr/local/jetty-distribution-9.4.8.v20171121/demo-base/webapps/doc/,AVAILABLE}{/doc} 2018-06-05 08:29:13.307:INFO:oejs.AbstractConnector:main: Started ServerConnector@465232e9{HTTP/1.1,[http/1.1]}{0.0.0.0:8080} 2018-06-05 08:29:13.317:INFO:oejus.SslContextFactory:main: x509=X509@23941fb4(jetty,h=[jetty.eclipse.org],w=[]) for SslContextFactory@7486b455[provider=null,keyStore=file:///usr/local/jetty-distribution-9.4.8.v20171121/demo-base/etc/keystore,trustStore=file:///usr/local/jetty-distribution-9.4.8.v20171121/demo-base/etc/keystore] 2018-06-05 08:29:13.317:INFO:oejus.SslContextFactory:main: x509=X509@660acfb(mykey,h=[],w=[]) for SslContextFactory@7486b455[provider=null,keyStore=file:///usr/local/jetty-distribution-9.4.8.v20171121/demo-base/etc/keystore,trustStore=file:///usr/local/jetty-distribution-9.4.8.v20171121/demo-base/etc/keystore] 2018-06-05 08:29:13.453:INFO:oejs.AbstractConnector:main: Started ServerConnector@82ea68c{SSL,[ssl, http/1.1]}{0.0.0.0:8443} 2018-06-05 08:29:13.454:INFO:oejs.Server:main: Started @2001ms
能夠經過如下兩個命令查看demo-base的配置:git
> cd $JETTY_HOME/demo-base/ > java -jar $JETTY_HOME/start.jar --list-modules ... > java -jar %JETTY_HOME/start.jar --list-config ...
--list-modules:返回服務啓用而且可用的modulesweb
--list-config:返回服務的配置信息,包括:Java、Jetty環境變量、配置順序、JVM參數或者System Properties、通用server屬性、Jetty server class path、有效的Jetty XML文件。bash
Jetty Base,容許將配置和web應用單獨存儲到其餘目錄。Jetty的默認配置基於:session
jetty.homeapp
jetty.base :定義了Jetty Server特定實現的路徑,包括配置、logs、web應用等,更典型的是包括:start.d/*.ini 文件、logs 、 webapps。eclipse
下面演示瞭如何建立一個新的Jetty Base:webapp
> JETTY_BASE=/tmp/mybase > mkdir $JETTY_BASE > cd $JETTY_BASE > 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 --create-startd INFO : Base directory was modified > java -jar $JETTY_HOME/start.jar --add-to-start=http,deploy INFO : webapp transitively enabled, ini template available with --add-to-start=webapp INFO : server transitively enabled, ini template available with --add-to-start=server INFO : security transitively enabled INFO : servlet transitively enabled INFO : http initialized in ${jetty.base}/start.d/http.ini INFO : deploy initialized in ${jetty.base}/start.d/deploy.ini MKDIR : ${jetty.base}/webapps INFO : Base directory was modified > cp $JETTY_HOME/demo-base/webapps/async-rest.war webapps/ROOT.war > java -jar $JETTY_HOME/start.jar 2015-06-04 11:10:16.286:INFO::main: Logging initialized @274ms 2015-06-04 11:10:16.440:INFO:oejs.Server:main: jetty-9.3.0.v20150601 2015-06-04 11:10:16.460:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:///tmp/mybase/webapps/] at interval 1 2015-06-04 11:10:16.581:WARN::main: async-rest webapp is deployed. DO NOT USE IN PRODUCTION! 2015-06-04 11:10:16.589:INFO:oejw.StandardDescriptorProcessor:main: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet 2015-06-04 11:10:16.628:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@1a407d53{/,[file:///tmp/jetty-0.0.0.0-8080-ROOT.war-_-any-4510228025526425427.dir/webapp/, jar:file:///tmp/jetty-0.0.0.0-8080-ROOT.war-_-any-4510228025526425427.dir/webapp/WEB-INF/lib/example-async-rest-jar-9.4.10.v20180503.jar!/META-INF/resources],AVAILABLE}{/ROOT.war} 2015-06-04 11:10:16.645:INFO:oejs.ServerConnector:main: Started ServerConnector@3abbfa04{HTTP/1.1,[http/1.1]}{0.0.0.0:8080} 2015-06-04 11:10:16.646:INFO:oejs.Server:main: Started @634ms
> cd $JETTY_BASE > java -jar $JETTY_HOME/start.jar jetty.http.port=8081
服務啓動後,能夠經過8081端口進行訪問。須要注意的是:在命令行修改端口,只對本次啓動有效。若是想之後啓動都監聽指定的端口,須要修改start.d/http.ini裏面的配置。
說明
.ini配置文件中屬性是經過下面的方式生效的:
start.d/http.ini包含了「--module=http」,用於啓用http模塊
modules/http.mod文件定義了http模塊,而且指定了etc/jetty-http.xml做爲其屬性的配置文件,同時也指定了ini-template
etc/jetty.http.xml中聲明瞭會使用jetty.http.port屬性的值,注入到ServerConnector,做爲監聽端口號
> cd $JETTY_BASE > java -jar $JETTY_HOME/start.jar jetty.ssl.port=8444