Java Resteasy客户端未关闭连接

Java Resteasy客户端未关闭连接,java,jaxb,resteasy,Java,Jaxb,Resteasy,我发现了一个resteasy没有关闭连接的场景。有办法解决这个问题吗?我已将我的客户创建为: ThreadSafeClientConnManager cm = new ThreadSafeClientConnManager(); HttpClient httpClient = new DefaultHttpClient(cm); ClientExecutor executor = new ApacheHttpClient4Executor(httpClient); T proxiedServic

我发现了一个resteasy没有关闭连接的场景。有办法解决这个问题吗?我已将我的客户创建为:

ThreadSafeClientConnManager cm = new ThreadSafeClientConnManager();
HttpClient httpClient = new DefaultHttpClient(cm);
ClientExecutor executor = new ApacheHttpClient4Executor(httpClient);
T proxiedService = org.jboss.resteasy.client.ProxyFactory.create(clazz, base, executor);
我正在对服务调用以下方法

@DELETE
@Path("{id}")
Response deleteObject(@PathParam("id") Long id);
服务正在恢复

HTTP/1.1 500 Internal Server Error [Content-Length: 0, Server: Jetty(8.1.2.v20120308)]
任何关于我错过了什么的想法来结束连接。注意:对于所有其他响应类型,连接正在关闭


我知道如果我不归还500,一切都会很好。但是,如果这种情况意外发生,我希望我的客户端能够处理它,而不会耗尽连接。

我假设以下方法属于resteasy客户端的代理接口(?):

如果是这样,这里的问题是您的方法返回resteasy ClientResponse对象(这是jax-rs响应的resteasy实现)。当您的方法返回ClientResponse时,您负责释放连接

在您的情况下,您还依赖于代理工厂,因此可能无法释放连接。在这种情况下,您应该更改方法的签名以返回void或HTTP响应体中预期的对象类型:

@DELETE
@Path("{id}")
void deleteObject(@PathParam("id") Long id);
或者,如果您希望返回Foo对象:

@DELETE
@Path("{id}")
Foo deleteObject(@PathParam("id") Long id);
有关更多信息,请参阅resteasy

@DELETE
@Path("{id}")
Foo deleteObject(@PathParam("id") Long id);