Ошибка «закрыто гнездо» при попытке отправить / получить jxrpc через поток сокета

1

Это мой код:

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);

Я понимаю, что сокет закрыт.

Но, если посмотреть на wirehark, я вижу, что сервер правильно получает запрос и правильно отправляет ответ тоже! В чем проблема?

Теги:
jackson

1 ответ

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, использующий этот mapper, может выбрать закрытие потока в зависимости от его настроек (по умолчанию он попытается закрыть его, когда JsonGenerator, который мы построим, закрыт).

Вы должны будете обратить внимание на то, какой JsonFactory вы используете.

  • 0
    Может кто-нибудь, кто лучше меня при форматировании stackoverflow исправит 2-ю ссылку
  • 0
    да, это ObjectMapper (отредактированный вопрос), но я не указываю фабрику json при ее создании ... так как правильно настроить это поведение?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню