我正在向 web 服务发送请求,并且正在从 web 服务以 xml 格式接收正确的响应,并且在响应元素标签中填充了正确的值。现在我尝试解组,但响应对象填充了 null 而不是我在 XML 响应中看到的值。
这是我的代码:
org.apache.axis2.context.MessageContext _returnMessageContext =
_operationClient.getMessageContext(
org.apache.axis2.wsdl.WSDLConstants.MESSAGE_LABEL_IN_VALUE);
org.apache.axiom.soap.SOAPEnvelope _returnEnv = _returnMessageContext.getEnvelope();
java.lang.Object object = fromOM(
_returnEnv.getBody().getFirstElement(),
com.siebel.asi.QueryByExample1Output.class,
getEnvelopeNamespaces(_returnEnv));
和以下方法:
try {
javax.xml.bind.JAXBContext context = wsContext;
javax.xml.bind.Unmarshaller unmarshaller = context.createUnmarshaller();
return unmarshaller.unmarshal(
param.getXMLStreamReaderWithoutCaching(),
type).getValue();
} catch (javax.xml.bind.JAXBException bex) {
即使我可以看到 XML 格式的输出响应,响应对象也变为空。这就是我设置 wscontext 的方式:
private static final javax.xml.bind.JAXBContext wsContext;
static {
javax.xml.bind.JAXBContext jc;
jc = null;
try {
jc = javax.xml.bind.JAXBContext.newInstance(
com.siebel.asi.QueryByExample1Input.class,
com.siebel.asi.QueryByExample1Output.class,
com.siebel.asi.QueryById1Input.class,
com.siebel.asi.QueryById1Output.class
);
}
catch ( javax.xml.bind.JAXBException ex ) {
System.err.println("Unable to create JAXBContext: " + ex.getMessage());
ex.printStackTrace(System.err);
Runtime.getRuntime().exit(-1);
}
finally {
wsContext = jc;
}
}