Guten Tag,
ich bin zur Zeit dabei einen dynamischen Web Service zu schreiben. Dazu lese ich eine XML Datei aus und schreibe daraus Java Quellqode, der dann einen WebService darstellt. Dafür nutze ich JAX-WS um den WebService einfach mithilfe von Annotationen zu erstellen. Nach dem generieren des Quellcodes compiliere ich ihn und und lasse anschließend das wsgen tool drüber laufen um die stub Klassen zu erzeugen. Mein Problem ist jetzt, dass ich diese Stub Klassen dynamisch laden muss. Das habe ich auch getan mit einem URLClassLoader aber wenn ich den WebService mit hilfe von Endpoint pubishen will, wird mir eine Fehlermeldung ausgegeben, mit dem Inhalt, dass die Klassen nicht gefunden wurden.
Hier ist ein auszug aus dem Quellcode, der das laden und das publizieren betrifft.
Das laden der Klassen funktioniert einwandfrei, ich sehe sie beim debuggen im Classloader aber sie werden beim erstellen des Endpoints nicht gefunden. Außerdem kann ich auch nicht auf die Klassen mit Class.forName zugreifen. Kann mir da vielleicht einer weiterhelfen? Ich weiß nämlich momentan wirklich nicht weiter.
Außerdem würde mich noch interresieren, ob man außer der automatisch bereitgestellen WSDL, unter der URL des WebServices eine WSDL auf anderem Weg erstellen kann. Da die von JAX-WS generierte WSDL anscheinend nicht ganz valide ist.
Gruß meddins
ich bin zur Zeit dabei einen dynamischen Web Service zu schreiben. Dazu lese ich eine XML Datei aus und schreibe daraus Java Quellqode, der dann einen WebService darstellt. Dafür nutze ich JAX-WS um den WebService einfach mithilfe von Annotationen zu erstellen. Nach dem generieren des Quellcodes compiliere ich ihn und und lasse anschließend das wsgen tool drüber laufen um die stub Klassen zu erzeugen. Mein Problem ist jetzt, dass ich diese Stub Klassen dynamisch laden muss. Das habe ich auch getan mit einem URLClassLoader aber wenn ich den WebService mit hilfe von Endpoint pubishen will, wird mir eine Fehlermeldung ausgegeben, mit dem Inhalt, dass die Klassen nicht gefunden wurden.
Hier ist ein auszug aus dem Quellcode, der das laden und das publizieren betrifft.
Code:
URLClassLoader cl = new URLClassLoader(new URL[] { url }, Thread.currentThread().getContextClassLoader());
//laden der dynamisch erzeugten klassen ....
//laden der WebSerivce Klasse
Class<?> serviceClass = cl.loadClass(servicename);
Constructor<?> construktor = serviceClass.getConstructor();
Object o = construktor.newInstance();
//publishen des WebServices
Endpoint endpoint = Endpoint.publish(URL + servicename, o);
Das laden der Klassen funktioniert einwandfrei, ich sehe sie beim debuggen im Classloader aber sie werden beim erstellen des Endpoints nicht gefunden. Außerdem kann ich auch nicht auf die Klassen mit Class.forName zugreifen. Kann mir da vielleicht einer weiterhelfen? Ich weiß nämlich momentan wirklich nicht weiter.
Außerdem würde mich noch interresieren, ob man außer der automatisch bereitgestellen WSDL, unter der URL des WebServices eine WSDL auf anderem Weg erstellen kann. Da die von JAX-WS generierte WSDL anscheinend nicht ganz valide ist.
Gruß meddins
Zuletzt bearbeitet: