Java SpringWS-无法返回JAXB响应
如本教程所述: 我有一个接收请求的Spring WS方法: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
@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响应工作正常。