jax-ws mit jdk 1.5

Bundschuh

Mitglied
Hallo Leute,

ist es prinzipiell möglich einen Webservice mit JAX-WS auch mit JRE 1.5 zu betreiben?

Habe mich jetzt soweit in die Materie reingearbeitet, dass ich einen schönen WS und mit wsgen und wsimport implementiert habe und merke jetzt dass dieser auf der Deploymentmaschine nicht läuft, da diese nur JRE 1.5 verwendet (Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_17-b04)). In meiner Eclipse-Umgebung und meiner Development Tomcat-Umgebung habe ich eben JRE 1.6.


Andernfalls muss ich wohl in den sauren Apfel beissen und mich in AXIS einarbeiten....wofür ich eigentlich keine Zeit mehr habe ;(

Der Server schmeisst folgende Exception:
Java:
[ContainerBackgroundProcessor[StandardEngine[Catalina]]] ERROR org.apache.catalina.core.StandardContext.listenerStart() [/WSCONTAINER]  -  Error configuring application listener of class com.sun.xml.ws.transport.http.servlet.WSServletContextListener
java.lang.ClassNotFoundException: com.sun.xml.ws.transport.http.servlet.WSServletContextListener
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1352)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3677)
        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.check(HostConfig.java:1190)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:292)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1305)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1569)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1578)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1558)
        at java.lang.Thread.run(Thread.java:595)
2010-02-16 16:30:14,774 [ContainerBackgroundProcessor[StandardEngine[Catalina]]] ERROR org.apache.catalina.core.StandardContext.listenerStart() [/WSCONTAINER]  -  Skipped installing application listeners due to previous error(s)
2010-02-16 16:30:14,774 [ContainerBackgroundProcessor[StandardEngine[Catalina]]] ERROR org.apache.catalina.core.StandardContext.start() StandardContext  -  Error listenerStart
2010-02-16 16:30:14,774 [ContainerBackgroundProcessor[StandardEngine[Catalina]]] ERROR org.apache.catalina.core.StandardContext.start() StandardContext  -  Context [/WSCONTAINER] startup failed due to previous errors
 

fax

Mitglied
JAX-WS funktioniert mit JRE 1.5 sogar einfacher, weil man sich nicht mit endorsed Verzeichnissen rumschlagen muss. Bei dem Originalbeitrag war offensichtlich JAX-WS gar nicht in Tomcat installiert bzw. nicht ins WAR gepackt worden. Beschreibe dein Problem mal genauer.
 

Kirro

Mitglied
ja ich habe die jax-ws libs in den build path gesetzt...
Eine frage hätte ich aber noch... und zwar soll im jdk1.5 auch wsimport dabei sein... ist es bei mir aber nicht? wieso?
 

Kirro

Mitglied
Ok dann erstellt man die Client daten mit WSImport und added die JAX-WS - libs auch in die Client-Anwendung, wenn diese jdk 1.5 ist oder?

Gibt es andere Möglichkeiten?
 

fax

Mitglied
Ok dann erstellt man die Client daten mit WSImport und added die JAX-WS - libs auch in die Client-Anwendung, wenn diese jdk 1.5 ist oder?
Ja.

Gibt es andere Möglichkeiten?
Ne, tja, irgendwoher muss der ganze Code ja kommen, der dir die SOAP Nachrichten massiert. Wenn die Client Anwendung in einem Java EE 5 oder 6 Container läuft, ist JAX-WS mit dabei, dann brauchst du es nicht noch extra hinzufügen.
 

Bundschuh

Mitglied
Hey,

leider weiss ich auch nicht mehr genau woran das Problem lag. Aber classnotfound sagt wie der Name selbst schon alles. Die Klasse konnte nicht gefunden werden. Ev. weil sie nicht im Classpath liegt.
Hast ud auch die Web.xml und die sun-jaxws.xml richtig konfiguriert und im Web-INF-Ordner?

Ich hatte zudem noch einen Fehler, dass ich unbemerkt meinen Webservice immer mit dem Java 1.6 compiliert habe und versucht habe diesen dann auf einem Tomcat mit Java 1.5 zu laufen zu bekommen. Dabei wurde mir eine UnsupportedClassException geschmissen.

