Mittlerweile habe ich einen WebService zum laufen bekommen, die Daten / Rückgabewerte stimmen auch, leider nur im browser. Wenn ich einen WebService Client testweise schreibe, bekomme ich beim Ausführen eine NumberFormatException. Was mache ich noch falsch?
Was an Information noch ganz interessant sein könnte: der WebService läuft zwar unter Tomcat v5.5 / Axis, aber den Client generiere ich mittels suns wscompile, was bisher stets funktionierte und auch funktionieren sollte, da der client doch unabhängig von der verwendeten Service Technik sein sollte.
Folgendes Interface:
Mein Client Programm:
Exception:
Was an Information noch ganz interessant sein könnte: der WebService läuft zwar unter Tomcat v5.5 / Axis, aber den Client generiere ich mittels suns wscompile, was bisher stets funktionierte und auch funktionieren sollte, da der client doch unabhängig von der verwendeten Service Technik sein sollte.
Folgendes Interface:
Code:
package de.qsgrimm.webservice.test;
import java.rmi.Remote;
import java.rmi.RemoteException;
//import java.util.Calendar;
//import java.util.GregorianCalendar;
public interface HelloIF extends Remote {
public String sayHello(String s) throws RemoteException;
public int getDate() throws RemoteException;
public int getDbResult() throws RemoteException;
}
Mein Client Programm:
Code:
package staticstub;
import javax.xml.rpc.Stub;
import de.qsgrimm.webservice.test.*;
public class HelloClient {
private final static String ENDPOINT =
"http://localhost:8080/axis/services/pminfo";
// "http://localhost:8080/webservice/pminfo";
// "http://localhost:8080/qsg_pkg/pminfo";
public static void main(String[] args) {
System.out.println("Endpoint address = " + ENDPOINT);
try {
Stub stub = createProxy();
stub._setProperty(javax.xml.rpc.Stub.ENDPOINT_ADDRESS_PROPERTY,
ENDPOINT);
HelloImpl hello = (HelloImpl) stub;
System.out.println(hello.sayHello("Duke!"));
System.out.println("--------------------");
Integer it = new Integer((int)hello.getDbResult());
System.out.println("getDbResult= "+it.toString());
} catch (Exception ex) {
System.err.println("*ERROR* caught!");
ex.printStackTrace();
}
}
private static Stub createProxy() {
// Note: MyHelloService_Impl is implementation-specific.
return (Stub) (new HelloImplService_Impl().getPminfo());
}
}
Exception:
Code:
Endpoint address = [url]http://localhost:8080/axis/services/pminfo[/url]
Hello Duke!
--------------------
*ERROR* caught!
java.rmi.RemoteException: Runtime exception; nested exception is:
Fehler beim Aufheben der Serialisierung: java.lang.NumberFormatException: For input string: ""
at com.sun.xml.rpc.client.StreamingSender._handleRuntimeExceptionInSend(StreamingSender.java:318)
at com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:300)
at de.qsgrimm.webservice.test.HelloImpl_Stub.getDbResult(HelloImpl_Stub.java:69)
at staticstub.HelloClient.main(HelloClient.java:61)
Caused by: Fehler beim Aufheben der Serialisierung: java.lang.NumberFormatException: For input string: ""
at com.sun.xml.rpc.encoding.SimpleTypeSerializer.deserialize(SimpleTypeSerializer.java:154)
at de.qsgrimm.webservice.test.HelloImpl_getDbResult_ResponseStruct_SOAPSerializer.doDeserialize(HelloImpl_getDbResult_ResponseStruct_SOAPSerializer.java:42)
at com.sun.xml.rpc.encoding.ObjectSerializerBase.deserialize(ObjectSerializerBase.java:192)
at com.sun.xml.rpc.encoding.ReferenceableSerializerImpl.deserialize(ReferenceableSerializerImpl.java:155)
at de.qsgrimm.webservice.test.HelloImpl_Stub._deserialize_getDbResult(HelloImpl_Stub.java:224)
at de.qsgrimm.webservice.test.HelloImpl_Stub._readFirstBodyElement(HelloImpl_Stub.java:205)
at com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:215)
... 2 more