用jersey2搭建restful平台时遇到的问题

前几天用jersey2搭建了一个restful平台,今天在测试的时候发现一个问题,若是一个没有权限的用户访问了限制资源,那么正确的返回结果应该为401。问题就在这里发生了,我写了一个测试用例,第一次访问的时候返回401,再次请求时就成了200,日后再怎么试都是200,除非重启应用。看看了日志发现报错了:java

An I/O error has occurred while writing a response message entity to the container output stream.
! java.lang.IllegalStateException: The output stream has already been closed.

看到了,当服务端往请求的客户端通道中返回数据时,发现客户端的通道已经关闭了。哦,明白了,看看了代码,发现问题的因此,以下:restful

final Response ACCESS_DENIED = Response.status(Response.Status.UNAUTHORIZED).entity("无权限访问!").build();

起初这段代码是作filter的类变量而使用的,也就是说定义了一个Response重复在使用,这样作是不对的,随后把改为了局部变量,再次验证问题解决了。测试

相关文章
相关标签/搜索