Olá pessoal,
estou começando com Web Services na prática… meu objetivo é, dado que eu tenho a URL de um WSDL, como chamar operações no Web Service.
Encontrei o projeto XFire, que faz exatamente o que quero, usando o DynamicClient ( http://xfire.codehaus.org/Dynamic+Client ). Mas no site eles recomendam que se trabalhe com a versão 2.0, que agora passa a se chamar CXF.
Então eu baixei o CXF e adicionei todo o conteúdo da pasta lib no CLASSPATH do meu projeto no Eclipse. Depois disso, para testar estou usando o código abaixo (Obs.: estou usando o mesmo código que está como exemplo no site do XFire que coloquei acima, só que aqui eu uso a classe ClientImpl, pois Client é apenas uma interface no CXF):
public static void main(String[] args) throws Exception {
URL url = new URL("http://www.webservicex.net/CurrencyConvertor.asmx?WSDL");
Client client = new ClientImpl(url);
Object[] results = client.invoke("ConversionRate", new Object[] {
"BRL", "UGX" });
// Service returns a double of the currency conversion rate.
System.out.println((Double) results[0]);
}
Só que obtenho uma NullPointerException (apresentada abaixo). Alguém saberia me dizer qual erro estou cometendo (ou então me dar uma outra alternativa para realizar essa tarefa simples) ?
Obrigado
29/11/2007 18:39:29 org.apache.cxf.configuration.spring.ConfigurerImpl <init>
INFO: Could not find the configuration file cxf.xml on the classpath.
29/11/2007 18:39:33 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
INFO: Interceptor has thrown exception, unwinding now
java.lang.NullPointerException
at org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeToOutputStream(AbstractOutDatabindingInterceptor.java:110)
at org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:67)
at org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutInterceptor.java:68)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:205)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:180)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:200)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:186)
at meupacote.teste.main(MinhaClasseDeTestes.java:4)
Exception in thread “main” java.lang.NullPointerException
at org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeToOutputStream(AbstractOutDatabindingInterceptor.java:110)
at org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:67)
at org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutInterceptor.java:68)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:205)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:180)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:200)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:186)
at meupacote.teste.main(MinhaClasseDeTestes.java:4)