Estou implementando um cliente dii para acessar um WebService que vem no pacote JWSDP, e estou utilizanto o tomcat…
mas não estou conseguindo invocar o serviço, aparecendo o seguinte erro:
java.rmi.RemoteException: JAXRPC.TIE.01: caught exception while handling request: deserialization error: unexpected XML reader state. expected: END but found: START: String_1
at com.sun.xml.rpc.client.dii.BasicCall.invoke(BasicCall.java:369)
at HelloClient.main(HelloClient.java:54)
o meu código é este(a linha que está dando erro está em negrito):
import javax.xml.rpc.Call;
import java.lang.String;
import javax.xml.rpc.Service;
import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceFactory;
import javax.xml.rpc.ParameterMode;
public class HelloClient{
private static String endpoint = "http://localhost:8080/jaxrpc-HelloWorld/hello";
private static String qnameService = "HelloWorldService";
private static String namespace = "http://hello.org/wsdl";
private static String qnamePort = "HelloIFPort";
private static String BODY_NAMESPACE_VALUE = "http://localhost:8080/jaxrpc-HelloWorld/hello?WSDL";
public static final java.lang.String ENCODINGSTYLE_URI_PROPERTY = "javax.xml.rpc.encodingstyle.namespace.uri";
private static String NS_XSD = "http://www.w3.org/2001/XMLSchema";
private static String URI_ENCODING = "http://schemas.xmlsoap.org/soap/encoding/";
public static void main(String[] args) {
try {
ServiceFactory factory = ServiceFactory.newInstance();
Service service = factory.createService(new java.net.URL(BODY_NAMESPACE_VALUE),new QName(namespace,qnameService));
QName port = new QName(namespace,qnamePort);
QName operationName = new QName(namespace,"sayHelloBack");
Call call = service.createCall(port,operationName);
call.setTargetEndpointAddress(endpoint);
call.setProperty(Call.SOAPACTION_USE_PROPERTY, new Boolean(true));
call.setProperty(Call.SOAPACTION_URI_PROPERTY,"");
call.setProperty(ENCODINGSTYLE_URI_PROPERTY, URI_ENCODING);
QName QNAME_TYPE_STRING = new QName(NS_XSD, "String_1");
//call.setReturnType(QNAME_TYPE_STRING);
call.setOperationName(new QName(BODY_NAMESPACE_VALUE,"sayHelloBack"));
//call.addParameter("String_1", QNAME_TYPE_STRING,ParameterMode.IN);
//call.addParameter("String_2", QNAME_TYPE_STRING,ParameterMode.IN);
String[] params = new String[2];
params[0] = "Vinicius";
params[1] = "blz";
String resultado = (String)call.invoke(params);
System.out.println(resultado);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
Alguém saberia o motivo do erro?
Obrigado e T+