2012-02-03 11 views
9

Migrowanie istniejącego jaxb (używa zarówno jaxb1.0.1 jak i jaxb1.0.1 jaxb 2.0.5) (na JBoss 4.3 z jdk5) do jaxb 2.1.10 (dostarczone z jdk6, aktualizacja jdk1.6.0_30).Co powoduje SAXException2: Instancja "com.foo.Bar" zastępuje "java.lang.Object", ale "com.foo.Bar" jest powiązany z anonimowym typem

Nie mogę zmodyfikować schematu dostarczonego przez klienta.

Usunąłem wszystkie odniesienia do słoików jaxws20, jwsdp, jaxp i jaxb od Sun RI i używam tylko słoików dostarczanych przez jdk 6.

Jakieś wskazówki?

Caused by: com.sun.istack.SAXException2: Instance of “com.foo.Bar” is substituting “java.lang.Object”, but “com.foo.Bar” is bound to an anonymous type [email protected] 
at com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:247) 
at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:662) 
at com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:165) 
at com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:152) 
at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:332) 
at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:698) 
at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:152) 
at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:332) 
at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsSoleContent(XMLSerializer.java:592) 
at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImpl.java:320) 
at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:493) 
at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:325) 
+0

Jeśli masz zagnieżdżone anonimowe typy złożone w XSD, może to być przyczyną problemu. jaxb 1.x pozwoliłby na takie rzeczy bez zgłaszania błędu, ale wydaje się, że jest to problem w jaxb 2.x. Jeśli to jest problem, nie znam żadnego sposobu radzenia sobie z nim poza modyfikacją XSD. – Durandal

+0

@MRalwasser - Czy są jakieś informacje, które możesz opublikować, a które mogę wykorzystać do odtworzenia błędu, który widzisz, aby pomóc w usunięciu problemu? –

Odpowiedz

2

Może to być spowodowane przez dodanie Foo obiektów parametru SOAP List<Bar> typu.

Miałem ten sam wyjątek kilka tygodni temu. Spodziewałbym się błędu kompilacji, więc pod maską musiał być jakiś brzydki przymus, żeby do tego doszło. Nie badałem już więcej - zastąpienie Foo za pomocą Bar (które i tak powinno być) rozwiązało problem.

+1

Rob, nie mam klasy Foo ..... do czego zmienię moją klasę Bar? SAXException2: Instancja "com.foo.Bar" zastępuje "java.lang.Object", ale "com.foo.Bar" jest związany z anonimowym typem [email protected] –

Powiązane problemy