首页 / JAVA / java-挂在org.apache.jk.common.JkInputStream.receive()上的JBOSS-IOException读取HTTP请求InputStream
java-挂在org.apache.jk.common.JkInputStream.receive()上的JBOSS-IOException读取HTTP请求InputStream
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-挂在org.apache.jk.common.JkInputStream.receive()上的JBOSS-IOException读取HTTP请求InputStream,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2180字,纯文字阅读大概需要4分钟。
内容图文
![java-挂在org.apache.jk.common.JkInputStream.receive()上的JBOSS-IOException读取HTTP请求InputStream](/upload/InfoBanner/zyjiaocheng/671/ddea3cbd917c444691e22091d708deba.jpg)
我有一个问题,导致JBOSS中的所有线程在读取输入流时阻塞.它不会意外发生,并且系统可以运行几天(或更长时间)后才开始受到影响.
该问题看起来与this问题类似,但我仍未尝试按照答案中的建议设置-Dhttp.keepAlive = false,因为我想知道其他人是否有其他/更好的解决方案.我宁愿不必通过将此属性设置为false来提高性能(假设甚至可以解决问题).
有一些Sun Bug谈论BufferedReader和InputStream读取问题(bug 6192696,bug 6409506),但是对我来说,它们似乎并没有定论.欢迎您提出这样的问题和Sun bug的想法/建议/经验.
这是例外:
java.io.IOException
at org.apache.jk.common.JkInputStream.receive(JkInputStream.java:190)
at org.apache.jk.common.JkInputStream.refillReadBuffer(JkInputStream.java:249)
at org.apache.jk.common.JkInputStream.doRead(JkInputStream.java:168)
at org.apache.coyote.Request.doRead(Request.java:418)
at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:284)
at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:404)
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:299)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:192)
at com.vicinity.ExtractMessageServlet.service(ExtractMessageServlet.java:62)
...
以下是请求标头的示例:
POST http: //www.xyz.com HTTP/1.0
Host: www.xyz.com:80
Accept: */*
Content-Type: application/octet-stream
Content-Length: 00597
Session-Key: 812a0000
这是Web应用程序的Servlet代码.它卡在servletInputStream.read上:
int lengthOfBuffer = request.getContentLength();
byte[] buffer = new byte[lengthOfBuffer];
ByteArrayOutputStream output = new ByteArrayOutputStream(lengthOfBuffer);
ServletInputStream servletInputStream = request.getInputStream();
int readBytes = -1;
while ((readBytes = servletInputStream.read(buffer, 0, lengthOfBuffer)) != -1) {
output.write(buffer, 0, readBytes);
}
byte[] inputStream = output.toByteArray();
...
// Continue to process the input stream
JBoss版本:JBoss AS4.0.5.GA.
另外,mod_jk正在将端口80上的HTTP请求从Apache服务器路由到JBoss服务器-如果有兴趣的话.
解决方法:
如果从基础TCP套接字读取时出了点问题,那么JkInputStream.receive将抛出一个无消息的IOException,不幸的是没有指定出什么问题.如果为org.apache包启用了所有日志级别并检查在引发异常之前记录的内容,则可能会找到有关问题原因的更多详细信息.
内容总结
以上是互联网集市为您收集整理的java-挂在org.apache.jk.common.JkInputStream.receive()上的JBOSS-IOException读取HTTP请求InputStream全部内容,希望文章能够帮你解决java-挂在org.apache.jk.common.JkInputStream.receive()上的JBOSS-IOException读取HTTP请求InputStream所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。