`

Jboss ,Tomcat 表单提交数据丢失的问题

 
阅读更多

参考:

http://www.cnblogs.com/yg_zhang/p/4248061.html

https://my.oschina.net/luckyi/blog/213209

https://developer.jboss.org/thread/177942

https://developer.jboss.org/thread/198502

 

总结下来 Jboss6 配置:

 

need to set logging level of org.apache.catalina to DEBUG, then you will see the following line during the reproduction of the defect.

 

20:10:52,456 DEBUG [org.apache.catalina.connector] (http-/0.0.0.0:8080-6) JBWEB001023: Parameters were not parsed because the size of the posted data was too big. Use the maxPostSize attribute of the connector to resolve this if the application should accept large POSTs.

 

standalone.xml

 

 设置整个表单的 size ,设置太大,有被攻击的风险

<subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default-host" native="false">
    <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http" max-post-size="2147483647" max-save-post-size="2147483647" />
    <connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" secure="true" max-post-size="2147483647" max-save-post-size="2147483647">
        <ssl name="ssl" key-alias="company" password="12345" certificate-key-file="${jboss.server.config.dir}/ssl.keystore" />
    </connector>
    <virtual-server name="default-host" enable-welcome-root="false">
        <alias name="localhost"/>
        <alias name="example.com"/>
    </virtual-server>
</subsystem>
  
设置表单提交的时候 field 的数量
<system-properties>
     <property name="org.apache.tomcat.util.http.Parameters.MAX_COUNT" value="5000"/>
</system-properties>
 

 

 -----------------------------------------------------------------------------------------------------------------------------------

 

在流程审批过程中,提交审批时发现使用request.getParameter(“taskId”)获取数据时,发现取得任务ID为空。

在调试的过程中我发现表单的数据量特别大。

到网上查询了一下,说post  提交数据数据量有限制。

 

于是写了个表单测试了一下:

复制代码
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%
    String taskId=request.getParameter("taskId");
    String name=request.getParameter("name");
    System.out.println(taskId);
    
    System.out.println(name);
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<form name="frmSubmit" method="post">
<input type="text" name="taskId">
<textarea rows="30" cols="200" name="name"></textarea>
<input type="submit" value="submit">
</form>
</body>
</html>
复制代码

测试结果是,如果数据超过2MB的时候数据时获取不到了。是两个表单都获取不到数据,然后修改tomcat 连接参数。

<Connector   maxPostSize="0" URIEncoding="utf-8" connectionTimeout="20000"  port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

将maxPostSize修改为0则不显示post数据大小。

发现还是没有解决之前的问题。

在调试的过程中发现,服务器打印了如下信息。

 

信息: More than the maximum number of request parameters (GET plus POST) for a single request ([10,000]) were detected. Any parameters beyond this limit have been ignored. To change this limit, set the maxParameterCount attribute on the Connector.

 

 

搜索了一下这个告警信息。

原来是服务器对提交的参数做了限制,tomcat 文档描述如下:

The maximum number of parameters (GET plus POST) which will be automatically parsed by the container. A value of less than 0 means no limit. If not specified, a default of 10000 is used. Note that FailedRequestFilter filter can be used to reject requests that hit the limit.

这个默认值为10000个,如果超过了10000个那么就丢弃。这也就解释了为什么我把taskId提前到form标签后,数据能够获取到。

知道了 原因:

我们修改tomcat配置如下:

<Connector maxParameterCount="-1"  maxPostSize="0" URIEncoding="utf-8" connectionTimeout="20000"  port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

不限制参数大小和提交数据大小,这样重新审批就没有问题了。

 

当然这个解决办法不是很好,因为他会极大的消耗服务器性能,因为提交的参数超过了10000个。

解决的办法是不提交那么的表单,这个我们这个表单系统中是可以的。

因为我们没有必要提交那么多的参数,我们的数据都拼装成了一个json进行提交,这样对服务器性能会 有极大的提升。

将我们的程序修改成使用ajaxpost的方式提交,只提交部分参数就可以了。

 

Jboss as7 org.apache.tomcat.util.http.Parameters.MAX_COUNT defaults to 512

In standalone.xml add the following lines

 

 

<system-properties>

     <property name="org.apache.tomcat.util.http.Parameters.MAX_COUNT" value="5000"/>

</system-properties>

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    apache 集成 jboss、tomcat

    Apache作为前端服务器处理静态内容,而动态内容由JBoss或Tomcat处理。这种架构提供了更高的性能和可扩展性。在这个场景中,我们重点关注Windows环境下的集成,主要涉及Apache的mod_jk模块。 1. **Apache mod_jk模块...

    tomcat jboss数据源配置.rar

    在IT行业中,服务器和应用服务器的配置是至关重要的,尤其是...提供的压缩包文件"jboss4.0 配置.txt"和"tomcat5.5配置Oracle数据源.txt"应该包含了详细的步骤和可能遇到的问题,读者可以通过这些文件深入学习和实践。

    JBOSS+TOMCAT集成开发环境。完整版

    【JBOSS+TOMCAT集成开发环境】是一种常见的企业级应用服务器组合,它结合了JBOSS的全面中间件服务和TOMCAT的轻量级Servlet容器特性,为开发者提供了一个高效且灵活的开发与部署平台。在这个“完整版”中,用户可以...

    TOMCAT移植到JBOSS

    ### 知识点详解:“TOMCAT移植到JBOSS” #### 1. **Web应用服务器的概念** 在探讨从TOMCAT移植到JBOSS的过程中,我们首先需要理解Web应用服务器的基本概念。Web应用服务器是运行Java Web应用程序的平台,如...

    Apache+Jboss(Tomcat)集群配置

    每个Jboss或Tomcat服务器都运行着相同的应用,它们之间通过共享同一数据库确保数据的一致性。 2. **服务器组件**: - **Apache**:可以选择带SSL加密或不带SSL的版本,Apache在这里的作用是接收HTTP/HTTPS请求,...

    J2EE应用服务器Jboss+Tomcat安装攻略

    J2EE应用服务器是企业级Java应用程序开发和部署的核心平台,而Jboss和Tomcat的组合提供了一种开源且稳定的选择。Jboss是一款强大的J2EE应用服务器,它支持多种J2EE规范,如EJB(Enterprise JavaBeans)、JMS(Java ...

    java项目tomcat迁移到jboss

    在将 Tomcat 项目迁移到 JBoss 时,可能会出现版本兼容问题,例如 Spring 版本问题。在我们的项目中,使用的是 Spring 2.5 版本,但是在 JBoss 5.1 中,可能会出现版本不兼容的问题。解决这个问题的方法是,在 WEB-...

    Servlet引擎:JBoss与Tomcat、Jetty协同工作

    ### Servlet引擎:JBoss与Tomcat、Jetty协同工作 #### 深入理解Servlet引擎:JBoss与Tomcat、Jetty的协同机制 在JavaWeb技术领域,Servlet引擎扮演着至关重要的角色,它们负责执行Servlet,处理HTTP请求并生成响应...

    JBOSS\Tomcat最大连接数配置和jvm内存配置.docx

    【JBOSSTomcat最大连接数配置和JVM内存配置】 在JBOSSTomcat服务器的性能优化中,最大连接数配置和JVM内存配置是两个至关重要的环节,它们直接影响到服务器的响应速度和稳定性,尤其对于处理大量并发请求的场景。 ...

    Apache Tomcat JBOSS Nginx区别

    Jetty 通过使用 APR 和 Tomcat 本地技术的混合模型来解决 Tomcat 的诸多不足,例如性能问题和受限的集成平台问题。Jetty 能够提供数据库连接池服务,不仅支持 JSP 等 Java 技术,同时还支持其他 Web 技术的集成,...

    Tomcat-JBoss-Weblogic-Jetty的区别和介绍

    Tomcat应用也算非常广泛的web 服务器,支持部分j2ee,免费,出自 apache基金组织 JBoss开源的应用服务器,比较受人喜爱,免费(文档要收费) weblogic应该说算是业界第一的app server,全部支持j2ee1.4, 对于...

    WebLogic、WebSphere、JBOSS、Tomcat之间的区别

    因为 JBoss 和 Tomcat 都是开源免费的,所以它们也就没有任何商业服务和技术支持,而 WebLogic 和 WebSphere 的技术文档和相关服务还是很到位,如果你的服务器哪一天出问题了,只要你能出的起钱,他们的技术工程师...

    jBoss+tomcat学习笔记大全,jBoss+tomcat的帮助文档

    ### jBoss + Tomcat 学习笔记大全及帮助文档概览...以上内容涵盖了 jBoss + Tomcat 的基本安装、配置、EJB 示例开发与部署以及常见问题解决方法等关键知识点。希望对正在学习或使用 jBoss 和 Tomcat 的开发者有所帮助。

    TOMCAT项目转成JBOSS项目的步骤

    TOMCAT项目转成JBOSS项目的步骤

    CXF发布WebService,jboss和tomcat都能发布

    在本教程中,我们将深入探讨如何使用CXF在JBoss和Tomcat这两种流行的Java应用服务器上发布Web服务。 ### 一、CXF WebService发布 1. **CXF环境搭建** 在开始之前,确保你已经安装了Java Development Kit (JDK) 和...

    JBoss 下配置 Oracle 数据源

    JBoss 下配置 Oracle 数据源 在 JBoss 中配置 Oracle 数据源是实现企业级应用程序的重要步骤。本文将详细介绍如何在 JBoss 中配置 Oracle 数据源,包括复制配置文件、编辑配置文件、设置数据源参数等步骤。 一、...

    tomcat-and-jboss.rar_jboss_tomcat

    【标题】:“Tomcat与JBoss的对比分析” 【描述】:在IT行业中,Tomcat和JBoss都是广泛使用的应用程序服务器,它们各自有着独特的特性和优势。Tomcat以其轻量级、高效能和对Servlet及JavaServer Pages(JSP)的良好...

    Apache Jboss/Tomcat集群(手稿)

    Apache JBoss/Tomcat集群是一种高可用性和可扩展性的架构,用于处理大量并发请求和分发负载。在本文档中,我们将深入探讨如何构建这样的集群。 首先,集群的基础架构包括一个前端Apache HTTP服务器,多个后端JBoss...

    jboss4版本修复Apache Tomcat DIGEST身份验证多个安全漏洞(CVE-2012-3439)升级包

    jboss4版本下,jbossweb-tomcat55.sar升级包,修复Apache Tomcat DIGEST身份验证多个安全漏洞(CVE-2012-3439) 升级包中的jar来源于tomcat5.5.36 使用方法:直接替换jboss中旧的jbossweb-tomcat55.sar

Global site tag (gtag.js) - Google Analytics