JAXB 2.0 ClassLoader

baschdl

Grünschnabel
Hi,

ich hoffe mir kann jemand bei meinem Problem helfen. Wir stellen gerade unser System auf JAXB 2.0 um (vorher JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v1.0.5-b16-fcs), da dies einige Vorteile mit sich bringt. Nachdem ich mit JAXB 2.0 die Klassen generiert habe, habe ich das System in meiner Testumgebung (Eclipse) getestet. Alles lief ohne (nach kleineren Fehlerbehebungen) Probleme, doch als ich nun die generierten Klassen, die Java Files und die neuen Bibliotheken auf den Server geladen habe, bekomme ich immer eine Fehlermeldung sobald der Befehl:
jc = JAXBContext.newInstance("...",this.getClass().getClassLoader());
bzw. 2. Variante
jc = JAXBContext.newInstance("...");
angesprochen wird.
// "..." steht für das Package in dem die generierten Klassen liegen


Stacktrace:
javax.xml.bind.ContextFinder searchcontextPath
javax.xml.bind.ContextFinder find
javax.xml.bind.JAXBContext newInstance
javax.xml.bind.JAXBContext newInstance
....application.....internal.....HandleXML <init>
....application.....pipelet.ProcessMgmt execute
....beehive.core.internal.pipeline.PipeletNode executeNode
....beehive.core.internal.pipeline.Pipeline executeNode
....beehive.core.internal.pipeline.Pipeline executePipeline
....beehive.core.internal.pipeline.PipelineProcessorImpl executePipeline
....beehive.core.internal.pipeline.PipelineProcessorImpl executePipeline
....beehive.core.internal.request.RequestHandlerServlet processRequest
....beehive.core.internal.request.RequestHandlerServlet service
javax.servlet.http.HttpServlet service
org.apache.catalina.core.ApplicationFilterChain internalDoFilter
org.apache.catalina.core.ApplicationFilterChain doFilter
....beehive.core.internal.url.URLServletFilter doFilter
org.apache.catalina.core.ApplicationFilterChain internalDoFilter
org.apache.catalina.core.ApplicationFilterChain doFilter
....core.web.internal.pagemarker.PageMarkerFilter doFilter
org.apache.catalina.core.ApplicationFilterChain internalDoFilter
org.apache.catalina.core.ApplicationFilterChain doFilter
org.apache.catalina.core.StandardWrapperValve invoke
org.apache.catalina.core.StandardContextValve invoke
org.apache.catalina.core.StandardHostValve invoke
org.apache.catalina.valves.ErrorReportValve invoke
org.apache.catalina.core.StandardEngineValve invoke
org.apache.catalina.connector.CoyoteAdapter service
org.apache.coyote.http11.Http11Processor process
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler processConnection
org.apache.tomcat.util.net.PoolTcpEndpoint processSocket
org.apache.tomcat.util.net.LeaderFollowerWorkerThread runIt
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable run
java.lang.Thread run

Die Jaxb.property File und die bgm.ser (die in JAXB 1.0.5 noch benötigt wurden) habe ich gelöscht. Ich hoffe hier kennt sich jemand damit aus. Bin für jeden Hinweis dankbar.

mfg
baschdl
 
Zuletzt bearbeitet:
hab zuviel abgeschnitten:
Fehlermeldung: Unable to locate jaxb.properties for package ...

habe aber in verschiedenen Foren gelesen, dass die JAXB.Properties in JAXB 2.0 nicht mehr benötigt werden und auch wenn ich die alte propertie Files in den Ordner lege und diese ein wenig abändere (ContextFactory mit der von ....v2.contextFactory [irgendwie so] verknüpfe) kommt diese Fehlermeldung. Kohsuke von Sun schrieb irgendwas von alten Jar Files (von Version 1.0), das kann aber nicht sein, da ich die Jars aus der 2.0 und 2.1RI Version benutze sowohl in meiner Testumgebung als auch auf dem Server. In der Testumgebung funktioniert es, auf dem Server aber nicht.
 
Zuletzt bearbeitet:
Habe es eben noch einmal mit der jaxb.properties File probiert. Dabei kommt dann der
Fehler:

Provider com.sun.xml.bind.v2.ContextFactory could not be instantiated

der Inhalt der property File sieht so aus:

javax.xml.bind.context.factory=com.sun.xml.bind.v2.ContextFactory

Aber eigentlich benötigt man diese gar nicht mehr in JAXB 2.0.
 
Zuletzt bearbeitet:
eigentlich nicht. aber mir kommt es sowieso vor als ob es überhaupt keine Auswirkungen hat, welche jars ich auf den Server lege (mit classpath Eintragung). Als ob da noch eine Jar File alle anderen Zusammenfasst (falls soetwas geht) und dadurch meine neu hinzugefügten Jars nicht angesprochen werden.


<classpathentry kind="src" path="javasource"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry exported="true" kind="con" path="....REQUIREDCARTRIDGES_CONTAINER"/>
<classpathentry kind="lib" path="cartridge/lib/jaxb-api.jar"/> //neu
<classpathentry kind="lib" path="cartridge/lib/jaxb-xjc.jar"/> //neu
<classpathentry kind="lib" path="cartridge/lib/jaxb-impl.jar"/> //neu
<classpathentry kind="lib" path="cartridge/lib/jsr173_api.jar"/> //neu
<classpathentry kind="lib" path="cartridge/lib/jax-qname.jar"/>
<classpathentry kind="lib" path="cartridge/lib/namespace.jar"/>
<classpathentry kind="lib" path="cartridge/lib/relaxngDatatype.jar"/>
<classpathentry kind="lib" path="cartridge/lib/xsdlib.jar"/>
<classpathentry kind="lib" path="cartridge/lib/sjsxp.jar"/> //neu
<classpathentry kind="lib" path="cartridge/lib/activation.jar"/> //neu
<classpathentry kind="output" path="cartridge/classes"/>
 
Hallo,

wie gesagt es schaut so aus,als ob der Classpath deines Servers ein wenig vermurkst wäre... starte deinen Server (wenn unter Java 5 unter Java 6 nicht mehr notwendig) doch mal mit -Dcom.sun.management.jmxremote und verbinde ich vom gleichen Rechner mit der JConsole und schaue mal in der Summary Page wie der "echte" Classpath ausschaut...

Gruß Tom
 
ahh.
Kann vom classpath des Application Servers leider nichts posten, aber wichtig ist eigentlich bloß, dass dort nur ein Eintrag (für mein Projekt relevant) für eine Jar File ist. Ich denke jetzt komm ich erst einmal alleine weiter.

Riiiieeeeeesen Dank an dich Tom

Gruß baschdl
 
Zurück