Jetty Maven Plugin 配置说明

23.2.3 配置Jetty容器

  下面这些Jetty环境属性的设置在你的web应用中执行,最常用的配置如下: 

httpConnector

  可选择的配置,如果没有设置,Jetty将创建ServerConnector实例来监听8080端口。你可以在命令行上使用系统属性jetty.http.port来修改默认的端口配置,例如mvn -Djetty.http.port=9999 jetty:run,当然你可以通过配置下面的属性来配置ServerConnector。可以配置的属性如下:

  port:连接监听的端口,默认8080;

  host:监听的主机,默认监听所有主机,即所有主机都可以访问;

  name:连接器的名称,在配置指定连接器来处理指定请求时有用;

  idleTimeout:连接超时时间;

  soLinger:socket连接时间;

  你同样可以在一个标准的Jetty xml配置文件中配置连接,并把配置文件的路径赋值给jettyXml参数。jetty-9.0以后已经不需要把连接信息配置在pom.xml中了;你可以使用Jetty的xml进行配置。

jettyXml

  可选择的配置,通常,可以把以逗号分割的Jetty xml配置文件的地址字符串增加到任何插件的配置参数中。如果你有另一个web应用、处理器、特别是连接器,你就可以使用它,但是若你有另外一个Jetty对象,则不能通过插件得到配置信息。

scanIntervalSeconds

  自动扫描文件改变并进行热部署的时间间隔,单位为秒。默认值为0,这代表着禁用扫描并热部署,只有一个大于0的配置可以使它生效。

reload

  重新加载选项,默认值是"automatic"(自动),一般用来和配置不为0的scanIntervalSeconds一同使用。默认配置下当发现有文件改变会自动进行热部署。如果设置为"manual" (手动),这样设置的话,部署将会通过插件被手动触发,这在当你频繁改动文件时比较有用,这样会忽略你的改动,直到你做完所有改变。

dumpOnStart

  可选择的配置,默认为false,如果设置为true。那么Jetty会在启动时打印出server的结构。

loginServices

  可选择的配置。是一系列org.eclipse.jetty.security.LoginService的实现类。注意,没有指定默认的域,如果你需要在web.xml中配置域,那么就可以配置一个统一的域。当然也可以在Jetty的xml里面进行配置。并把配置文件的地址增加到`jettyXml中。`

requestLog

  可选择的配置。一个实现了org.eclipse.jetty.server.RequestLog接口的请求日志记录。有三种方式配置请求日志:

    • 在Jetty xml配置文件,并加到jettyXML参数中。
    • 在context xml配置文件中,并加到contextXml参数中。
    • 在webAPP元素中

server

  jetty-9.3.1以后是可选择配置。这可以配置org.eclipse.jetty.server.Server 实例用来支持插件的使用,然而通常是不需要配置的,因为插件会自动为你配置。特别是你在使用jettyXml的时候你通常不愿意使用这个元素。如果你同时定义了server元素和在xml文件中进行了包含“<Configure id="Server" class="org.eclipse.jetty.server.Server">”的配置,那么xml文件的配置将会覆盖pom中的配置。

stopPort

  可选择配置。一个用来监听停止命令的端口。

stopKey

  可选择的配置。和stopPort结合使用。

systemProperties

  可选择的配置。允许你为了执行插件而配置系统参数。

systemPropertiesFile

  可选择的配置。一个包含执行插件系统参数的文件。默认情况你在文件中设置的参数不会覆盖在命令行中写的参数,不管通过JVM还是通过POM的systemProperties。

skip

  默认为false。如果为true的话,插件的执行会退出。同样可以使用命令-Djetty.skip进行设置。这在一体化测试你可以通过配置取消执行时非常有用。

useProvidedScope

  默认为false。如果为true的话, <scope>provided</scope所依赖的位置将会被添加到容器的classpath中。注意这并不是webapp的classpath,只是提供给容器使用的。所以你应该会少使用这一功能,而是明确拷贝需要的依赖。

excludedGoals

  可选择的配置。一系列Jetty插件的名称可以使插件打印出有效的信息并退出。这在你想禁止用户使用指定功能的时候很有用。

 23.2.3.1 配置https连接器

   为了配置https连接器,你需要使用Jetty xml配置文件。下面的例子是直接拷贝 etc/文件夹下的文件,当然你也可以自己编写你自己xml文件。我们将使用下面的文件:

jetty.xml

  设置 org.eclipse.jetty.server.Server 实例的各种属性,为了让插件可以使用。重点提示,下面设置了org.eclipse.jetty.server.HttpConfiguration元素,我们也可以使用一个字xml文件来配置它。这是一个相关的部分:

复制代码

<New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration"> <Set name="secureScheme">https</Set> <Set name="securePort"><Property name="jetty.secure.port" default="8443" /></Set> <Set name="outputBufferSize">32768</Set> <Set name="requestHeaderSize">8192</Set> <Set name="responseHeaderSize">8192</Set> <Set name="sendServerVersion">true</Set> <Set name="sendDateHeader">false</Set> <Set name="headerCacheSize">512</Set> </New>

复制代码

jetty-ssl.xml

  为https连接配置ssl。下面一个jetty-ssl.xml例子来自jetty-distribution:

复制代码

<?xml version="1.0"?> <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure\_9\_3.dtd"> <!-- ============================================================= --> <!-- SSL基础配置 --> <!-- 这个配置文件需要和至少一个或多个 --> <!-- etty-https.xml 或 jetty-http2.xml文件同时使用 --> <!-- ============================================================= --> <Configure id="Server" class="org.eclipse.jetty.server.Server"> <!-- =========================================================== --> <!-- 不使用协议工厂增加一个SSL连接 --> <!-- =========================================================== --> <Call name="addConnector"> <Arg> <New id="sslConnector" class="org.eclipse.jetty.server.ServerConnector"> <Arg name="server"><Ref refid="Server" /></Arg> <Arg name="acceptors" type="int"><Property name="jetty.ssl.acceptors" deprecated="ssl.acceptors" default="-1"/></Arg> <Arg name="selectors" type="int"><Property name="jetty.ssl.selectors" deprecated="ssl.selectors" default="-1"/></Arg> <Arg name="factories"> <Array type="org.eclipse.jetty.server.ConnectionFactory"> <!-- 注释掉用于支持代理 <Item> <New class="org.eclipse.jetty.server.ProxyConnectionFactory"/> </Item>--> </Array> </Arg>
1 <Set name="host"><Property name="jetty.ssl.host" deprecated="jetty.host" /></Set> 2 <Set name="port"><Property name="jetty.ssl.port" deprecated="ssl.port" default="8443" /></Set> 3 <Set name="idleTimeout"><Property name="jetty.ssl.idleTimeout" deprecated="ssl.timeout" default="30000"/></Set> 4 <Set name="soLingerTime"><Property name="jetty.ssl.soLingerTime" deprecated="ssl.soLingerTime" default="-1"/></Set> 5 <Set name="acceptorPriorityDelta"><Property name="jetty.ssl.acceptorPriorityDelta" deprecated="ssl.acceptorPriorityDelta" default="0"/></Set> 6 <Set name="acceptQueueSize"><Property name="jetty.ssl.acceptQueueSize" deprecated="ssl.acceptQueueSize" default="0"/></Set> 7 </New> 8</Arg>
</Call> <!-- =========================================================== --> <!-- 基于定义在jetty.xml配置文件里的HttpConfiguration --> <!-- 创建一个基于TLS的HttpConfiguration --> <!-- 增加一个SecureRequestCustomizer来管理证书和session信息 --> <!-- =========================================================== --> <New id="sslHttpConfig" class="org.eclipse.jetty.server.HttpConfiguration"> <Arg><Ref refid="httpConfig"/></Arg> <Call name="addCustomizer"> <Arg> <New class="org.eclipse.jetty.server.SecureRequestCustomizer"> <Arg name="sniHostCheck" type="boolean"><Property name="jetty.ssl.sniHostCheck" default="true"/></Arg> <Arg name="stsMaxAgeSeconds" type="int"><Property name="jetty.ssl.stsMaxAgeSeconds" default="-1"/></Arg> <Arg name="stsIncludeSubdomains" type="boolean"><Property name="jetty.ssl.stsIncludeSubdomains" default="false"/></Arg> </New> </Arg> </Call> </New> </Configure>

复制代码

  现在你需要让插件来应用上面的这个文件:

复制代码

<plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.3.11.v20160721</version> <configuration> <jettyXml>jetty.xml,jetty-ssl.xml,jetty-https.xml</jettyXml> </configuration> </plugin>

复制代码

 !警告

  对于Jetty的安装来说,xml配置文件的顺序是很重要的。

  你也可以使用jetty xml文件来配置http连接供插件使用。在这我们使用Jetty程序包中的jetty-http.xml文件:

复制代码

<?xml version="1.0"?> <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure\_9\_3.dtd"> <!-- ============================================================= --> <!-- 使用"Server"的ID来配置Server实例,并添加一个HTTP连接 --> <!-- 这个配置文件必须和jetty.xml文件结合使用 --> <!-- ============================================================= --> <Configure id="Server" class="org.eclipse.jetty.server.Server"> <!-- =========================================================== --> <!-- 增加一个HTTP连接 --> <!-- =========================================================== --> <Call name="addConnector"> <Arg> <New id="httpConnector" class="org.eclipse.jetty.server.ServerConnector"> <Arg name="server"><Ref refid="Server" /></Arg> <Arg name="acceptors" type="int"><Property name="jetty.http.acceptors" deprecated="http.acceptors" default="-1"/></Arg> <Arg name="selectors" type="int"><Property name="jetty.http.selectors" deprecated="http.selectors" default="-1"/></Arg> <Arg name="factories"> <Array type="org.eclipse.jetty.server.ConnectionFactory"> <Item> <New class="org.eclipse.jetty.server.HttpConnectionFactory"> <Arg name="config"><Ref refid="httpConfig" /></Arg> <Arg name="compliance"><Call class="org.eclipse.jetty.http.HttpCompliance" name="valueOf"><Arg><Property name="jetty.http.compliance" default="RFC7230"/></Arg></Call></Arg> </New> </Item> </Array> </Arg> <Set name="host"><Property name="jetty.http.host" deprecated="jetty.host" /></Set> <Set name="port"><Property name="jetty.http.port" deprecated="jetty.port" default="8080" /></Set> <Set name="idleTimeout"><Property name="jetty.http.idleTimeout" deprecated="http.timeout" default="30000"/></Set> <Set name="soLingerTime"><Property name="jetty.http.soLingerTime" deprecated="http.soLingerTime" default="-1"/></Set> <Set name="acceptorPriorityDelta"><Property name="jetty.http.acceptorPriorityDelta" deprecated="http.acceptorPriorityDelta" default="0"/></Set> <Set name="acceptQueueSize"><Property name="jetty.http.acceptQueueSize" deprecated="http.acceptQueueSize" default="0"/></Set> </New> </Arg> </Call> </Configure>

复制代码

  现在讲这个文件添加到文件列表中:

复制代码

<plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.3.11.v20160721</version> <configuration> <jettyXml>jetty.xml,jetty-http.xml,jetty-ssl.xml,jetty-https.xml</jettyXml> </configuration> </plugin>

复制代码

  当然也可以使用httpConnector元素来配置同上面的例子一样。

23.2.4 配置你的WebApp

  这些配置参数应用到你的webapp中。它们可以实现所有的要求。

webApp

  这是一个继承了org.eclipse.jetty.webapp.WebAppContext的org.eclipse.jetty.maven.plugin.JettyWebAppContext实例。你可以使用这个对象上所有的方法来配置你的webapp。下面几个是最常用的:

contextPath

  你web应用的根路径。默认设置为“/”,如果你可以设置一个路径在“/”下面,例如/mycontext

descriptor

  当前web应用的web.xml路径

defaultsDescriptor

  webdefault.xml的路径,会在web.xml之前应用这个文件内容。如果你不指定一个,那么Jetty会使用一个在jetty-webapp.jar里面的webdefault.xml。

overrideDescriptor

  当Jetty读取web.xml后要覆盖的配置文件。你可以用这个文件来覆盖或者增加配置。

tempDirectory

  在web应用运行时,Jetty用来扩展或者拷贝jar文件和JSP编译后类的文件夹路径,默认路径是${project.build.outputDirectory}/tmp

baseResource

  Jetty静态资源的根目录,默认为src/main/webapp

resourceBases

  用来替代baseResource,如果你有多个静态目录。这是一个地址名字的数组。

baseAppFirst

  默认为true。控制是否要在web应用的原始资源加载前或者加载后覆盖war包。

containerIncludeJarPattern

  默认为"./javax.servlet-[^/]\.jar$|./servlet-api-[^/]\.jar$|.javax.servlet.jsp.jstl-[^/]\.jar|.taglibs-standard-impl-.\.jar"。这是一个匹配规则,用来匹配容器classpath(注意:是容器的classpath不是web应用的classpath)里jar包的名字中应该被扫描的fragments,tlds和annotations 。这和context中org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern 属性比较相似。用户也可以定义额外的需要被扫描的jar包。

contextXml

  应用到web应用的context的xml的路径,在元素webApp以后。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

IDEA jetty端口修改

jetty运行时默认端口为8080,如何修改,有以下方式:1.外置Jetty如果使用独立的jettyserver,则到JETTY\_HOME/etc/jetty.xml搜索"Setconnectors",定位到之后,修改jetty.port后面的default值即可。!在此输入图片描述(http://static.oschina.net/

KVM调整cpu和内存

一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid

Jetty Maven Plugin 配置说明 - HelloWorld