Consumir WebServices com servlet

fala galera. To tentando acessar um webservice, fiz um programa em java que tá acessando ele, o webservice tá no ar, funcionando e retornando o resultado esperado. Precisei criar um servlet pra acessar esse mesmo webservice. Usei o mesmo stub mas obtive o seguinte erro:

AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.NullPointerException
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace: java.lang.NullPointerException
at java.util.Hashtable.put(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.setProperty(Unknown Source)
at org.apache.axis.encoding.DeserializationContextImpl.parse(DeserializationContextImpl.java:246)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:538)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:376)
at org.apache.axis.client.Call.invokeEngine(Call.java:2583)
at org.apache.axis.client.Call.invoke(Call.java:2553)
at org.apache.axis.client.Call.invoke(Call.java:2248)
at org.apache.axis.client.Call.invoke(Call.java:2171)
at org.apache.axis.client.Call.invoke(Call.java:1691)
at WrapperClient.WrapperFGVSoapBindingStub.execute(WrapperFGVSoapBindingStub.java:97)
at WrapperFGV.doGet(WrapperFGV.java:47)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)

a linha em negrito é:
java.lang.Object _resp = _call.invoke(new java.lang.Object[] {xmlQuery});

   xmlQuery e _call [b]não são nulos![/b] já mandei imprimir no console...

Alguém tem alguma idéia?

Já que tá usando Axis, pq não cria uma classe cliente de acesso com o próprio Axis, ao invés de trabalhar com essas mais mais “baixo nível”?

como eu faco isso?

http://java.danieldestro.com.br/WebServicesComAxis.zip

Fiz o que me disse, mas continuo tendo o mesmo erro…

“e agora josé?”

Tá tentando mandar algum valor null?

Tá tentando mandar algum valor null?[/quote]

pow, nem sei como testar isso…

public class MinhaClasseQueÉUmProxyWebService { //... }

MinhaClasseQueÉUmProxyWebService a = new MinhaClasseQueÉUmProxyWebService(); a.executarUmMetodoDoWS( null );

Isso está ocorrendo?

pequena confusão… disse que tinha acessado o webservice com um programa java, naum foi o que fiz, rodei O webservice como um programa comum (antes de convertelo), e ele faz o serviço… fiz um programinha java pra acessar o WS e deu pau! o erro foi o seguinte…

AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.reflect.InvocationTargetException
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}hostname: bob_esponja

java.lang.reflect.InvocationTargetException
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:260)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:169)
at org.apache.axis.encoding.DeserializationContextImpl.endElement(DeserializationContextImpl.java:1015)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at org.apache.axis.encoding.DeserializationContextImpl.parse(DeserializationContextImpl.java:242)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:538)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:376)
at org.apache.axis.client.Call.invokeEngine(Call.java:2583)
at org.apache.axis.client.Call.invoke(Call.java:2553)
at org.apache.axis.client.Call.invoke(Call.java:2248)
at org.apache.axis.client.Call.invoke(Call.java:2171)
at org.apache.axis.client.Call.invoke(Call.java:1691)
at lorisclient.LORISSoapBindingStub.getLOs(LORISSoapBindingStub.java:97)
at teste.main(teste.java:55)

PS.: O webservice instancia classes por reflexão… algum problema??

Não sei os passos que você executou, mas se seguir o tutorial que te passei, funciona!

Cara tive um problema parecido quando executava o cliente de um WS …
dava:

AxisFault … java.lang.reflect.InvocationTargetException …

Precisei alterar algumas coisas no servidor que roda o WS.

Consegui rodar, porém a solução não é das mais belas.(Porém funcionou)

O meu webservice utilizava jars (driver de bd e outras coisas)

  • pra cada jar que ele executava, abri o jar com um programa ZIP

  • dei um extrair(ou Extract depende do programa ZIP), pasta destino:

C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\axis\WEB-INF\classes

  • Acrescentei a pasta ‘C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\axis\WEB-INF\classes’ no classpath do Tomcat.
    Se vc utiliza Windows clica com o direito no icone do tomcat que fica do lado do relogio… configure … Aba ‘Java’ … Java ClassPath… e adiciona este caminho de pasta

  • Restarta o Tomcat

  • Rodei o cliente e Funcionou

Mano do céu, que “solução” é esta, cara?
Afff Maria…

Eu sei que parece estranho mas funcionou.
Eu fiz isso por causa de uma coisa que uma pessoa falou nesta URL:
http://marc2.theaimsgroup.com/?l=axis-user&m=108315965124306&w=2

Espero que meu post te ajude…
se funcionar posta.
e se vc conseguir fazer funcionar de alguma outra maneira posta a solução tb por favor.

Flw