Hallo liebe Experten,
erstmal bitte nicht vom langen Text abschrecken lassen
ich habe mich ein wenig in Webservices mit Java eingearbeitet und will nun diesen auf einen Server deployen.
Leider musste ich feststellen, dass auf diesem nicht die selben Bedingungen gegeben sind, wie in meiner Entwicklungsumgebung. Entwickelt habe ich mit Tomcat 6 und dem neuesten JDK 1.6.
Auf dem Server selbst läuft Java™ 2 Runtime Environment, Standard Edition (build 1.5.0_17-b04) und Apache Tomcat 5.5.17.
Zu meinem Pech läuft der WS natürlich nicht. Beim Deployen der WAR-Datei wird folgende Exception geschmissen:
2010-02-17 10:26:50,694 [main] ERROR org.apache.catalina.core.StandardContext.listenerStart() [/webservice] - Exception sending context initialized event to listener instance of class com.sun.xml.ws.transport.http.servlet.WSServletContextListener
WSSERVLET11: failed to parse runtime descriptor: java.lang.UnsupportedClassVersionError: Bad version number in .class file
at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized(WSServletContextListener.java:100)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3729)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4187)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
at org.apache.catalina.core.ContainerBase.access$000(ContainerBase.java:121)
at org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.java:143)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:737)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:809)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:698)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:472)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1122)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1021)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
at org.apache.catalina.core.StandardService.start(StandardService.java:450)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:709)
at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.commons.daemon.support.DaemonLoader.start(DaemonLoader.java:218)
Caused by: java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1812)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:866)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1319)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:242)
at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.getImplementorClass(DeploymentDescriptorParser.java:493)
at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parseAdapters(DeploymentDescriptorParser.java:181)
at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parse(DeploymentDescriptorParser.java:131)
at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized(WSServletContextListener.java:90)
… 31 more
2010-02-17 10:26:50,695 [main] ERROR org.apache.catalina.core.StandardContext.start() StandardContext - Error listenerStart
2010-02-17 10:26:50,695 [main] ERROR org.apache.catalina.core.StandardContext.start() StandardContext - Context [/webservice] startup failed due to previous errors
Entscheident ist das: „WSServletContextListener“ und „UnsupportedClassVersionError: Bad version number in .class file“
Heißt für mich, dass die Klasse nicht unterstützt wird.
Weitere Infos: Der Container beinhaltet im WEB-INF/lib alle Jar-Dateien aus jaxws-ri. Vor allem die „jaxws-rt.jar“, welche die Klasse WSServletContextListener beinhaltet.
Beim Googlen konnte ich irgendwas von „endorsed“ aufschnappen und habe den Ordner mal erstellt und auch haufenweise jar-Dateien reingeworfen.
Leider alles vergebens.
Jetzt nochmal die Frage: Kann man JAX-WS überhaut mit den oben genannten Bedingungen verwenden?
Ich mein gelesen zu haben, dass es mit Java 1.5 funktionieren sollte und Java 1.6 dieses WS-Framework schon in der core standardmäßig mitliefert.
Ich hoffe echt, dass mir hier jmd helfen kann. Man findet in Foren nicht gerade viel im Bezug Deployinh mit JAX-WS.
Gruß
straight