Hi,
ich habe in Eclipse einen ganz einfachen Webservice geschrieben.
Der Server:
Der WebService ansich:
Der Client:
MyServer und MyWebService sind zusammen in einem Projekt und MyClient ist in einem zweiten Projekt in Eclipse.
Ich habe natürlich auch die Service-Klassen aus der WSDL-Datei per Console generiert:
Kurzum, alles funktioniert prima, solange ich NICHT in MyWebService die Methode createArtikel(..) implementiere!!! Wenn ich diese Methode komplett auskommentiere, kann ich den Server starten, die WSDL im Browser anzeigen und auch MyClient ausführen (bekomme dann hier das Additionsergebnis und die benötigte Zeit angezeigt).
Wenn ich jedoch die Methode createArtikel(..) in MyWebService drin hab und erstmal nur den Server (MyServer) starten will, bekomme ich die Fehlermeldung:
In MyWebService musste ich natürlich noch eine Library einbinden, die mir die Klassen/Methoden für meine createArtikel-Methode bereitstellt. Aber daran sollte es doch wohl nicht liegen, oder?
Ich weiß nicht, wie ich diesen Fehler wegbekomme! :cry:
Könnt ihr mir helfen?!
Danke und Gruß
ich habe in Eclipse einen ganz einfachen Webservice geschrieben.
Der Server:
Code:
public class MyServer {
public static void main(String[] args) {
MyWebService myService = new MyWebService();
Endpoint.publish("http://localhost:8080/MyWebService", myService);
System.out.println("WebService-Server gestartet!\n");
}
}
Der WebService ansich:
Code:
@WebService
@SOAPBinding(style=Style.RPC)
public class MyWebService {
@WebMethod
public long addValues(int val1, int val2){
return val1 + val2;
}
@WebMethod
public String createArtikel(String sArtikelBezeichnung) throws Exception{
String sArtikelNr;
AfpsHttpConnector connector = new AfpsHttpConnector("192.168.1.36",
"8080",
"Username",
"Pass");
DataObjectContainer paraCon = connector.createParameterContainer();
DataObjectContainer artikelCon = paraCon.createSubContainer("Artikel");
artikelCon.addString("Bezeichnung", sArtikelBezeichnung);
DataObjectContainer artikelKonstrCon = artikelCon.createSubContainer("ArtikelKonstruktion");
artikelKonstrCon.addString("ZeichnungNr", "1a");
// Aufruf des serverseitigen Connectors
DataObjectContainer resCon = connector.doRequest("Artikel", "createArtikel", paraCon);
// Artikelnr auslesen
sArtikelNr = resCon.getSubContainer("Artikel").getString("Nr");
return sArtikelNr;
}
}
Der Client:
Code:
public class MyClient {
public MyClient() {
// Verbindung zum WebService aufbauen (generierte Service-Klasse)
MyWebServiceService service = new MyWebServiceService();
// (generiertes) Interface MyWebService
MyWebService logic = service.getMyWebServicePort();
long lStartTime = System.currentTimeMillis();
System.out.println("Summe=" + logic.addValues(1000, 650) +"\n");
System.out.println("Artikel mit Artikelnr: " + logic.createArtikel("TESTARTIKEL") + " erfolgreich erstellt.\n");
long lEndTime = System.currentTimeMillis();
System.out.println("Zeitdifferenz: " + (lEndTime-lStartTime) + "ms");
}
public static void main(String[] args) {
new MyClient();
}
}
MyServer und MyWebService sind zusammen in einem Projekt und MyClient ist in einem zweiten Projekt in Eclipse.
Ich habe natürlich auch die Service-Klassen aus der WSDL-Datei per Console generiert:
Code:
wsimport -p de.webservice.client -keep [url]http://localhost:8080/MyWebService?wsdl[/url]
Kurzum, alles funktioniert prima, solange ich NICHT in MyWebService die Methode createArtikel(..) implementiere!!! Wenn ich diese Methode komplett auskommentiere, kann ich den Server starten, die WSDL im Browser anzeigen und auch MyClient ausführen (bekomme dann hier das Additionsergebnis und die benötigte Zeit angezeigt).
Wenn ich jedoch die Methode createArtikel(..) in MyWebService drin hab und erstmal nur den Server (MyServer) starten will, bekomme ich die Fehlermeldung:
Code:
Exception in thread "main" com.sun.xml.internal.ws.model.RuntimeModelerException: runtime modeler error: Wrapper class de.webservice.service.jaxws.ExceptionBean is not found. Have you run APT to generate them?
at com.sun.xml.internal.ws.model.RuntimeModeler.getClass(Unknown Source)
at com.sun.xml.internal.ws.model.RuntimeModeler.processExceptions(Unknown Source)
at com.sun.xml.internal.ws.model.RuntimeModeler.processRpcMethod(Unknown Source)
at com.sun.xml.internal.ws.model.RuntimeModeler.processMethod(Unknown Source)
at com.sun.xml.internal.ws.model.RuntimeModeler.processClass(Unknown Source)
at com.sun.xml.internal.ws.model.RuntimeModeler.buildRuntimeModel(Unknown Source)
at com.sun.xml.internal.ws.server.EndpointFactory.createSEIModel(Unknown Source)
at com.sun.xml.internal.ws.server.EndpointFactory.createEndpoint(Unknown Source)
at com.sun.xml.internal.ws.api.server.WSEndpoint.create(Unknown Source)
at com.sun.xml.internal.ws.api.server.WSEndpoint.create(Unknown Source)
at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.createEndpoint(Unknown Source)
at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.publish(Unknown Source)
at com.sun.xml.internal.ws.spi.ProviderImpl.createAndPublishEndpoint(Unknown Source)
at javax.xml.ws.Endpoint.publish(Unknown Source)
at de.webservice.server.MyServer.main(MyServer.java:36)
Ich weiß nicht, wie ich diesen Fehler wegbekomme! :cry:
Könnt ihr mir helfen?!
Danke und Gruß