JAXB解组异常:SpringWebService 1.0.4时出现意外元素

JAXB解组异常:SpringWebService 1.0.4时出现意外元素,spring,spring-ws,jaxb2,Spring,Spring Ws,Jaxb2,我已经编写了SpringWebService cleint示例,这在springws1.5中运行良好,但在springws1.0.4中运行时,我遇到了以下异常。请帮助我为什么会出现此异常以及如何解决。我只需要使用down版本,因为我的spring版本是2.0.4。请尽快回复 Unhandled exception: org.springframework.oxm.jaxb.JaxbUnmarshallingFailureException: JAXB unmarshalling exc

我已经编写了SpringWebService cleint示例,这在springws1.5中运行良好,但在springws1.0.4中运行时,我遇到了以下异常。请帮助我为什么会出现此异常以及如何解决。我只需要使用down版本,因为我的spring版本是2.0.4。请尽快回复

Unhandled exception: 
    org.springframework.oxm.jaxb.JaxbUnmarshallingFailureException: JAXB unmarshalling exception: unexpected element (uri:"http://yyy.org", local:"xxxResponse"). Expected elements are <{}xxx>,<{}xxxResponse>; nested exception is javax.xml.bind.UnmarshalException: unexpected element (uri:"yyy.org", local:"xxxResponse"). Expected elements are <{}xxx>,<{}xxxResponse>
    Caused by: 
    javax.xml.bind.UnmarshalException: unexpected element (uri:"http://yyy.org", local:"xxxResponse"). Expected elements are <{}xxx>,<{}xxxResponse>
     at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:603)
     at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:244)
     at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:239)
     at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:116)
     at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext$DefaultRootLoader.childElement(UnmarshallingContext.java:1009)
     at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:446)
     at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:427)
     at com.sun.xml.bind.v2.runtime.unmarshaller.InterningXmlVisitor.startElement(InterningXmlVisitor.java:71)
     at com.sun.xml.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:137)
     at com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:240)
     at com.sun.xml.bind.unmarshaller.DOMScanner.scan(DOMScanner.java:123)
     at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:314)
     at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:297)
     at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:107)
     at org.springframework.oxm.jaxb.Jaxb2Marshaller.unmarshal(Jaxb2Marshaller.java:395)
     at org.springframework.ws.support.MarshallingUtils.unmarshal(MarshallingUtils.java:62)
     at org.springframework.ws.client.core.WebServiceTemplate$2.extractData(WebServiceTemplate.java:276)
     at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:417)
     at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:265)
     at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:253)
     at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:245)
     at encompass.mtm.webservices.Code1ServiceClient.getAddressCheckResponse(Code1ServiceClient.java:24)
jboss/./lib

以下是我的spring配置文件:

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory">
        <property name="messageFactory">
            <bean class="com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl"/>
        </property>
    </bean>

    <bean id="test1ObjectFactory" class="test.webservices.ObjectFactory"/>
    <bean id="test1ServiceMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
        <property name="contextPath" value="test.webservices" />
    </bean>
    <bean id="test1ServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
        <constructor-arg ref="messageFactory" />
        <property name="marshaller" ref="test1ServiceMarshaller"></property>
        <property name="unmarshaller" ref="test1ServiceMarshaller"></property>
        <property name="messageSender">
            <bean
                class="org.springframework.ws.transport.http.CommonsHttpMessageSender">
            </bean>
        </property>
        <property name="defaultUri" value="${webservice.url}" />
    </bean>
    <bean id="test1ServiceClient" class="test.webservices.test1ServiceClient">
        <constructor-arg ref="test1ServiceTemplate"></constructor-arg>
        <property name="test1ObjectFactory" ref="test1ObjectFactory"></property>
    </bean>
}

输入 下面是类级注释

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "xxxData"
})
@XmlRootElement(name = "Xxx")
答复:

  @ XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "xxxResult"
    })
    @XmlRootElement(name = "XxxResponse")

得到的例外情况是,JAXB上下文希望接收没有XML名称空间的元素。这是因为JAXB注释的类没有在任何地方定义名称空间。您可能会在绑定类(或在
package info.java
中)的某个地方找到声明为
@XmlNamespace
,但您在任何地方都没有

然而,SpringWS正在接收具有名称空间的响应(代码
http://yyy.org
在您的示例中),因此解组失败

我无法解释的是SpringWS1.5.x是如何工作的——对于每个版本,名称空间不匹配都应该失败


无论使用什么工具生成JAXB类,都应该生成一个声明名称空间的
package info.java
文件。您确定它不在那里吗?

当我们收到此错误时,请给我答复。在哪里查看?请建议我如何保存日志以及如何解决这些错误?没有人回答??需要更多信息,或者这个问题不清楚。请帮助我我真的在寻找这个。我在我的问题中添加了配置文件,请帮助我。我正在工作几天,得到所有类型的错误,请帮我一个忙。我没有jaxb.properties。我的结构中没有保留package-info.java。需要吗?我已经发布了ObjectFactory.java。有xxx是为AddrCheck屏蔽的。谢谢你的时间谢谢你,先生。这真是我的错。我不知道这个包-info.java有那么重要。我保存这个文件并不是因为它只包含包名。现在我保存了这个文件,所有的东西都正常工作了。通过搜索google,我试图在XmlRootElement中保留AddrCheck和AddrCheckResponse文件的名称空间。但那一次我得到了零结果。无论如何谢谢你,先生。这就是为什么我还保留了一个问题来理解这些封送员是如何工作的,无论如何,再次非常感谢您,先生。我有完全相同的问题,但我从未删除package-info.java文件,并再次检查它是否真的存在。你能给我一些提示吗?
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "xxxData"
})
@XmlRootElement(name = "Xxx")
  @ XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "xxxResult"
    })
    @XmlRootElement(name = "XxxResponse")