2.使用Jetty

一.运行Jetty

切换到Jetty安装目录(JETTY_HOME),运行:

$ 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。

二、Demo Base

在JETTY_HOME下,有demo-base目录,里面包括了很多web应用,用来演示jetty的不同功能。demo-base演示了在base目录(不同于JETTY_HOME)启动jetty的推荐方式:

$ 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的配置:

> cd $JETTY_HOME/demo-base/
> java -jar $JETTY_HOME/start.jar --list-modules
...

> java -jar %JETTY_HOME/start.jar --list-config
...

--list-modules:返回服务启用并且可用的modules

--list-config:返回服务的配置信息,包括:Java、Jetty环境变量、配置顺序、JVM参数或者System Properties、通用server属性、Jetty server class path、有效的Jetty XML文件。

三、Jetty常用配置

3.1 创建Jetty Base

Jetty Base,允许将配置和web应用单独存储到其他目录。Jetty的默认配置基于:

jetty.home

jetty.base :定义了Jetty Server特定实现的路径,包括配置、logs、web应用等,更典型的是包括:start.d/*.ini 文件、logs 、 webapps。

下面演示了如何创建一个新的Jetty Base:

> 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

3.2 修改Jetty端口号

> 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,作为监听端口号

3.3 修改Jetty https端口号

> cd $JETTY_BASE
> java -jar $JETTY_HOME/start.jar jetty.ssl.port=8444

  

猜你喜欢

转载自www.cnblogs.com/pugongying017/p/9616200.html
2.