G
Guest
Gast
Hallo Javaprogrammierer,
ich habe auf meinem JBoss 4.2.3 einen kleinen Webservice aufgesetzt (um genau zu sein den Beispiel-Webservice, der in vielen Tutorials benutzt wird). Dieser läuft auch einwandfrei. Ich kann die WSDL Datei erreichen und diese sieht wie gewünscht aus. Aber ein Webservice sollte nun einmal auch aufgerufen werden können. Hierfür habe ich einen kleinen Client entwickelt, der den Webservice aufrufen soll. Wenn dieser Client nun versucht die Methode des Webservices aufzurufen, bekomme ich folgende Exception:
Nachdem ich nun schon mehrere Stunden im Internet u. a. mithilfe von google nach Lösungen gesucht habe und dabei gescheitert bin Frage ich hier nach, ob jemand das Problem kennt und vlt. sogar eine Lösung dafür hat.
Die restlichen Sources sind:
Vom Webservice:
Und schließlich auch der Client:
Der Client hat in seinem Classpath auch das EJB-Projekt..... Ich habe bereits versucht die Interfaces des EJB-Projektes in ein extra Projekt zu packen und dadurch nur die Interfaces im Classpath des Clients zu haben, dies hat auch nicht geholfen.
Ich habe schon einmal einen solchen Webservice + Client auf einem anderen Rechner entwickelt und da hat es funktioniert, ich weiß nicht was ich hier falsch gemacht habe.
Ich hoffe mir kann jemand helfen.
Vielen Dank im Voraus.
ich habe auf meinem JBoss 4.2.3 einen kleinen Webservice aufgesetzt (um genau zu sein den Beispiel-Webservice, der in vielen Tutorials benutzt wird). Dieser läuft auch einwandfrei. Ich kann die WSDL Datei erreichen und diese sieht wie gewünscht aus. Aber ein Webservice sollte nun einmal auch aufgerufen werden können. Hierfür habe ich einen kleinen Client entwickelt, der den Webservice aufrufen soll. Wenn dieser Client nun versucht die Methode des Webservices aufzurufen, bekomme ich folgende Exception:
Code:
Exception in thread "main" com.sun.xml.ws.model.RuntimeModelerException: runtime modeler error: Wrapper class service.jaxws.SayHello is not found. Have you run APT to generate them?
at com.sun.xml.ws.model.RuntimeModeler.getClass(RuntimeModeler.java:249)
at com.sun.xml.ws.model.RuntimeModeler.processDocWrappedMethod(RuntimeModeler.java:545)
at com.sun.xml.ws.model.RuntimeModeler.processMethod(RuntimeModeler.java:492)
at com.sun.xml.ws.model.RuntimeModeler.processClass(RuntimeModeler.java:334)
at com.sun.xml.ws.model.RuntimeModeler.buildRuntimeModel(RuntimeModeler.java:220)
at com.sun.xml.ws.client.WSServiceDelegate.addSEI(WSServiceDelegate.java:588)
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:291)
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:274)
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:302)
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:306)
at javax.xml.ws.Service.getPort(Service.java:161)
at test.ServiceTest.<init>(ServiceTest.java:24)
at test.ServiceTest.main(ServiceTest.java:14)
Nachdem ich nun schon mehrere Stunden im Internet u. a. mithilfe von google nach Lösungen gesucht habe und dabei gescheitert bin Frage ich hier nach, ob jemand das Problem kennt und vlt. sogar eine Lösung dafür hat.
Die restlichen Sources sind:
Vom Webservice:
Code:
package service;
import javax.ejb.Remote;
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
@Remote
public interface HelloService {
@WebMethod
public String sayHello(String name);
}
Code:
package service;
import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService(serviceName="HelloService", portName="HelloServiceBean", endpointInterface="service.HelloService")
@Stateless
public class HelloServiceBean implements HelloService{
@WebMethod
public String sayHello(String name) {
System.out.println("Hallo " + name);
return "Hallo " + name;
}
}
Und schließlich auch der Client:
Code:
package test;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import service.HelloService;
public class ServiceTest {
public static void main(String[] args) {
new ServiceTest();
}
public ServiceTest() {
try {
Service s = Service.create(new URL("http://127.0.0.1:8080/HalloWS_EJB/HelloServiceBean?wsdl"),
new QName("http://service/", "HelloService"));
HelloService h = s.getPort(HelloService.class);
System.out.println(h.sayHello("Bla")); // Diese Zeile wird als Fehlerquelle markiert.
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
Der Client hat in seinem Classpath auch das EJB-Projekt..... Ich habe bereits versucht die Interfaces des EJB-Projektes in ein extra Projekt zu packen und dadurch nur die Interfaces im Classpath des Clients zu haben, dies hat auch nicht geholfen.
Ich habe schon einmal einen solchen Webservice + Client auf einem anderen Rechner entwickelt und da hat es funktioniert, ich weiß nicht was ich hier falsch gemacht habe.
Ich hoffe mir kann jemand helfen.
Vielen Dank im Voraus.