2013-05-16 57 views
1

在我的Web應用程序中,有一個表單可以包含大量的數據(這取決於以前的查詢結果)。當表單達到一定的大小時,servlet無法應付並拋出異常。看起來第一次嘗試獲取請求參數會導致問題。Web應用程序服務器上的發佈數據的最大大小是否有限制?

我試圖重現我的測試服務器上的問題,但即使數據大小大於生產服務器上也不會出現問題。

因此,我現在想知道是否有服務器設置限制了可以在請求中傳遞的數據的大小。我只能假設兩臺服務器的配置方式有所不同。

應用程序服務器是Websphere 7.我嘗試過使用IE9,當前FF和當前Chrome的應用程序 - 都產生相同的結果。

唯一的例外是

java.lang.IllegalArgumentException 
com.ibm.wsspi.webcontainer.util.RequestUtils.parseQueryString 196 
com.ibm.ws.webcontainer.servlet.RequestUtils.parsePostData 356 
com.ibm.ws.webcontainer.srt.SRTServletRequest.parseParameters 2051 
com.ibm.ws.webcontainer.srt.SRTServletRequest.getParameter 1651 
com.acme.Servlet.getNDC 126 
com.acme.Servlet.doPost 96 
javax.servlet.http.HttpServlet.service 738 
javax.servlet.http.HttpServlet.service 831 
com.ibm.ws.webcontainer.servlet.ServletWrapper.service 1658 
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest 940 
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest 503 
com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest 181 
com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest 91 
com.ibm.ws.webcontainer.WebContainer.handleRequest 875 
com.ibm.ws.webcontainer.WSWebContainer.handleRequest 1592 
com.ibm.ws.webcontainer.channel.WCChannelLink.ready 186 
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination 453 
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest 515 
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest 306 
com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete 83 
com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted 165 
com.ibm.io.async.AbstractAsyncFuture.invokeCallback 217 
com.ibm.io.async.AsyncChannelFuture.fireCompletionActions 161 
com.ibm.io.async.AsyncFuture.completed 138 
com.ibm.io.async.ResultHandler.complete 204 
com.ibm.io.async.ResultHandler.runEventProcessingLoop 775 
com.ibm.io.async.ResultHandler$2.run 905 
com.ibm.ws.util.ThreadPool$Worker.run 1646 

代碼

protected String getNDC(HttpServletRequest request) 
{ 
    String user = request.getHeader("iv-user"); 
    if (user == null) 
     user = ""; 
    HttpSession session = request.getSession(false); 
    String sessionString = session == null ? "" : session.getId(); 
    String action = request.getParameter(Constant.ACTION); <=== ERROR HERE 
    if(action == null) 
     action = ""; 
    .... 

回答

0

似乎是有限制的 - 至少在WebSphere應用服務器。這是IBM的回覆...

我回顧了你的問題描述。您說得對,WAS 7的入站請求中允許的最大參數數量爲 ,但 數字非常高,在GET和POST請求中都是10000。如果您 不想限制可以在 包含的請求參數的數量,你必須「com.ibm.ws.webcontainer.maxParamPerRequest」 Web容器定製屬性設置爲-1,詳見「Web容器 定製屬性「 - http://www14.software.ibm.com/webapp/wsbroker/redirect?version=compass&product=was-nd-dist&topic=rweb_custom_props

相關問題