【发布时间】:2021-01-14 14:31:55
【问题描述】:
我有一段代码
@RequestScoped
@Path("test")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_XML)
public class Test {
private static final Logger LOG = Logger.getLogger(Test.class.toString());
@POST
public Response createRequest(InputStream request) throws IOException {
char[] buff = new char[1024];
int in = 0;
BufferedReader reader = new BufferedReader(new InputStreamReader(request));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out, "UTF-8"));
try {
while ((in = reader.read(buff)) != -1) {
//writer.write(buff);
writer.write(buff, 0, in);
}
} finally {
writer.flush();
writer.close();
reader.close();
}
return Response.ok().build();
}
}
问题是这个服务写入输出不完整的xml,即
输入
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
输出
04:55:44,190 INFO [stdout] (default task-1) <note>
04:55:44,191 INFO [stdout] (default task-1) <to>Tove</to>
04:55:44,191 INFO [stdout] (default task-1) <from>Jani</from>
04:55:44,198 INFO [stdout] (default task-1) <heading>Reminder</heading>
04:55:44,198 INFO [stdout] (default task-1) <body>Don't forget me this weekend!</body>
失踪
注>
...为什么?
当我第二次尝试发送请求时,控制台是空的,我需要重新启动 Wildfly 才能将不完整的 xml 输出...为什么?
注意:
控制台没有错误
【问题讨论】: