JAXB:SOAP信封中声明的默认命名空间在Body' xsi:type中无法识别,同时解组

时间:2013-12-06 10:49:27

标签: soap namespaces jaxb unmarshalling xsitype

以下是来自服务器的伪肥皂响应,如下所示。

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn://tsys.com/xmlmessaging/T1">
<soap:Header>
  <Header details/>
</soap:Header>
<soap:Body>
  <inqMultiResponse>
     <inqMultiResult status="000" statusMsg="passed" >
        <inquireResult xsi:type="inqCustAddrResponseType" >
           <addrInfo>
              <addrType>Primary</addrType>
                ....
              <x_4.0.0/>
           </addrInfo>
        </inquireResult>
        <inquireResult xsi:type="inqGeneralAcctResponseType" status="000" statusMsg="passed">
           <acctGeneralInfo>
              <type>Z</type>
                ....
              </stmtInfo>
              <x_4.4.0/>
           </acctGeneralInfo>
        </inquireResult>
     </inqMultiResult>
  </inqMultiResponse>
</soap:Body>

在使用JAXB的Jaxb2Marshaller解组xml时,我的EventHandler中出现以下异常。

EVENT
SEVERITY:  1
MESSAGE:  unrecognized type name: inqCustAddrResponseType. Did you mean {urn://tsys.com/xmlmessaging/T1}inqCustAddrResponseType?
LINKED EXCEPTION:  null
LOCATOR
    LINE NUMBER:  -1
    COLUMN NUMBER:  -1
    OFFSET:  -1
    OBJECT:  null
    NODE:  [inquireResult: null]
    URL:  null

EVENT
SEVERITY:  2
MESSAGE:  Unable to create an instance of com.tsys.xmlmessaging.t1.TSYSInquiryResponseType
LINKED EXCEPTION:  java.lang.InstantiationException
    LOCATOR
    LINE NUMBER:  -1
    COLUMN NUMBER:  -1
    OFFSET:  -1
    OBJECT:  null
    NODE:  [inquireResult: null]
    URL:  null

以下是我的弹簧配置。

<bean id="tsysTransactionMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="validationEventHandler" ref="validationEventHandler" />
    <property name="contextPaths">
        <list>
            <value>com.tsys.xmlmessaging.t1</value>
        </list>
    </property>
</bean>

请你帮我解组xml。

我经历了各种各样的建议 JAXB xsi:type subclass unmarshalling not working 和Blaise D博客,但没有人像我一样谈论与Jaxb2Marshaller一起使用它。

请注意,
- 使用XJC生成类。不包括在这里,以确保我不会混乱不必要的信息。如果需要更多信息,请与我联系 - 我们无法控制从服务器发送的xml soap响应,因此我们可能无法更改它们。

0 个答案:

没有答案