Tengo una arquitectura de servidor-cliente donde el cliente envía un XML al servidor que lo lee y genera un PDF y lo envía de vuelta al cliente.Desasignando InputStream de un socket cierra el socket?
En el lado del cliente:
JAXBElement<Xml> xml = ...
Socket sock = ...
Marshaller marshaller = ...
marshaller.marshal(xml, sock.getOutputStream());
sock.shutdownOuput();
Mientras tanto en el lado del servidor:
ServerSocket server = ...
Socket client = server.accept();
Unmarshaller unmarshaller = ...
// client.isClosed() -> false
JAXBElement<Xml> xml =
(JAXBElement<Xml>)) unmarshaller.unmarshall(client.getInputStream());
// client.isClosed() -> true
Pdf pdf = new Pdf(xml);
client.getOutputStream().write(pdf.toBytes());
// "socket is closed" IOException is thrown
Si no Resolver referencia de InputStream
(en el lado del servidor) y acaba de enviar de vuelta un maniquí al cliente PDF, entonces todo va bien. Por lo tanto, tengo que asumir que el Unmarshaller
cierra la InputStream
se da, por lo tanto, implícitamente cerrar el cliente Socket
arruinar mi día ...
Cualquier idea sobre la solución de este?
Gracias, su la solución funciona como un encanto! :) –