我的问题如下:
我提供了一个webapp.war和一个Tomcat服务器来部署它。
我的客户可以选择不使用我的服务器并使用将我的应用程序部署在Jetty中作为外部Web应用程序的服务。
Jetty对POST大小的限制是默认的(200k),并且对于我的应用来说太小而无法正常运行其所有功能 - 我的HTTP 1/1 POST请求被截断并变得主要无法使用。
我需要做的是配置我的webapp,以便在Jetty中作为外部应用程序部署时,其最大POST大小是我选择的值 - 如1M。
我做了一些研究,我发现可以配置jetty来改变特定webapp的POST大小,但是由于我不使用Jetty,我还不清楚这个设置应该去哪里以及有什么区别从设置的角度来看,在外部Web应用程序和Jetty中的内部Web应用程序之间(路径除外)。
http://wiki.eclipse.org/Jetty_WTP_Plugin/Jetty_WTP_External_WebApp
我本来希望了解更多,但我对Jetty中的外部webapps的研究并不是很偶然。
我尝试过JVM方法,设置" org.eclipse.jetty.server.Request.maxFormContentSize"环境变量为1000000,但我注意到我的设置行为没有变化。
请求不会在Tomcat中截断(它也在默认配置下运行),但是到目前为止,无论我采取了什么措施来阻止这种情况发生,它都会在Jetty上被截断。
我不应该改变Jetty服务器的全局设置,如果我可以避免它,但即使我不得不妥协,也不会有任何进展。
你们对我该做什么有什么想法吗?
答案 0 :(得分:2)
你可以
1)启动Jetty,并将org.eclipse.jetty.server.Request.maxFormContentSize系统属性设置为所需的值。
(这将设置JVM中所有应用的所有计数)
java -Dorg.eclipse.jetty.server.Request.maxFormContentSize=99900000 -jar start.jar
2)更改单个Webapp的最大表单大小
ContextHandler.setMaxFormContentSize(int maxSize);
您可以在webapp外部的上下文XML部署描述符中执行此操作,也可以在webapp的WEB-INF目录中的jetty-web.xml文件中执行此操作。
在任何一种情况下,XML文件的语法都是相同的:
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Max Form Size -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<Set name="maxFormContentSize">200000</Set>
</Configure>
3)更改服务器上所有应用的最大表单大小
在要修改最大表单内容大小的服务器实例上设置一个属性:
<configure class="org.eclipse.jetty.server.Server">
<Call name="setAttribute">
<Arg>org.eclipse.jetty.server.Request.maxFormContentSize</Arg>
<Arg>200000</Arg>
</Call>
</configure>
答案 1 :(得分:2)
如果您正在编写自己的java jetty服务器,这就是如何直接从java源代码更改主体大小的方法
org.eclipse.jetty.server.Server server =
new org.eclipse.jetty.server.Server(port);
// configure http request body size limit to 100MB
server.setAttribute("org.eclipse.jetty.server.Request.maxFormContentSize", "100000000");
...
server.start();
server.join();