WildFly 8.2和304未修改

时间:2015-07-08 11:08:52

标签: java http jboss wildfly

RFC 2616 - "所有1xx(信息),204(无内容)和304(未修改)响应不得包含消息正文。"

从JBoss 5.1升级到WildFly 8.2之后,负载均衡器(用Netty 4.0编写)就崩溃了。

原因 - WildFly在304错误发送带有message-body的响应:

<html><head><title>Error</title></head><body>Not Modified</body></html>

根据RFC 2616的Netty只读取304的标题,但忽略不是内容长度和套接字中的左侧主体,所以我们在同一频道的第二次读取时出错。

我可以通过将response.sendError(304)更改为response.setStatus(304)来解决这个问题,但是想知道,是否可以将WildFly配置为不发送304 Not Modified错误的消息体?

1 个答案:

答案 0 :(得分:1)

从技术上讲,2xx和3xx是错误。只有4xx和5xx范围内的响应代码是错误(分别是客户端错误和服务器错误)。所以,我认为setStatus确实是正确的。{1}}。

当您告诉服务器您发送错误但不包括正文时,服务器本身就包含一个错误。这是因为错误(4xx和5xx)有此要求:

  

除了响应HEAD请求时,      服务器应该发送一个包含对的解释的表示      错误情况,无论是暂时的还是永久的      条件。