私はクライアントがそれを読んでいるサーバに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はすべてスムーズに進みます。だから、私はこのように暗黙のうちに、クライアントSocket
私の一日台無しに...これを解決するための
任意のアイデアを閉じ、Unmarshaller
は、それが与えられInputStream
を閉じていることを前提とする必要がありますか?
おかげで、あなたのソリューションは魅力のように機能します! :) –