Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.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 SpringWS-无法返回JAXB响应_Java_Spring_Web Services - Fatal编程技术网

Java SpringWS-无法返回JAXB响应

Java SpringWS-无法返回JAXB响应,java,spring,web-services,Java,Spring,Web Services,如本教程所述: 我有一个接收请求的Spring WS方法: @PayloadRoot(localPart = "HolidayRequest", namespace = NAMESPACE_URI) @Namespace(prefix = "hr", uri= NAMESPACE_URI ) @ResponsePayload public void handleHolidayRequest(@XPathParam("//hr:HolidayRequest") Object request

如本教程所述:

我有一个接收请求的Spring WS方法:

    @PayloadRoot(localPart = "HolidayRequest", namespace = NAMESPACE_URI)
@Namespace(prefix = "hr", uri= NAMESPACE_URI )
@ResponsePayload
public void handleHolidayRequest(@XPathParam("//hr:HolidayRequest") Object request) throws Exception {
    }
我可以读取传入的值。现在,如果我尝试发送响应:

    @PayloadRoot(localPart = "HolidayRequest", namespace = NAMESPACE_URI)
@Namespace(prefix = "hr", uri= NAMESPACE_URI )
@ResponsePayload
public HolidayResponse handleHolidayRequest(@XPathParam("//hr:HolidayRequest") Object request) throws Exception {
    }

    HolidayResponse response = new HolidayResponse();  // JAXB object
    response.setIsApproved( false );
    response.setEmpId( BigInteger.ONE );

    return response;
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header/>
   <SOAP-ENV:Body>
      <SOAP-ENV:Fault>
         <faultcode>SOAP-ENV:Server</faultcode>
         <faultstring xml:lang="en">javax.xml.bind.JAXBException
     - with linked exception:
    [java.lang.NullPointerException]</faultstring>
          </SOAP-ENV:Fault>
       </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
return new JAXBElement( new QName("HolidayResponse"), HolidayResponse.class, response );
SOAP客户端接收到一个故障响应:

    @PayloadRoot(localPart = "HolidayRequest", namespace = NAMESPACE_URI)
@Namespace(prefix = "hr", uri= NAMESPACE_URI )
@ResponsePayload
public HolidayResponse handleHolidayRequest(@XPathParam("//hr:HolidayRequest") Object request) throws Exception {
    }

    HolidayResponse response = new HolidayResponse();  // JAXB object
    response.setIsApproved( false );
    response.setEmpId( BigInteger.ONE );

    return response;
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header/>
   <SOAP-ENV:Body>
      <SOAP-ENV:Fault>
         <faultcode>SOAP-ENV:Server</faultcode>
         <faultstring xml:lang="en">javax.xml.bind.JAXBException
     - with linked exception:
    [java.lang.NullPointerException]</faultstring>
          </SOAP-ENV:Fault>
       </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
return new JAXBElement( new QName("HolidayResponse"), HolidayResponse.class, response );

您在服务器端得到什么堆栈跟踪?我确信这将导致问题的确切路线。实际上,Tomcat日志中没有堆栈跟踪。我的结论是,这是由于JAXB和JDOM之间的不兼容,因为编写并返回org.jdom2.Element响应工作正常。