0

我正在向 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;
            }
        }
4

0 回答 0