2014-03-19 2 views
1

통해 jxrpc를받을 때 오류 "소켓은 폐쇄"이것은 내 코드입니다 : 내가 소켓이 닫혀 있는지 얻을나는/전송 소켓 스트림

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를 살펴보면 서버가 올바르게 요청을 수신하고 올바르게 답변을 보냈습니다! 어디에 문제가 있습니까?

답변

2

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

관련 소켓

매퍼가 어떤 유형을 닫습니다 반환 된 OutputStream에 닫기? 이 방법이 있습니까 :

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

OutputStream 개체를 닫으시겠습니까?

사용하는 가정 ObjectMapper :

참고 : 여기에 명시 적으로 기본이되는 스트림을 닫습니다하지 않는 방법; 그러나이 매퍼가 사용하는 JsonFactory는 설정에 따라 스트림을 닫을 수 있습니다 (기본적으로 JsonGenerator를 닫을 때 닫으려고 시도 함).

당신이 사용하고있는 JsonFactory에주의해야합니다.

+0

stackoverflow 서식을 지정할 때 나보다 나은 사람이 두 번째 링크를 수정 할 수 있습니까? – Colton

+0

예, ObjectMapper (편집 된 질문)입니다.하지만 json 팩토리를 만들 때 지정하지 않았습니다.이 동작을 올바르게 설정하는 방법 ? – Phate

+1

그리고 맞습니다. 기본적으로 닫힙니다. OP는'mapper.configure (JsonParser.Feature.AUTO_CLOSE_SOURCE, false)'가되어야합니다. – fge