Hi,
I change the helloservice and dii examples of the jwsdp1.3 tutorial to this:
---HelloIF.java----
package helloservice;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface HelloIF extends Remote {
public String[] sayHello(String s) throws RemoteException;
}
-----HelloImpl.java-----
package helloservice;
public class HelloImpl implements HelloIF {
public String[] message = {"Hello","cadena1","cadena2"};
public String[] sayHello(String s) {
message[1] = s;
return message;
}
}
&nb!
sp;!
----HelloClient.java----
package dii;
import javax.xml.rpc.Call;
import javax.xml.rpc.Service;
import javax.xml.rpc.JAXRPCException;
import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceFactory;
import javax.xml.rpc.ParameterMode;
public class HelloClient {
private static String qnameService = "MyHelloService";
private static String qnamePort = "HelloIF";
private static String BODY_NAMESPACE_VALUE = "urn:Foo";
private static String ENCODING_STYLE_PROPERTY = "javax.xml.rpc.encodingstyle.namespace.uri";
private static String NS_XSD = "
http://www.w3.org/2001/XMLSchema";
private static String URI_ENCODIN! G = "
http://schemas.xmlsoap.org/soap/encoding/";
public static void main(String[] args) {
String[] result = null;
System.out.println("Endpoint address = " + args[0]);
try {
ServiceFactory factory = ServiceFactory.newInstance();
Service service = factory.createService(new QName(qnameService));
QName port = new QName(qnamePort);
Call call = service.createCall(port);
call.setTarge! tEndpointAddre!
ss(args[0]);
call.setProperty(Call.SOAPACTION_USE_PROPERTY, new Boolean(true));
call.setProperty(Call.SOAPACTION_URI_PROPERTY, "");
call.setProperty(ENCODING_STYLE_PROPERTY, URI_ENCODING);
QName QNAME_TYPE_STRING = new QName(NS_XSD, "ArrayOfstring");
call.setReturnType(QNAME_TYPE_STRING);
QName QNAME_TYPE_STRING2 = new QName(NS_XSD, "string");
call.setOperationName(new QName(BODY_NAMESPACE_VALUE, "sayHello"));
! !
call.addParameter("String_1", QNAME_TYPE_STRING2, ParameterMode.IN);
String[] params = { "Murph!" };
result = (String[])call.invoke(params);
System.out.println(result[1]);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
and I got the following error:
run-client:
[java] Endpoint address =
http://localhost:8080/hello-jaxrpc/hello &nbs! p;&nbs!
p; [java] deserialization error: java.lang.NullPointerException
[java] at com.sun.xml.rpc.encoding.ObjectSerializerBase.deserialize(ObjectSerializerBase.java:214)
[java] at com.sun.xml.rpc.encoding.ReferenceableSerializerImpl.deserialize(ReferenceableSerializerImpl.java:134)
[java] at com.sun.xml.rpc.client.dii.CallInvokerImpl._readFirstBodyElement(CallInvokerImpl.java:222)
[java] at com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:158)
[java] at com.sun.xml.rpc.client.dii.CallInvokerImpl.doInvoke(CallInvokerImpl.java:61)
[java] at com.sun.xml.rpc.client.dii.BasicCall.invoke(BasicCall.java:353! )&nb!
sp;
[java] at dii.HelloClient.main(Unknown Source)
[java] CAUSE:
[java] java.lang.NullPointerException
[java] at com.sun.xml.rpc.encoding.soap.SOAPResponseSerializer.doDeserialize(SOAPResponseSerializer.java:149)
[java] at com.sun.xml.rpc.encoding.ObjectSerializerBase.deserialize(ObjectSerializerBase.java:167)
[java] at com.sun.xml.rpc.encoding.ReferenceableSerializerImpl.deserialize(ReferenceableSerializerImpl.java:134)
[java] at com.sun.xml.rpc.client.dii.CallInvokerImpl._readFirstBodyElement(CallInvokerImpl.java:222)
[java] at com.sun.x! ml!
.rpc.client.StreamingSender._send(StreamingSender.java:158)
[java] at com.sun.xml.rpc.client.dii.CallInvokerImpl.doInvoke(CallInvokerImpl.java:61)
[java] at com.sun.xml.rpc.client.dii.BasicCall.invoke(BasicCall.java:353)
[java] at dii.HelloClient.main(Unknown Source)
[java] CAUSE:
[java] java.lang.NullPointerException
[java] at com.sun.xml.rpc.encoding.soap.SOAPResponseSerializer.doDeserialize(SOAPResponseSerializer.java:149)
[java] at com.sun.xml.rpc.encoding.ObjectSerializerBase.deserialize(ObjectSerializerBase.java:167)
[java] at co! !
m.sun.xml.rpc.encoding.ReferenceableSerializerImpl.deserialize(ReferenceableSerializerImpl.java:134)
[java] at com.sun.xml.rpc.client.dii.CallInvokerImpl._readFirstBodyElement(CallInvokerImpl.java:222)
[java] at com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:158)
[java] at com.sun.xml.rpc.client.dii.CallInvokerImpl.doInvoke(CallInvokerImpl.java:61)
[java] at com.sun.xml.rpc.client.dii.BasicCall.invoke(BasicCall.java:353)
[java] at dii.HelloClient.main(Unknown Source)
With the dynamic proxy client I have not problems. why ?
please help me,
Thank you,
Mario Sánchez