"插座关闭"我尝试通过套接字流发送/接收jxrpc时出错

时间:2014-03-19 17:01:57

标签: java jackson

这是我的代码:

ObjectMapper mapper = new ObjectMapper();
mapper.configure(JsonParser.Feature.AUTO_CLOSE_SOURCE, false);//suggested by fge

Socket s = new Socket("127.0.0.1",port);
mapper.writeValue(s.getOutputStream(),anObjectRequest);//this works
Aresponse res = mapper.readValue(s.getInputStream(),AresponseClass.class);

我知道套接字已关闭。

但是,如果查看wireshark,我看到服务器正确接收请求并正确发送答案! 问题在哪里?

1 个答案:

答案 0 :(得分:2)

http://docs.oracle.com/javase/7/docs/api/java/net/Socket.html#getOutputStream()

  

关闭返回的OutputStream将关闭相关的套接字

映射器是什么类型的?这种方法是这样的:

mapper.writeValue(s.getOutputStream(),anObjectRequest);//this works

OutputStream对象上调用close?

假设您使用的是ObjectMapper

  

注意:方法不会在此显式关闭基础流;但是,这个映射器使用的JsonFactory可能会根据其设置选择关闭流(默认情况下,当我们构造的JsonGenerator关闭时,它会尝试关闭它)。

您必须注意您正在使用的JsonFactory