eclipse - 如何修改 jetty-home-11.0.6\etc\*.xml 文件
问题描述
我正在将 Jetty9 更新为 Jetty11 并理解了 Jetty-Home 和 Jetty-Base 目录的概念。我的问题是如何修改以下文件,因为 Jeety-Home 是只读目录,不应在 Jetty-Home 目录中更新。
- 等\jetty.XML
- 等\webdefault.XML
- 等\jetty-requestlog.xml
- lib\jetty-http-11.0.6.jar\org\eclipse\jetty\http(添加 MimeTypes)
我正在阅读有关自定义 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}
正如您将看到的,为了实现最终目标,您没有更改目录中的任何内容。
jetty.httpConfig.sendServerVersion
假装etc\jetty.xml
${jetty.base}/start.d/*.ini
这是一个属性,只需在适当的文件中定义您想要的值。
- 将查询参数增加到
10000
inetc\jetty.xml
。<Call name="setAttribute"> <Arg>org.eclipse.jetty.server.Request.maxFormKeys</Arg> <Arg>10000</Arg> </Call>
这不能作为服务器属性或属性。
如果要配置 maxFormKeys,请针对特定的 webapp 和/或上下文进行配置。
为您的 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>
- 将开发模式设置为 false
etc\webdefault.xml
<init-param> <param-name>development</param-name> <param-value>false</param-value> </init-param>
- 在 lib\jetty-http-11.0.6.jar\org\eclipse\jetty\http 文件夹下的 mime.properties 文件中添加 MIME 类型
appcache=text/cache-manifest ttf=application/font-sfnt
对于这两者,配置它们的正确位置是您的 webapp 特定描述符。
注意:mime.properties
定义MimeTypes
默认值,其中的值MimeTypes
仅用于从DefaultServlet
.
对于自定义描述符行为,您可以在特定的 webapp 和/或上下文中配置它。
你可以:
- 声明整个新的默认描述符
<Set name="defaultsDescriptor">...location...</Set>
- 或提供一个替换描述符以在默认描述符之后应用,这只是与默认描述符的更改差异。
<Set name="overrideDescriptor">...location...</Set>
WEB-INF/web.xml
或在描述符中提供您想要的条目。
对于选项 1(不建议使用这种方法,因为您正在使用 jetty 本身的版本,并且不会获得更新版本的 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>
推荐阅读
- django - 没有在我的 django 项目中使用 gunicorn 创建 Sock 文件
- javascript - 试图只显示一种形式
- r - R提取随机均匀样本并创建数据帧
- python - SQLAlchemy,在日期范围在另一个表的日期范围内的表列中选择值的最佳方法是什么?
- dictionary - 如何从中心点计算矩形的纬度和经度
- python - 如何使用用户输入来关闭或继续 while 循环
- php - 如何避免用户在 WooCommerce 中编辑某些帐单地址字段?
- python - 使用 Python 等待页面元素(xpath)出现在 Selenium Webdriver 中的最有效方法是什么?
- android - 如何(本地)使用 Firebase Cloud Storage 对存储图像进行单元测试
- javascript - 如何从当前日期设置输入字段的最大日期