jaxb是否支持在编组中重新定义

时间:2011-07-20 10:12:31

标签: java xsd jaxb

我有2个XML架构,名为Banner-2.2.xsdBatchBanner-2.2.xsd

BatchBanner-2.2.xsd包含

<xs:redefine schemaLocation="BannerXml-2.2.xsd" >

jaxb根据需要从中生成类,根据OriginalBanner有一个名为Banner-2.2.xsd的类,根据Banner有一个BatchBanner-2.2.xsd,它扩展了OriginalBanner }。但是,当我试图封送包含Banner的数据时,我收到以下异常:

javax.xml.bind.MarshalException: null
    at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:318) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:244) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(Unknown Source) ~[na:1.6.0_23]
    at com.amobee.nc.protocol.af.AFBatchResponseWriter.marshallXml(AFBatchResponseWriter.java:696) ~[classes/:na]
    at com.amobee.nc.protocol.af.AFBatchResponseWriter.getResponse(AFBatchResponseWriter.java:161) ~[classes/:na]
    at com.amobee.nc.protocol.AbstractResponseWriter.write(AbstractResponseWriter.java:75) [classes/:na]
    at com.amobee.frontend.servlets.AbstractBaseServlet.runCommand(AbstractBaseServlet.java:124) [classes/:na]
    at com.amobee.frontend.servlets.AbstractBaseServlet.doPost(AbstractBaseServlet.java:84) [classes/:na]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:595) [geronimo-servlet_3.0_spec-1.0.jar:1.0]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) [geronimo-servlet_3.0_spec-1.0.jar:1.0]
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.Server.handle(Server.java:326) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) [jetty-util-6.1.22.jar:6.1.22]
Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'ns2:bannerxml'. One of '{"http://ads.vodafone.com/schema/banner/2.2":bannerxml}' is expected.
    at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) ~[xercesImpl-2.9.1.jar:na]
    at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source) ~[xercesImpl-2.9.1.jar:na]
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) ~[xercesImpl-2.9.1.jar:na]
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) ~[xercesImpl-2.9.1.jar:na]
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) ~[xercesImpl-2.9.1.jar:na]
    at org.apache.xerces.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(Unknown Source) ~[xercesImpl-2.9.1.jar:na]
    at org.apache.xerces.impl.xs.XMLSchemaValidator.reportSchemaError(Unknown Source) ~[xercesImpl-2.9.1.jar:na]
    at org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(Unknown Source) ~[xercesImpl-2.9.1.jar:na]
    at org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(Unknown Source) ~[xercesImpl-2.9.1.jar:na]
    at org.apache.xerces.jaxp.validation.ValidatorHandlerImpl.startElement(Unknown Source) ~[xercesImpl-2.9.1.jar:na]
    at org.xml.sax.helpers.XMLFilterImpl.startElement(Unknown Source) ~[na:1.6.0_23]
    at com.sun.xml.bind.v2.runtime.output.SAXOutput.endStartTag(SAXOutput.java:124) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.output.ForkXmlOutput.endStartTag(ForkXmlOutput.java:102) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.XMLSerializer.endAttributes(XMLSerializer.java:306) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:695) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.property.ArrayElementNodeProperty.serializeItem(ArrayElementNodeProperty.java:65) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:168) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:155) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:340) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:696) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:152) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:340) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsSoleContent(XMLSerializer.java:593) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImpl.java:324) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:494) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:315) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    ... 25 common frames omitted
2011-07-20 12:56:56,588 ERROR [925451180@qtp-1816386075-0] com.amobee.frontend.servlets.AbstractBaseServlet - 
com.amobee.exceptions.UpsteedException: javax.xml.bind.MarshalException
 - with linked exception:
[org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'ns2:bannerxml'. One of '{"http://ads.vodafone.com/schema/banner/2.2":bannerxml}' is expected.]
    at com.amobee.nc.protocol.af.AFBatchResponseWriter.getResponse(AFBatchResponseWriter.java:165) ~[classes/:na]
    at com.amobee.nc.protocol.AbstractResponseWriter.write(AbstractResponseWriter.java:75) ~[classes/:na]
    at com.amobee.frontend.servlets.AbstractBaseServlet.runCommand(AbstractBaseServlet.java:124) [classes/:na]
    at com.amobee.frontend.servlets.AbstractBaseServlet.doPost(AbstractBaseServlet.java:84) [classes/:na]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:595) [geronimo-servlet_3.0_spec-1.0.jar:1.0]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) [geronimo-servlet_3.0_spec-1.0.jar:1.0]
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.Server.handle(Server.java:326) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228) [jetty-6.1.22.jar:6.1.22]
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) [jetty-util-6.1.22.jar:6.1.22]
Caused by: javax.xml.bind.MarshalException: null
    at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:318) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:244) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(Unknown Source) ~[na:1.6.0_23]
    at com.amobee.nc.protocol.af.AFBatchResponseWriter.marshallXml(AFBatchResponseWriter.java:696) ~[classes/:na]
    at com.amobee.nc.protocol.af.AFBatchResponseWriter.getResponse(AFBatchResponseWriter.java:161) ~[classes/:na]
    ... 21 common frames omitted
Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'ns2:bannerxml'. One of '{"http://ads.vodafone.com/schema/banner/2.2":bannerxml}' is expected.
    at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) ~[xercesImpl-2.9.1.jar:na]
    at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source) ~[xercesImpl-2.9.1.jar:na]
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) ~[xercesImpl-2.9.1.jar:na]
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) ~[xercesImpl-2.9.1.jar:na]
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) ~[xercesImpl-2.9.1.jar:na]
    at org.apache.xerces.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(Unknown Source) ~[xercesImpl-2.9.1.jar:na]
    at org.apache.xerces.impl.xs.XMLSchemaValidator.reportSchemaError(Unknown Source) ~[xercesImpl-2.9.1.jar:na]
    at org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(Unknown Source) ~[xercesImpl-2.9.1.jar:na]
    at org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(Unknown Source) ~[xercesImpl-2.9.1.jar:na]
    at org.apache.xerces.jaxp.validation.ValidatorHandlerImpl.startElement(Unknown Source) ~[xercesImpl-2.9.1.jar:na]
    at org.xml.sax.helpers.XMLFilterImpl.startElement(Unknown Source) ~[na:1.6.0_23]
    at com.sun.xml.bind.v2.runtime.output.SAXOutput.endStartTag(SAXOutput.java:124) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.output.ForkXmlOutput.endStartTag(ForkXmlOutput.java:102) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.XMLSerializer.endAttributes(XMLSerializer.java:306) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:695) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.property.ArrayElementNodeProperty.serializeItem(ArrayElementNodeProperty.java:65) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:168) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:155) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:340) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:696) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:152) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:340) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsSoleContent(XMLSerializer.java:593) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImpl.java:324) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:494) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:315) ~[jaxb-impl-2.2.1.1.jar:2.2.2]
    ... 25 common frames omitted

我想验证是否有支持<xs:redefine>的jaxb版本?如果是这样,我怎样才能在这种情况下执行元帅?

0 个答案:

没有答案