我可以为您进行翻译。以下是您需要翻译的内容:
如果我不在服务器端解析客户端的
我有一个服务器-客户端架构,在这个架构中,客户端向服务器发送一个XML文件,服务器读取该文件并生成PDF文件,然后将其发送回客户端。
在客户端方面:
JAXBElement<Xml> xml = ...
Socket sock = ...
Marshaller marshaller = ...
marshaller.marshal(xml, sock.getOutputStream());
sock.shutdownOuput();
与此同时,服务器端需要:
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
如果我不在服务器端解析客户端的
InputStream
,只是发送一个虚拟的PDF文件,那么一切都会顺利进行。因此,我必须假设Unmarshaller
关闭了它所接收到的InputStream
,从而隐式关闭了客户端的Socket
,这破坏了我的计划......有什么解决方法吗?