【问题标题】:EclipseLink-25008 : javax.xml.bind.UnmarshalExceptionEclipseLink-25008:javax.xml.bind.UnmarshalException
【发布时间】:2014-02-14 16:39:31
【问题描述】:

解组随机失败,错误如下 javax.xml.bind.UnmarshalException - 有关联的例外: [异常 [EclipseLink-25008] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.XMLMarshalException 异常描述:在项目中未找到具有默认根元素 DirectPaymentConfirmationRequest 的描述符]

XSD

    <?xml version="1.0" encoding="utf-16"?>
    <xs:schema   xmlns="http://test.com/Ft/Pare/DirectPayment/Message/Confirmation/Request/v0.10" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
    <xs:element name="DirectPaymentConfirmationRequest">
        <!—additional child elements
    </xs:element>
    </xs:schema>

XML input – 
    <?xml version="1.0" encoding="UTF-16"?>
    <DirectPaymentConfirmationRequest>
    <DirectPaymentReferenceId>12345</DirectPaymentReferenceId>
    <PaymentCardTransactionType>ECommerceAuthorisation</PaymentCardTransactionType>
    <Amount>10</Amount>
    <MerchantId>1111</MerchantId>
    <AddressCheckRequested>true</AddressCheckRequested>
    <AuthorisationTimeStamp>2014-02-14T13:55:50.739Z</AuthorisationTimeStamp>
    <AcquirerResponse>
      <ResponseCode>333</ResponseCode>
      <AuthorisationCode>123456</AuthorisationCode>
      <AddressCheckResult>Y</AddressCheckResult>
      <CVVCheckResult>Y</CVVCheckResult>
      <ProductCode>MAE</ProductCode>
      <TraceId>9722461401</TraceId>
    </AcquirerResponse>
    <CardDetail>
      <PaymentCardType>Visa</PaymentCardType>
      <PanToken>232323</PanToken>
      <ExpiryDate>2018</ExpiryDate>
      <LastFourDigits>1234</LastFourDigits>
      <BinNumber>123456</BinNumber>
      <CardState>NewCard</CardState>
    </CardDetail>
    </DirectPaymentConfirmationRequest>

Java code
    package com.transformer.generated;
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
    "directPaymentReferenceId",
    "paymentCardTransactionType",
    "amount",
    "merchantId",
    "addressCheckRequested",
    "authorisationTimeStamp",
    "acquirerResponse",
    "error",
    "cardDetail"
}    )
    @XmlRootElement(name = "DirectPaymentConfirmationRequest")
    public class DirectPaymentConfirmationRequest
    implements Serializable{}

【问题讨论】:

    标签: java jaxb eclipselink


    【解决方案1】:

    您需要确保在引导JAXBContext 时包含DirectPaymentConfirmationRequest 类。如果你是从 Java 类引导,你可以这样做:

    JAXBContext jc = JAXBContext.newInstance(DirectPaymentConfirmationRequest.class);
    

    如果你生成了模型,那么你可以在你生成的模型的包名上创建JAXBContext

    【讨论】:

    • 实现具有模型,并在包名上创建 JAXBContext 为 - JAXBContext jc = JAXBContext.newInstance("com.transformer.generated") 这是 DirectPaymentConfirmationRequest 类的包名
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 2014-06-08
    • 2012-08-30
    • 2017-12-31
    • 2014-09-29
    • 1970-01-01
    • 2013-12-03
    相关资源
    最近更新 更多