在jetty中配置外部Web应用的最大发布大小

时间:2014-10-03 15:21:43

标签: web-applications jetty external

我的问题如下:

我提供了一个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/Howto/Configure_Form_Size#Changing_the_Maximum_Form_Size_for_All_Apps_on_a_Server


http://wiki.eclipse.org/Jetty_WTP_Plugin/Jetty_WTP_External_WebApp

我本来希望了解更多,但我对Jetty中的外部webapps的研究并不是很偶然。

我尝试过JVM方法,设置" org.eclipse.jetty.server.Request.maxFormContentSize"环境变量为1000000,但我注意到我的设置行为没有变化。

请求不会在Tomcat中截断(它也在默认配置下运行),但是到目前为止,无论我采取了什么措施来阻止这种情况发生,它都会在Jetty上被截断。

我不应该改变Jetty服务器的全局设置,如果我可以避免它,但即使我不得不妥协,也不会有任何进展。

你们对我该做什么有什么想法吗?

2 个答案:

答案 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>

source: jetty wiki

答案 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();