Jetty启动应用

作者: hutou | 来源:发表于2017-01-10 17:37 被阅读194次

    配置

    pom.xml文件修改

            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-server</artifactId>
            </dependency>
            <!-- Jetty Webapp -->
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-webapp</artifactId>
            </dependency>
    

    Jetty配置文件

    建立一个目录jetty/etc,在这个目录下创建jetty.xml

    <?xml version="1.0"?>
    <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
    
    <!-- =============================================================== -->
    <!-- Documentation of this file format can be found at:              -->
    <!-- http://wiki.eclipse.org/Jetty/Reference/jetty.xml_syntax        -->
    <!--                                                                 -->
    <!-- Additional configuration files are available in $JETTY_HOME/etc -->
    <!-- and can be mixed in. See start.ini file for the default         -->
    <!-- configuration files.                                            -->
    <!--                                                                 -->
    <!-- For a description of the configuration mechanism, see the       -->
    <!-- output of:                                                      -->
    <!--   java -jar start.jar -?                                        -->
    <!-- =============================================================== -->
    
    <!-- =============================================================== -->
    <!-- Configure a Jetty Server instance with an ID "Server"           -->
    <!-- Other configuration files may also configure the "Server"       -->
    <!-- ID, in which case they are adding configuration to the same     -->
    <!-- instance.  If other configuration have a different ID, they     -->
    <!-- will create and configure another instance of Jetty.            -->
    <!-- Consult the javadoc of o.e.j.server.Server for all              -->
    <!-- configuration that may be set here.                             -->
    <!-- =============================================================== -->
    <Configure id="Server" class="org.eclipse.jetty.server.Server">
    
        <!-- =========================================================== -->
        <!-- Configure the Server Thread Pool.                           -->
        <!-- The server holds a common thread pool which is used by      -->
        <!-- default as the executor used by all connectors and servlet  -->
        <!-- dispatches.                                                 -->
        <!--                                                             -->
        <!-- Configuring a fixed thread pool is vital to controlling the -->
        <!-- maximal memory footprint of the server and is a key tuning  -->
        <!-- parameter for tuning.  In an application that rarely blocks -->
        <!-- then maximal threads may be close to the number of 5*CPUs.  -->
        <!-- In an application that frequently blocks, then maximal      -->
        <!-- threads should be set as high as possible given the memory  -->
        <!-- available.                                                  -->
        <!--                                                             -->
        <!-- Consult the javadoc of o.e.j.util.thread.QueuedThreadPool   -->
        <!-- for all configuration that may be set here.                 -->
        <!-- =========================================================== -->
        <!-- uncomment to change type of threadpool
        <Arg name="threadpool"><New id="threadpool" class="org.eclipse.jetty.util.thread.QueuedThreadPool"/></Arg>
        -->
        <Get name="ThreadPool">
          <Set name="minThreads" type="int"><Property name="threads.min" default="10"/></Set>
          <Set name="maxThreads" type="int"><Property name="threads.max" default="200"/></Set>
          <Set name="idleTimeout" type="int"><Property name="threads.timeout" default="60000"/></Set>
          <Set name="detailedDump">false</Set>
        </Get>
    
        <!-- =========================================================== -->
        <!-- Add shared Scheduler instance                               -->
        <!-- =========================================================== -->
        <Call name="addBean">
          <Arg>
            <New class="org.eclipse.jetty.util.thread.ScheduledExecutorScheduler"/>
          </Arg>
        </Call>
    
        <!-- =========================================================== -->
        <!-- Http Configuration.                                         -->
        <!-- This is a common configuration instance used by all         -->
        <!-- connectors that can carry HTTP semantics (HTTP, HTTPS, SPDY)-->
        <!-- It configures the non wire protocol aspects of the HTTP     -->
        <!-- semantic.                                                   -->
        <!--                                                             -->
        <!-- This configuration is only defined here and is used by      -->
        <!-- reference from the jetty-http.xml, jetty-https.xml and      -->
        <!-- jetty-spdy.xml configuration files which instantiate the    -->
        <!-- connectors.                                                 -->
        <!--                                                             -->
        <!-- Consult the javadoc of o.e.j.server.HttpConfiguration       -->
        <!-- for all configuration that may be set here.                 -->
        <!-- =========================================================== -->
        <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"><Property name="jetty.output.buffer.size" default="32768" /></Set>
          <Set name="outputAggregationSize"><Property name="jetty.output.aggregation.size" default="8192" /></Set>
          <Set name="requestHeaderSize"><Property name="jetty.request.header.size" default="8192" /></Set>
          <Set name="responseHeaderSize"><Property name="jetty.response.header.size" default="8192" /></Set>
          <Set name="sendServerVersion"><Property name="jetty.send.server.version" default="true" /></Set>
          <Set name="sendDateHeader"><Property name="jetty.send.date.header" default="false" /></Set>
          <Set name="headerCacheSize">512</Set>
          <Set name="delayDispatchUntilContent"><Property name="jetty.delayDispatchUntilContent" default="false"/></Set>
          <!-- Uncomment to enable handling of X-Forwarded- style headers
          <Call name="addCustomizer">
            <Arg><New class="org.eclipse.jetty.server.ForwardedRequestCustomizer"/></Arg>
          </Call>
          -->
        </New>
    
    
        <!-- =========================================================== -->
        <!-- Set the default handler structure for the Server            -->
        <!-- A handler collection is used to pass received requests to   -->
        <!-- both the ContextHandlerCollection, which selects the next   -->
        <!-- handler by context path and virtual host, and the           -->
        <!-- DefaultHandler, which handles any requests not handled by   -->
        <!-- the context handlers.                                       -->
        <!-- Other handlers may be added to the "Handlers" collection,   -->
        <!-- for example the jetty-requestlog.xml file adds the          -->
        <!-- RequestLogHandler after the default handler                 -->
        <!-- =========================================================== -->
        <Set name="handler">
          <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
            <Set name="handlers">
             <Array type="org.eclipse.jetty.server.Handler">
               <Item>
                 <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
               </Item>
               <Item>
                 <New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
               </Item>
             </Array>
            </Set>
          </New>
        </Set>
    
        <!-- =========================================================== -->
        <!-- extra server options                                        -->
        <!-- =========================================================== -->
        <Set name="stopAtShutdown">true</Set>
        <Set name="stopTimeout">5000</Set>
        <Set name="dumpAfterStart"><Property name="jetty.dump.start" default="false"/></Set>
        <Set name="dumpBeforeStop"><Property name="jetty.dump.stop" default="false"/></Set>
    
    </Configure>
    

    建立文件webdefault.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app 
       xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
       metadata-complete="false"
       version="3.1"> 
    
      <!-- ===================================================================== -->
      <!-- This file contains the default descriptor for web applications.       -->
      <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
      <!-- The intent of this descriptor is to include jetty specific or common  -->
      <!-- configuration for all webapps.   If a context has a webdefault.xml    -->
      <!-- descriptor, it is applied before the context's own web.xml file       -->
      <!--                                                                       -->
      <!-- A context may be assigned a default descriptor by calling             -->
      <!-- WebAppContext.setDefaultsDescriptor(String).                          -->
      <!--                                                                       -->
      <!-- This file is present in the jetty-webapp.jar, and is used as the      -->
      <!-- defaults descriptor if no other is explicitly set on a context.       -->
      <!--                                                                       -->
      <!-- A copy of this file is also placed into the $JETTY_HOME/etc dir of    -->
      <!-- the  distribution, and is referenced by some of the other xml files,  -->
      <!-- eg the jetty-deploy.xml file.                                         -->
      <!-- ===================================================================== -->
    
      <description>
        Default web.xml file.  
        This file is applied to a Web application before it's own WEB_INF/web.xml file
      </description>
    
      <!-- ==================================================================== -->
      <!-- Removes static references to beans from javax.el.BeanELResolver to   -->
      <!-- ensure webapp classloader can be released on undeploy                -->
      <!-- ==================================================================== -->
      <listener>
       <listener-class>org.eclipse.jetty.servlet.listener.ELContextCleaner</listener-class>
      </listener>
      
      <!-- ==================================================================== -->
      <!-- Removes static cache of Methods from java.beans.Introspector to      -->
      <!-- ensure webapp classloader can be released on undeploy                -->
      <!-- ==================================================================== -->  
      <listener>
       <listener-class>org.eclipse.jetty.servlet.listener.IntrospectorCleaner</listener-class>
      </listener>
      
    
      <!-- ==================================================================== -->
      <!-- Context params to control Session Cookies                            -->
      <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
      <!--
        UNCOMMENT TO ACTIVATE 
        <context-param> 
          <param-name>org.eclipse.jetty.servlet.SessionDomain</param-name> 
          <param-value>127.0.0.1</param-value> 
        </context-param> 
        <context-param>
          <param-name>org.eclipse.jetty.servlet.SessionPath</param-name>
          <param-value>/</param-value>
        </context-param>
        <context-param>
          <param-name>org.eclipse.jetty.servlet.MaxAge</param-name>
          <param-value>-1</param-value>
        </context-param>
      -->
    
      <!-- ==================================================================== -->
      <!-- The default servlet.                                                 -->
      <!-- This servlet, normally mapped to /, provides the handling for static -->
      <!-- content, OPTIONS and TRACE methods for the context.                  -->
      <!-- The following initParameters are supported:                          -->
      <!--  
     *  acceptRanges      If true, range requests and responses are
     *                    supported
     *
     *  dirAllowed        If true, directory listings are returned if no
     *                    welcome file is found. Else 403 Forbidden.
     *
     *  welcomeServlets   If true, attempt to dispatch to welcome files
     *                    that are servlets, but only after no matching static
     *                    resources could be found. If false, then a welcome
     *                    file must exist on disk. If "exact", then exact
     *                    servlet matches are supported without an existing file.
     *                    Default is true.
     *
     *                    This must be false if you want directory listings,
     *                    but have index.jsp in your welcome file list.
     *
     *  redirectWelcome   If true, welcome files are redirected rather than
     *                    forwarded to.
     *
     *  gzip              If set to true, then static content will be served as
     *                    gzip content encoded if a matching resource is
     *                    found ending with ".gz"
     *
     *  resourceBase      Set to replace the context resource base
     *
     *  resourceCache     If set, this is a context attribute name, which the servlet
     *                    will use to look for a shared ResourceCache instance.
     *
     *  relativeResourceBase
     *                    Set with a pathname relative to the base of the
     *                    servlet context root. Useful for only serving static content out
     *                    of only specific subdirectories.
     *
     *  pathInfoOnly      If true, only the path info will be applied to the resourceBase
     *
     *  stylesheet        Set with the location of an optional stylesheet that will be used
     *                    to decorate the directory listing html.
     *
     *  aliases           If True, aliases of resources are allowed (eg. symbolic
     *                    links and caps variations). May bypass security constraints.
     *                    
     *  etags             If True, weak etags will be generated and handled.
     *
     *  maxCacheSize      The maximum total size of the cache or 0 for no cache.
     *  maxCachedFileSize The maximum size of a file to cache
     *  maxCachedFiles    The maximum number of files to cache
     *
     *  useFileMappedBuffer
     *                    If set to true, it will use mapped file buffers to serve static content
     *                    when using an NIO connector. Setting this value to false means that
     *                    a direct buffer will be used instead of a mapped file buffer.
     *                    This file sets the value to true.
     *
     *  cacheControl      If set, all static content will have this value set as the cache-control
     *                    header.
     *
     -->
     <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
      <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class>
        <init-param>
          <param-name>aliases</param-name>
          <param-value>false</param-value>
        </init-param>
        <init-param>
          <param-name>acceptRanges</param-name>
          <param-value>true</param-value>
        </init-param>
        <init-param>
          <param-name>dirAllowed</param-name>
          <param-value>true</param-value>
        </init-param>
        <init-param>
          <param-name>welcomeServlets</param-name>
          <param-value>false</param-value>
        </init-param>
        <init-param>
          <param-name>redirectWelcome</param-name>
          <param-value>false</param-value>
        </init-param>
        <init-param>
          <param-name>maxCacheSize</param-name>
          <param-value>256000000</param-value>
        </init-param>
        <init-param>
          <param-name>maxCachedFileSize</param-name>
          <param-value>200000000</param-value>
        </init-param>
        <init-param>
          <param-name>maxCachedFiles</param-name>
          <param-value>2048</param-value>
        </init-param>
        <init-param>
          <param-name>gzip</param-name>
          <param-value>false</param-value>
        </init-param>
        <init-param>
          <param-name>etags</param-name>
          <param-value>false</param-value>
        </init-param>
        <init-param>
          <param-name>useFileMappedBuffer</param-name>
          <param-value>true</param-value>
        </init-param>
        <!--
        <init-param>
          <param-name>resourceCache</param-name>
          <param-value>resourceCache</param-value>
        </init-param>
        -->
        <!--
        <init-param>
          <param-name>cacheControl</param-name>
          <param-value>max-age=3600,public</param-value>
        </init-param>
        -->
        <load-on-startup>0</load-on-startup>
      </servlet>
    
      <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/</url-pattern>
      </servlet-mapping>
    
    
      <!-- ==================================================================== -->
      <!-- JSP Servlet                                                          -->
      <!-- This is the jasper JSP servlet.                                      -->
      <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
      <!-- The JSP page compiler and execution servlet, which is the mechanism  -->
      <!-- used by the jsp container to support JSP pages.  Traditionally,      -->
      <!-- this servlet is mapped to URL pattern "*.jsp".  This servlet         -->
      <!-- supports the following initialization parameters (default values     -->
      <!-- are in square brackets):                                             -->
      <!--                                                                      -->
      <!--   checkInterval       If development is false and reloading is true, -->
      <!--                       background compiles are enabled. checkInterval -->
      <!--                       is the time in seconds between checks to see   -->
      <!--                       if a JSP page needs to be recompiled. [300]    -->
      <!--                                                                      -->
      <!--   compiler            Which compiler Ant should use to compile JSP   -->
      <!--                       pages.  See the Ant documentation for more     -->
      <!--                       information. [javac]                           -->
      <!--                                                                      -->
      <!--   classdebuginfo      Should the class file be compiled with         -->
      <!--                       debugging information?  [true]                 -->
      <!--                                                                      -->
      <!--   classpath           What class path should I use while compiling   -->
      <!--                       generated servlets?  [Created dynamically      -->
      <!--                       based on the current web application]          -->
      <!--                       Set to ? to make the container explicitly set  -->
      <!--                       this parameter.                                -->
      <!--                                                                      -->
      <!--   development         Is Jasper used in development mode (will check -->
      <!--                       for JSP modification on every access)?  [true] -->
      <!--                                                                      -->
      <!--   enablePooling       Determines whether tag handler pooling is      -->
      <!--                       enabled  [true]                                -->
      <!--                                                                      -->
      <!--   fork                Tell Ant to fork compiles of JSP pages so that -->
      <!--                       a separate JVM is used for JSP page compiles   -->
      <!--                       from the one Tomcat is running in. [true]      -->
      <!--                                                                      -->
      <!--   ieClassId           The class-id value to be sent to Internet      -->
      <!--                       Explorer when using <jsp:plugin> tags.         -->
      <!--                       [clsid:8AD9C840-044E-11D1-B3E9-00805F499D93]   -->
      <!--                                                                      -->
      <!--   javaEncoding        Java file encoding to use for generating java  -->
      <!--                       source files. [UTF-8]                          -->
      <!--                                                                      -->
      <!--   keepgenerated       Should we keep the generated Java source code  -->
      <!--                       for each page instead of deleting it? [true]   -->
      <!--                                                                      -->
      <!--   logVerbosityLevel   The level of detailed messages to be produced  -->
      <!--                       by this servlet.  Increasing levels cause the  -->
      <!--                       generation of more messages.  Valid values are -->
      <!--                       FATAL, ERROR, WARNING, INFORMATION, and DEBUG. -->
      <!--                       [WARNING]                                      -->
      <!--                                                                      -->
      <!--   mappedfile          Should we generate static content with one     -->
      <!--                       print statement per input line, to ease        -->
      <!--                       debugging?  [false]                            -->
      <!--                                                                      -->
      <!--                                                                      -->
      <!--   reloading           Should Jasper check for modified JSPs?  [true] -->
      <!--                                                                      -->
      <!--   suppressSmap        Should the generation of SMAP info for JSR45   -->
      <!--                       debugging be suppressed?  [false]              -->
      <!--                                                                      -->
      <!--   dumpSmap            Should the SMAP info for JSR45 debugging be    -->
      <!--                       dumped to a file? [false]                      -->
      <!--                       False if suppressSmap is true                  -->
      <!--                                                                      -->
      <!--   scratchdir          What scratch directory should we use when      -->
      <!--                       compiling JSP pages?  [default work directory  -->
      <!--                       for the current web application]               -->
      <!--                                                                      -->
      <!--   tagpoolMaxSize      The maximum tag handler pool size  [5]         -->
      <!--                                                                      -->
      <!--   xpoweredBy          Determines whether X-Powered-By response       -->
      <!--                       header is added by generated servlet  [false]  -->
      <!--                                                                      -->
      <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
      <servlet id="jsp">
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.eclipse.jetty.jsp.JettyJspServlet</servlet-class>
        <init-param>
          <param-name>logVerbosityLevel</param-name>
          <param-value>DEBUG</param-value>
        </init-param>
        <init-param>
          <param-name>fork</param-name>
          <param-value>false</param-value>
        </init-param>
        <init-param>
          <param-name>xpoweredBy</param-name>
          <param-value>false</param-value>
        </init-param>
        <init-param>
          <param-name>compilerTargetVM</param-name>
          <param-value>1.7</param-value>
        </init-param>
        <init-param>
          <param-name>compilerSourceVM</param-name>
          <param-value>1.7</param-value>
        </init-param>
        <!--  
        <init-param>
            <param-name>classpath</param-name>
            <param-value>?</param-value>
        </init-param>
        -->
        <load-on-startup>0</load-on-startup>
      </servlet>
    
      <servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.jsp</url-pattern>
        <url-pattern>*.jspf</url-pattern>
        <url-pattern>*.jspx</url-pattern>
        <url-pattern>*.xsp</url-pattern>
        <url-pattern>*.JSP</url-pattern>
        <url-pattern>*.JSPF</url-pattern>
        <url-pattern>*.JSPX</url-pattern>
        <url-pattern>*.XSP</url-pattern>
      </servlet-mapping>
    
    
      <!-- ==================================================================== -->
      <!-- Default session configuration                                        -->
      <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
      <session-config>
        <session-timeout>30</session-timeout>
      </session-config>
    
      <!-- ==================================================================== -->
      <!-- Default MIME mappings                                                -->
      <!-- The default MIME mappings are provided by the mime.properties        -->
      <!-- resource in the jetty-http.jar file.  Additional or modified         -->
      <!-- mappings may be specified here                                       -->
      <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
      <!-- UNCOMMENT TO ACTIVATE
      <mime-mapping>
        <extension>mysuffix</extension>
        <mime-type>mymime/type</mime-type>
      </mime-mapping>
      -->
    
      <!-- ==================================================================== -->
      <!-- Default welcome files                                                -->
      <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    
      <!-- ==================================================================== -->
      <!-- Default locale encodings                                             -->
      <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
      <locale-encoding-mapping-list>
        <locale-encoding-mapping>
          <locale>ar</locale>
          <encoding>ISO-8859-6</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>be</locale>
          <encoding>ISO-8859-5</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>bg</locale>
          <encoding>ISO-8859-5</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>ca</locale>
          <encoding>ISO-8859-1</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>cs</locale>
          <encoding>ISO-8859-2</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>da</locale>
          <encoding>ISO-8859-1</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>de</locale>
          <encoding>ISO-8859-1</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>el</locale>
          <encoding>ISO-8859-7</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>en</locale>
          <encoding>ISO-8859-1</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>es</locale>
          <encoding>ISO-8859-1</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>et</locale>
          <encoding>ISO-8859-1</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>fi</locale>
          <encoding>ISO-8859-1</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>fr</locale>
          <encoding>ISO-8859-1</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>hr</locale>
          <encoding>ISO-8859-2</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>hu</locale>
          <encoding>ISO-8859-2</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>is</locale>
          <encoding>ISO-8859-1</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>it</locale>
          <encoding>ISO-8859-1</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>iw</locale>
          <encoding>ISO-8859-8</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>ja</locale>
          <encoding>Shift_JIS</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>ko</locale>
          <encoding>EUC-KR</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>lt</locale>
          <encoding>ISO-8859-2</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>lv</locale>
          <encoding>ISO-8859-2</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>mk</locale>
          <encoding>ISO-8859-5</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>nl</locale>
          <encoding>ISO-8859-1</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>no</locale>
          <encoding>ISO-8859-1</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>pl</locale>
          <encoding>ISO-8859-2</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>pt</locale>
          <encoding>ISO-8859-1</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>ro</locale>
          <encoding>ISO-8859-2</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>ru</locale>
          <encoding>ISO-8859-5</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>sh</locale>
          <encoding>ISO-8859-5</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>sk</locale>
          <encoding>ISO-8859-2</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>sl</locale>
          <encoding>ISO-8859-2</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>sq</locale>
          <encoding>ISO-8859-2</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>sr</locale>
          <encoding>ISO-8859-5</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>sv</locale>
          <encoding>ISO-8859-1</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>tr</locale>
          <encoding>ISO-8859-9</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>uk</locale>
          <encoding>ISO-8859-5</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>zh</locale>
          <encoding>GB2312</encoding>
        </locale-encoding-mapping>
        <locale-encoding-mapping>
          <locale>zh_TW</locale>
          <encoding>Big5</encoding>
        </locale-encoding-mapping>
      </locale-encoding-mapping-list>
    
      <!-- ==================================================================== -->
      <!-- Disable TRACE method with security constraint                        -->
      <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
      <security-constraint>
        <web-resource-collection>
          <web-resource-name>Disable TRACE</web-resource-name>
          <url-pattern>/</url-pattern>
          <http-method>TRACE</http-method>
        </web-resource-collection>
        <auth-constraint/>
      </security-constraint>
      <security-constraint>
        <web-resource-collection>
          <web-resource-name>Enable everything but TRACE</web-resource-name>
          <url-pattern>/</url-pattern>
          <http-method-omission>TRACE</http-method-omission>
        </web-resource-collection>
      </security-constraint>
    
    </web-app>
    

    启动应用代码

    JettyServer.java

    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    
    import org.apache.commons.lang3.StringUtils;
    import org.eclipse.jetty.server.Server;
    import org.eclipse.jetty.server.handler.ContextHandlerCollection;
    import org.eclipse.jetty.webapp.WebAppContext;
    import org.eclipse.jetty.xml.XmlConfiguration;
    import org.xml.sax.SAXException;
    
    public class JettyServer extends Server {
        private String xmlConfigPath;
    
        private String contextPath;
    
        private String warPath;
    
        private String resourceBase = "./src/main/webapp";
    
        private String webXmlPath = "./src/main/webapp/WEB-INF/web.xml";
    
        public JettyServer(int port,String xmlConfigPath, String contextPath,
                String resourceBase, String webXmlPath) {
            this(port,xmlConfigPath, contextPath, resourceBase, webXmlPath, null);
        }
    
        public JettyServer(int port,String xmlConfigPath, String contextPath) {
            this(port,xmlConfigPath, contextPath, null, null, null);
        }
    
        public JettyServer(int port,String xmlConfigPath, String contextPath,
                String warPath) {
            this(port,xmlConfigPath, contextPath, null, null, warPath);
        }
    
        public JettyServer(int port,String xmlConfigPath, String contextPath,
                String resourceBase, String webXmlPath, String warPath) {
            super(port);
            if (StringUtils.isNotBlank(xmlConfigPath)) {
                this.xmlConfigPath = xmlConfigPath;
                readXmlConfig();
            }
    
            if (StringUtils.isNotBlank(warPath)) {
                this.warPath = warPath;
                if (StringUtils.isNotBlank(contextPath)) {
                    this.contextPath = contextPath;
                    applyHandle(true);
                }
            } else {
                if (StringUtils.isNotBlank(resourceBase))
                    this.resourceBase = resourceBase;
                if (StringUtils.isNotBlank(webXmlPath))
                    this.webXmlPath = webXmlPath;
                if (StringUtils.isNotBlank(contextPath)) {
                    this.contextPath = contextPath;
                    applyHandle(false);
                }
            }
    
        }
    
        private void readXmlConfig() {
            try {
                XmlConfiguration configuration = new XmlConfiguration(
                        new FileInputStream(this.xmlConfigPath));
                configuration.configure(this);
            } catch (FileNotFoundException e1) {
                e1.printStackTrace();
            } catch (SAXException e1) {
                e1.printStackTrace();
            } catch (IOException e1) {
                e1.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public void applyHandle(Boolean warDeployFlag) {
    
            ContextHandlerCollection handler = new ContextHandlerCollection();
    
            WebAppContext webapp = new WebAppContext();
            webapp.setContextPath(contextPath);
            webapp.setDefaultsDescriptor("./jetty/etc/webdefault.xml");
    
            if (!warDeployFlag) {
                webapp.setResourceBase(resourceBase);
                webapp.setDescriptor(webXmlPath);
            } else {
                webapp.setWar(warPath);
            }
    
            handler.addHandler(webapp);
    
            super.setHandler(handler);
        }
    
        public void startServer() {
            try {
                super.start();
                System.out.println("current thread:"
                        + super.getThreadPool().getThreads() + "| idle thread:"
                        + super.getThreadPool().getIdleThreads());
                super.join();
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }
    
        public String getXmlConfigPath() {
            return xmlConfigPath;
        }
    
        public void setXmlConfigPath(String xmlConfigPath) {
            this.xmlConfigPath = xmlConfigPath;
        }
    
        public String getContextPath() {
            return contextPath;
        }
    
        public void setContextPath(String contextPath) {
            this.contextPath = contextPath;
        }
    
        public String getResourceBase() {
            return resourceBase;
        }
    
        public void setResourceBase(String resourceBase) {
            this.resourceBase = resourceBase;
        }
    
        public String getWebXmlPath() {
            return webXmlPath;
        }
    
        public void setWebXmlPath(String webXmlPath) {
            this.webXmlPath = webXmlPath;
        }
    
        public String getWarPath() {
            return warPath;
        }
    
        public void setWarPath(String warPath) {
            this.warPath = warPath;
        }
    }
    

    启动应用的主程序

    public class JettyServerStart {
        public static void main(String[] args) {
            JettyServer server = new JettyServer(9090,
                    "./jetty/etc/jetty.xml", "/");
            server.startServer();
        }
    }
    

    相关文章

      网友评论

        本文标题:Jetty启动应用

        本文链接:https://www.haomeiwen.com/subject/qgyruttx.html