与marshall和unmarshall的读者和作者有争议。就是这样。这就是我如何向版画作者写东西的方式。
try {
JAXBContext jaxbContext = JAXBContext.newInstance(XMLProtocol.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
//jaxbMarshaller.setProperty(, value)
//jaxbMarshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
jaxbMarshaller.marshal(protocol, out);
} catch (JAXBException e) {
LOG.error("Error while processing protocol"+e);
}
我是这样得到它的:
java prettyprint-override">private BufferedReader in;
private PrintWriter out;
private String buffer;
private StringBuffer stringBuffer;
public ServerThread(Socket s) throws IOException {
socket = s;
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
start();
}
public void run() {
try {
while (true) {
// LOG.trace("Waiting for input stream ready");
/*
* if (in.readLine().endsWith(">")) {
* LOG.trace("here we go"+buffer);
* JAXBContext jaxbContext = JAXBContext.newInstance(XMLProtocol.class);
* Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
* XMLProtocol protocol = (XMLProtocol) jaxbUnmarshaller.unmarshal(in);
* LOG.trace("Nop it no the end " + protocol.getContent());
* }
*/
if (in.ready()) {
LOG.trace("BufferedReader - ready");
buffer += in.readLine();
if (buffer.endsWith("</XMLProtocol>")) {
LOG.trace("Wish you were here1"+in);
JAXBContext jaxbContext = JAXBContext.newInstance(XMLProtocol.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
XMLProtocol protocol = (XMLProtocol) jaxbUnmarshaller.unmarshal(in);
LOG.trace("Getting message from user " + protocol.getContent());
} else {
LOG.trace("Nop it no the end " + buffer);
}
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (JAXBException e) {
e.printStackTrace();
} finally {
try {
socket.close();
LOG.trace("Socket closed");
} catch (IOException e) {
LOG.error("Socket no closed" + e);
}
}
}
然后此解组操作将挂起。它没有给我任何东西,甚至没有例外。
是的,我找到了解决这个问题的办法!JAXB不是套接字流的最佳决策,因为它等待流的结束。解决方案是使用clear SAX解析器,您可以在其中编写自己的ParserHandler(DefaultHandler.class),当到达最后一个标记时,您应该抛出自己的异常,该异常指示停止解析。
抱歉长帖,提前感谢! 在我的JAXB中(代码如下),我有一组值集,其中内部集被包装成一个容器类。所以,我有一组值容器,其中一个值是一个泛型类。问题:除非选择的泛型类是硬编码的,否则值不会得到解析。 关于XML的说明: >
问题内容: 我根本不是Java程序员。我尽力不惜一切代价避免使用它,但是(在学校的意义上)我必须在课堂上使用它。老师要求我们使用Socket(),BufferedReader(),PrintWriter()和其他各种东西,包括BufferedReader()的readLine()方法。 基本上,这就是我遇到的问题。该文档明确指出,readLine应该在输入流的末尾返回null,但这不是正在发生的事
我试图使用VMCI套接字在虚拟机和它的主机之间建立一个面向流的连接。我成功地启动了服务器,绑定了一个地址,将其置于监听模式,并调用接受来等待客户端。然而,每当我从客户端调用时,我都会收到一个错误。 我的客户代码是: 每当我使用数据报套接字时,问题并不存在。(当然,不需要调用listen、accept和connect。在这种情况下,我只需使用
我正在创建服务器和客户端java应用程序。我想创建一个数组来存储我的套接字。我正在使用eclipse,当我输入这一行时: Eclipse给我一个错误说资源类型Socket[]没有实现java.lang.AutoCloseable。 我怎样才能解决这个问题? 谢谢你 尝试/捕捉语句:
问题内容: 当客户端仍在加载页面时刷新时,Node一直不停地退出我(因此套接字被终止,而我仍在处理请求)。错误: 我尝试附加到: 对象 (我正在使用Express)的返回值 我的返回值,和方法。 但是,我似乎无法捕捉到该错误。它仍然被抛出,我的错误处理程序都没有反应。我可能会缺少什么? 问题答案: 将错误侦听器附加到套接字对象
开始使用akka-streams,我想构建一个简单的示例。在chrome中,使用web套接字插件,我可以通过并发送2个命令,简单地连接到这样的流https://blockchain.info/api/apiwebsocket 将在chromes web socket插件窗口中传输结果。 我试图在akka流中实现相同的功能,但面临一些问题: 执行了2个命令,但我实际上没有获得流输出 同一命令执行两次