我有一个使用Jaxb / Jersey的小型tomcat servlet。 post处理程序返回包含其他对象的对象。当结果返回到调用者时,包含的对象几乎为空 - 即使它们在servlet中不为null。
- servlet -
@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public Response postPlan( JAXBElement<String> mxml) throws IOException {
iMetrix metrix_MIS = Metrix_MIS_Implementation.getInstance();
iMetrix_GeneratePlan_Response result = metrix_MIS.generatePlan(mxml.getValue());
PlanData data = new PlanData();
data.setJunk("Testing Junk");
data.setGuid(result.getProjectID());
data.setLog((Metrix_Log_Implementation) result.getLog());
InputStream planStream = result.getPlanZipStream();
if (planStream != null) {
data.setPlanXML(IOUtils.readFully(planStream, -1, true));
}
result.getLog().dump(System.out);
return Response.ok(data).build();
}
- 调用应用程序 -
Client client = ClientBuilder.newClient();
WebTarget web = client.target(url);
Entity<String> entity = Entity.entity(mxmlProjectString, MediaType.APPLICATION_XML_TYPE);
Response resp = web.request(MediaType.APPLICATION_XML_TYPE).post(entity);
int status = resp.getStatus();
System.out.println(status + "-" + resp.getStatusInfo().toString());
System.out.println(resp.toString());
System.out.println(resp.readEntity(String.class));
servlet从getLog()。dump()行打印出一堆数据。 调用者只获取一个空的日志对象:
200-OK
InboundJaxrsResponse{ClientResponse{method=POST, uri=http://192.168.187.128:8080/MetrixServer/rest/Plan/v1, status=200, reason=OK}}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><planData><junk>Testing Junk</junk><log/></planData>
那么,我错过了什么?
PlanData是:
@XmlRootElement
public class PlanData {
private String guid;
private byte[] planXML;
private Metrix_Log_Implementation log;
private String junk;
... getters/setters left out...
Metrix_Log_Implementation:
@XmlRootElement(name = "MetrixLog")
public class Metrix_Log_Implementation implements iMetrix_Log {
... stuff...
@XmlRootElement(name = "LogLine")
private static class Metrix_LogLine_Implementation implements iMetrix_LogLine {
private eLogLineType m_type;
private String m_message;
private String m_MISID;
... more stuff ...
一个奇怪的是,私人内部类,以及枚举的使用。那应该不行吗?
答案 0 :(得分:0)
不确定半复杂类结构的确切部分是什么导致了这个问题。如果在某处产生某种错误消息,肯定会很好。 我刚刚创建了要传输的简单数据类,并将数据复制到两端更复杂的类中。