如何修改jetty-home-11.0.6\etc\*.xml文件

How to modify jetty-home-11.0.6\etc\*.xml files

我正在将 Jetty9 更新到 Jetty11 并了解 Jetty-Home 和 Jetty-Base 目录的概念。我的问题是如何修改以下文件,因为 Jeety-Home 是只读目录,不应在 Jetty-Home 目录中更新。

  1. etc\jetty.XML
  2. etc\webdefault.XML
  3. etc\jetty-requestlog.xml
  4. lib\jetty-http-11.0.6.jar\org\eclipse\jetty\http(添加 MimeType)

我正在阅读有关自定义 Jetty 模块概念的信息,但无法获得太多信息。这是这样做的方法吗? 请分享参考文档

我以前是直接在jetty-distribution-9.4.43.v20210629中修改上述文件

Exa :- 我必须修改以下属性,例如

1. jetty.httpConfig.sendServerVersion to false in etc\jetty.xml
2. Increased the query params to 10000 in etc\jetty.xml.
        <Call name="setAttribute">
            <Arg>org.eclipse.jetty.server.Request.maxFormKeys</Arg>
            <Arg>10000</Arg>
        </Call>
3. set development mode to false in etc\webdefault.xml  
<init-param>
 <param-name>development</param-name>
 <param-value>false</param-value>
</init-param>
4. add below MIME Types in mime.properties file under lib\jetty-http-11.0.6.jar\org\eclipse\jetty\http folder
     appcache=text/cache-manifest
     ttf=application/font-sfnt

如您所见,为了实现您的最终目标,您在 ${jetty.home} 目录中没有进行任何更改。

  1. jetty.httpConfig.sendServerVersion to false in etc\jetty.xml

那是 属性,只需在适当的 ${jetty.base}/start.d/*.ini 文件中定义您想要的值即可。

  1. Increased the query params to 10000 in etc\jetty.xml.
       <Call name="setAttribute">
           <Arg>org.eclipse.jetty.server.Request.maxFormKeys</Arg>
           <Arg>10000</Arg>
       </Call>

这不能用作服务器 属性 或属性。

如果您想配置 maxFormKeys,请针对特定的 Web 应用 and/or 上下文进行配置。

为您的 webapp 使用记录的 XML 可部署文件并设置 maxFormKeys

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "https://www.eclipse.org/jetty/configure_10_0.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
  ... other configuration for your webapp ...
  <Set name="maxFormContentSize">400000</Set>
  <Set name="maxFormKeys">400</Set>
</Configure>
  1. set development mode to false in etc\webdefault.xml
<init-param>
  <param-name>development</param-name>
  <param-value>false</param-value>
</init-param>
  1. add below MIME Types in mime.properties file under lib\jetty-http-11.0.6.jar\org\eclipse\jetty\http folder
    appcache=text/cache-manifest
    ttf=application/font-sfnt

对于这两者,配置它们的正确位置是您的 webapp 特定描述符。

注意:mime.properties 定义了 MimeTypes 默认值,MimeTypes 中的值仅用于提供来自 DefaultServlet.[=41 的静态内容=]

对于自定义描述符行为,您可以在特定的 webapp and/or 上下文中进行配置。

您可以:

  1. <Set name="defaultsDescriptor">...location...</Set>
  2. 声明整个新的默认描述符
  3. 或者提供一个替换描述符以在默认描述符之后应用,这只是与默认描述符不同的变化。 <Set name="overrideDescriptor">...location...</Set>
  4. 或在 WEB-INF/web.xml 描述符中提供您想要的条目。

对于选项 1(不推荐这种方法,因为您正在使用 Jetty 本身的版本,并且不会得到 fixes/updates/improvements 新版本的 Jetty),将 webdefault.xml 的全部内容复制到 ${jetty.base}/etc/ 中的新文件中, 并在您的 XML 可部署 ${jetty.base}/webapps/<name>.xml 中引用它,就像这样...

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

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
  ... other configuration for your webapp ...  
  <Set name="defaultsDescriptor"><Property name="jetty.base" default="."/>/etc/custom-default-descriptor.xml</Set>
</Configure>

对于选项 2(最佳服务器级别选项${jetty.base}/etc/override-web.xml
和选项 3(servlet 规范的最正确用法WEB-INF/web.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" >

  <servlet id="jsp">
    <servlet-name>jsp</servlet-name>
    <init-param>
      <param-name>development</param-name>
      <param-value>false</param-value>
    </init-param>
  </servlet>

  <mime-mapping>
    <extension>appcache</extension>
    <mime-type>text/cache-manifest</mime-type>
  </mime-mapping>
  <mime-mapping>
    <extension>ttf</extension>
    <mime-type>application/font-sfnt</mime-type>
  </mime-mapping>
</web-app>

对于选项 2,您可以像这样在 ${jetty.base}/webapps/<name>.xml 中引用它...

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

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
  ... other configuration for your webapp ...  
  <Set name="overrideDescriptor"><Property name="jetty.base" default="."/>/etc/override-web.xml</Set>
</Configure>