您的位置:首页 > 其它

Jetty9 启动时不能修改静态文件问题解决

2017-10-28 21:44 519 查看

jetty9的解决方案

1.在pom.xml加载jetty9插件

<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.4.5.v20170502</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<webApp>
<contextPath>/basic</contextPath>
<defaultsDescriptor>src/main/resources/webdefault.xml</defaultsDescriptor>
</webApp>
<httpConnector>
<port>8080</port>
</httpConnector>
</configuration>
</plugin>

2.从本地获取webdefault.xml

从 jetty-webapp-9.4.5.v20170502.jar中拿webdefault.xml 复制到工程中 src/resource目录下
这个jar包视版本而定,但是我们可以从maven 本地仓库中查找

目录参考如下:

E:\.m2\repository\org\eclipse\jetty\jetty-webapp\9.4.5.v20170502\jetty-webapp-9.4.5.v20170502.jar

webdefault.xml 参考目录如下:

jetty-webapp-9.4.5.v20170502.jar\org\eclipse\jetty\webapp\webdefault.xml

3.修改 useFileMappedBuffer 的参数

把原来的value true 改为false即可

<init-param>
<param-name>useFileMappedBuffer</param-name>
<param-value>false</param-value>
</init-param>

4.启动时检查加载参数

[INFO] Web defaults = src/main/resources/webdefault.xml
[INFO] Web overrides =  none

如果看到加载的配置项是你配置修改的这个的话,就说明你已经成功了。接下来你就去验证下即可。

另一个通用解决方案

你不用去修改webdefault.xml 以及配置它,直接修改web.xml,加入如下的servlet配置即可

<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class>
<init-param>
<param-name>useFileMappedBuffer</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>10</load-on-startup>
</servlet>

jetty8 升级的痛

更旧版的解决方案我就不说了。

本文的主要目的就是解决从低版本升级的9版本的问题,使用旧的配置不能修改静态资源而写的。

本人是从8.X升级的

遇到的问题就是配置的pom.xml没有生效,经过查看官网解决

8.x 版配置如下

<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.11.v20130520</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<webAppConfig>
<contextPath>/basic</contextPath>
<defaultsDescriptor>src/main/resources/webdefault.xml</defaultsDescriptor>
</webAppConfig>
<connectors>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>8080</port>
<maxIdleTime>60000</maxIdleTime>
</connector>
</connectors>
</configuration>
</plugin>

请注意webApp 和 webAppConfig !

附上官网这一块的配置链接

9.4.x/webdefault-xml.html

从6.x升级上来的 就对着配置就对了,我也不讲人家的野史啦!嘿嘿

谢谢支持!

最后附上9.X版本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 its 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" (default false)
*                    (deprecated: use precompressed)
*
*  precompressed     If set to a comma separated list of file extensions, these
*                    indicate compressed formats that are known to map to a mime-type
*                    that may be listed in a requests Accept-Encoding header.
*                    If set to a boolean True, then a default set of compressed formats
*                    will be used, otherwise no precompressed formats.
*
*  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>precompressed</param-name>
<param-value>gzip,br</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>false</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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息