Cliente DII

0 respostas
N

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+

Criado 3 de outubro de 2004
Respostas 0
Participantes 1