Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未正确返回Jaxb/servlet数据_Java_Tomcat_Servlets_Jaxb_Jersey - Fatal编程技术网

Java 未正确返回Jaxb/servlet数据

Java 未正确返回Jaxb/servlet数据,java,tomcat,servlets,jaxb,jersey,Java,Tomcat,Servlets,Jaxb,Jersey,我有一个使用Jaxb/Jersey的小tomcat servlet。post处理程序返回一个包含其他对象的对象。当结果返回给调用者时,包含的对象大多为null——即使它们在servlet中不是null -servlet- @POST @Consumes(MediaType.APPLICATION_XML) @Produces(MediaType.APPLICATION_XML) public Response postPlan( JAXBElement<String> mxml) t

我有一个使用Jaxb/Jersey的小tomcat servlet。post处理程序返回一个包含其他对象的对象。当结果返回给调用者时,包含的对象大多为null——即使它们在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();
}
Metrix_日志_实施:

@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 ...

唯一奇怪的是私有内部类和枚举的使用。但这不应该奏效吗?

不确定半复杂类结构的哪一部分导致了问题。如果在某个地方生成了某种错误消息,那当然很好。
我刚刚创建了要传输的简单数据类,并将数据复制到两端更复杂的类中。

我将注释所有嵌套类和枚举,看看是否可以得到任何包含日志项的响应。。。您可能还想在这些对象中添加一些垃圾值,以确保这些对象将包含在输入中。一旦你找到了问题所在,你可以从那里开始。这就是我希望避免的,因为很多其他类也使用这些。破坏其他东西的可能性太多了。我最终只是创建了一组非常简单的数据保存类,并将数据复制到这些类中。那些简单的类可以转换成XML或从XML转换成XML。
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>
@XmlRootElement
public class PlanData {
  private String                guid;
  private byte[]                planXML;
  private Metrix_Log_Implementation log;
  private String                junk;
... getters/setters left out...
@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 ...