blog-web/source/_posts/Java/Maven(5)-jetty-plugin.md
结发受长生 10e4564c71 时间调整
2018-05-20 19:39:08 +08:00

3.7 KiB

title date tags categories
Maven(5)-jetty-plugin 2017-10-19 20:32:31
maven
Java

与tomcat类似 , jetty也是一个servlet容器 , 为例如jsp和servlet提供运行环境

这里我们使用jetty-maven-plugin来部署运行一个web项目 关于如何把普通的maven项目改造为web项目 , 可以参考 Maven(2)-搭建web项目

在之前 , 我们仍然需要把这个项目去发布到tomcat然后运行tomcat 这里使用插件来实现把jetty嵌入到项目当中

配置插件

首先需要在pom.xml当中配置这个插件

<build>
...
<plugins>
  <plugin>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>9.4.7.RC0</version>
    <configuration>
      <jettyXml>jetty.xml</jettyXml>
      <webAppSourceDirectory>src/main/webapp</webAppSourceDirectory>
      <scanIntervalSeconds>3</scanIntervalSeconds>
      <contextPath>/</contextPath>
    </configuration>
  </plugin>
</plugins>
...
</build>

创建jetty配置文件

上面的配置指定了jetty.xml作为jetty的配置文件 当然如果配置比较简单 , 也可以直接写在这个插件的<configuration>当中

jetty.xml ( 直接放在项目的根目录下 )

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">

<Configure id="Server" class="org.eclipse.jetty.server.Server">

    <Arg name="threadpool">  
      <New id="threadpool" class="org.eclipse.jetty.util.thread.QueuedThreadPool">  
        <Arg name="minThreads" type="int">10</Arg>  
        <Arg name="maxThreads" type="int">200</Arg>  
        <Arg name="idleTimeout" type="int">60000</Arg>  
        <Set name="detailedDump">false</Set>  
      </New>  
    </Arg>  
    
    <Call name="addBean">  
      <Arg>  
        <New class="org.eclipse.jetty.util.thread.ScheduledExecutorScheduler"/>  
      </Arg>  
    </Call>  
  
    <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>  
      
    <Call name="addConnector">  
    <Arg>  
      <New class="org.eclipse.jetty.server.ServerConnector">  
        <Arg name="server"><Ref refid="Server" /></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>  
              </New>  
            </Item>  
          </Array>  
        </Arg>  
        <Set name="host"><Property name="jetty.host" /></Set>  
        <Set name="port"><Property name="jetty.port" default="8080" /></Set>  
        <Set name="idleTimeout">30000</Set>  
      </New>  
    </Arg>  
  </Call>
  
    <Set name="stopAtShutdown">true</Set>  
    <Set name="stopTimeout">5000</Set>  
    <Set name="dumpAfterStart">false</Set>  
    <Set name="dumpBeforeStop">false</Set>  
  
</Configure>  

启动运行

直接在项目目录下执行命令

mvn jetty:run -e

加上-e参数 , 如果运行有报错会在控制台打印堆栈信息 之后项目启动成功 , 就可以在浏览器当中根据配置的端口访问了

maven-jetty-plugin