gpt4 book ai didi

java - 通过套接字和流的 JAXB - 阅读器 block

转载 作者:数据小太阳 更新时间:2023-10-29 02:06:54 26 4
gpt4 key购买 nike

我正在尝试通过网络流发送 java bean 实例。我想使用 JAXB 和普通的 OutputStream 编码/解码 java 实例,以将其推送到网络上。

服务器在解码点等待,但客户端已经很远了。

服务器:

inputStream = new BufferedInputStream(this.socket.getInputStream());
outputStream = new BufferedOutputStream(this.socket.getOutputStream());
JAXBContext requestContext = JAXBContext.newInstance(this.requestClass);
Unmarshaller unmarshaller = requestContext.createUnmarshaller();
@SuppressWarnings("unchecked")
K request = (K) unmarshaller.unmarshal(inputStream); //blocks here
respond();

客户:

JAXBContext messageContext = JAXBContext.newInstance(message.getClass());
Marshaller marshaller = messageContext.createMarshaller();
out = new BufferedOutputStream(socket.getOutputStream());
marshaller.marshal(message, out);
out.flush();
waitForResponse();// blocks here

编辑: 我切换到正常输出流但它仍然阻塞。我是否必须发送一些特殊信号来告诉 JAXB 停止解码?如果我关闭客户端输出流,消息将到达服务器端。

最佳答案

我切换到 XMLEventWriterXMLEventWriter 并且它有效。我感觉 XMLStreamReader 有问题。它卡在某些 skipSpaces() 方法上。 XMLStreamReader 的代码看起来好像它应该在文档结尾出现时立即返回。

关于java - 通过套接字和流的 JAXB - 阅读器 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9589833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com