Gruß
Bundschuh
 

Kirro

Mitglied
nee also wenn ich 1.6 benutze funktioniert alles der service und der client

habe nun auf 1.5 alles umgestellt und tomcat 5.0

Webservice läuft: nachdem ich beim Tomcat-verzeichnis/common/endorsed/ 2 Dateien (die einzigen) umbenannt habe: es waren folgende:
xercesImpl.jar
xml-apis.jar beide in .old umbenannt und dann lief der Webservice

beim Client liegt jetzt das problem... wenn ich den 1.6 lasse dann funktioniert es natürlich
bei 1.5 sagt er mir immer class not found... ist ja auch kla... also füge ich die libs ein ... und dann kommt das schon wieder aber von einer anderen klasse!

Kann einer mir sagen welche libs ich alle brauch?... ich möchte auch nicht, dass die Client-Anwendung so groß wird... aber da komme ich wahrscheinlich nicht drum rum?
 

Kirro

Mitglied
So ... jetzt habe ich einen Client zum laufen gebracht.

Bei dem anderen Client funktioniert es nicht (obwohl die gleichen libs im build path sind)

Ich habe es mal debugged... und wenn er den Service aufruft also Service bla = new Service();
dann geht er in die ClassLoader.class ... sollte ja aber in den Service.class gehen? ist ja die Oberklasse...

was kann da schief gegangen sein? Irgendwelche Konflikte mit anderen Libs?
 

Kirro

Mitglied
ja ich habe jetzt alle!

Ich vermute ich habe auch das Problem gefunden evtl.!

Ich brauche auch die libs von axis2 und jax-rpc ... die funktionieren auch... nun meine frage:

Jax-ws ist doch kompatibel mit rpc... also könnte ich mit rpc nicht auch auf den Webservice zugreifen(also auf den der jax-ws bentuzt)? Oder ist das nur Anders rum kompatibel?

Eine Zweite Frage: Die behindern sich nicht gegenseitig oder?
 

Kirro

Mitglied
ok Habs zum laufen gebracht mit den jax-ws libs

habe sie in dem client einfach doppelt eingefügt!

Also das projekt besteht aus 2 einzelprojekten (A und B)

A benutzt den Webservice(also muss das hier eingefügt werden, da die IDE sonst meckert)

B included A (deshalb dachte ich, ich brauche das nich nochmal hinzuzufügen), aber falsch gedacht... nun klappt es? jmd ne idee warum?
 

Bundschuh

Mitglied
Klar, du hast 2 unterschiedliche Projekte. Einmal den Service und den Client. Beide brauchen natürlich auch alle Libs. Falls du ein Minimum an Libs beim Client haben willst, dann muss du am besten nach und nach die notwendigen Libs hinzufügen.

Wieso included A denn B? Normalerweise entwickelt man den WS und deployed ihn auf dem Server. Danach erstellst du mit WSImport die notwendigen Stubs und erstellt damit deinen Client.
WSImport geht auch mit 1.5. Hier brauchst du nur die notwendigen Libs in denen das Tool liegt. Zudem muss man auch explizit den Classpath angeben beim Benutzen von WSImport.
Ich habs immer direkt über die Kommandozeile gemacht bzw. mit ein Ant-Skript geschrieben.

Google mal n bisschen. Ansonten kann ich dir nur das Buch empfehlen "Java Web Services: Up and Running"
Java Web Services: Up and Running

Gruß
Bundschuh
 

Kirro

Mitglied
ne habe es wahrscheinlich nicht richtig erzählt ... so gesehen habe ich dann 3 projekte in eclipse

1. Projekt ist der Webservice der läuft auch

2. und 3.Projekt zusammen ist der Client

Und Projekt 2 included das 3.Projekt

und ich habe es nur zum laufen gebracht, wenn ich die libs von jax-ws in projekt 2 und projekt 3 einfüge obwohl ich es ja schon in projekt 3 habe (was ja von dem Projekt 2 included wurde)

PS: mit included meine ich ist im BuildPath
 

Neue Themen


Oben