Jakarta ee 源自JBoss 5.0.1 GA的奇怪的illegalArgumentException

Jakarta ee 源自JBoss 5.0.1 GA的奇怪的illegalArgumentException,jakarta-ee,web,jboss,Jakarta Ee,Web,Jboss,我们有一个部署到JBoss 5.0.1 GA的java web应用程序。有时,我们从服务器日志中观察到这样的异常 java.lang.IllegalArgumentException at java.nio.Buffer.position(Buffer.java:216) at org.apache.tomcat.util.buf.B2CConverter.convert(B2CConverter.java:84) at org.apache.catalina.connector.InputBu

我们有一个部署到JBoss 5.0.1 GA的java web应用程序。有时,我们从服务器日志中观察到这样的异常

java.lang.IllegalArgumentException
at java.nio.Buffer.position(Buffer.java:216)
at org.apache.tomcat.util.buf.B2CConverter.convert(B2CConverter.java:84)
at org.apache.catalina.connector.InputBuffer.realReadChars(InputBuffer.java:403)
at org.apache.tomcat.util.buf.CharChunk.substract(CharChunk.java:416)
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:432)
at org.apache.catalina.connector.CoyoteReader.read(CoyoteReader.java:105)
at org.apache.catalina.connector.CoyoteReader.readLine(CoyoteReader.java:158)

触发异常的部分的代码是

public static String getStringFromRequest(HttpServletRequest request) {
    String data = "";
    try {
        BufferedReader reader = request.getReader();
        StringBuilder sb = new StringBuilder();

        // the line below is the the line that blows the exception
        String line = reader.readLine();

        while (line != null) {
            sb.append(line + "\n");
            line = reader.readLine();
        }
        reader.close();
        data = sb.toString();
     }
     catch (IOException e) {
         ...
     }
     return data;
}

我们在测试环境中从未见过这种异常。只有在生产过程中,交通量肯定会更大。以前有人见过这个吗?如果我们知道什么会触发异常,从而知道如何复制和修复异常,这将非常有帮助。非常感谢任何提示/帮助

解决此问题的可行方法是升级您的
jbossweb.jar

根据jira问题,修复程序已提交到
2.x分支

可能的解决方法():

以下步骤有助于解决我们在服务器上遇到的类似问题
jboss-5.1.0.GA
。(考虑到你的发展 使用eclipse和ant的环境):

  • 从anon svn签出包含上述jbossweb项目修复程序的快照:

  • 应用附加的补丁,这样就可以生成
    jbossweb.jar
    (我刚刚评论了额外的不必要的资源下载和编译)

    • 注意:我使用EclipseHelios构建jar,所以只需更新
      jdt.home
      jdt.jar属性
      在build.properties.default中匹配eclipse和jdt-jar位置
  • 运行ant部署目标

  • 如果构建成功,将在
    output/jars/jbossweb.jar
    下生成一个新的jbossweb.jar及其修复程序

  • 将新的
    jbossweb.jar
    复制到旧的
    /deploy/jbossweb.sar/jbossweb.jar

  • 重新启动jboss


  • 我希望这能有所帮助。

    非常感谢你,费德里科。非常感谢。您是否知道如何重现错误,即JBoss在什么情况下会抛出该错误?我想知道这一点,这样我就可以确定这件事是固定的,否则我将不得不祈祷很长一段时间,以确保它不会再次出现