Webservice Axis fault

2 respostas
F

Criei um cliente pro webservice utilizando o JBosse Eclipse IDE 1.6, deixei marcado os CheckBox “Process WSDL Imports”, “Unwrapped elements/literals” quando abre a janela, coloquei o link do web service e marco mais uma opção: “Create JUnit TestCase”

O que acontece em seguida é que, quando eu mando rodar o cliente, o servidor não levanta nenhuma exceção, mas para o JUnit aparece as mensagens de stacktrace abaixo:

AxisFault

faultCode: {<a href="http://schemas.xmlsoap.org/soap/envelope/">http://schemas.xmlsoap.org/soap/envelope/</a>}Server.userException

faultSubcode:

faultString: java.lang.NullPointerException

faultActor:

faultNode:

faultDetail:

{<a href="http://xml.apache.org/axis/">http://xml.apache.org/axis/</a>}stackTrace:java.lang.NullPointerException

at java.util.Hashtable.put(Hashtable.java:396)

at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.setProperty(SAXParserImpl.java:395)

at org.apache.axis.encoding.DeserializationContextImpl.parse(DeserializationContextImpl.java:261)

at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:582)

at org.apache.axis.Message.getSOAPEnvelope(Message.java:447)

at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:687)

at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:134)

at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:71)

at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:157)

at org.apache.axis.SimpleChain.invoke(SimpleChain.java:122)

at org.apache.axis.client.AxisClient.invoke(AxisClient.java:183)

at org.apache.axis.client.Call.invokeEngine(Call.java:2682)

at org.apache.axis.client.Call.invoke(Call.java:2665)

at org.apache.axis.client.Call.invoke(Call.java:2355)

at org.apache.axis.client.Call.invoke(Call.java:2278)

at org.apache.axis.client.Call.invoke(Call.java:1772)

at br.com.sysdata.client.ws.WSEquifaxFacadeSoapBindingStub.helpService(WSEquifaxFacadeSoapBindingStub.java:149)

at br.com.sysdata.client.ws.WSEquifaxFacadeServiceTestCase.test1WSEquifaxFacadeHelpService(WSEquifaxFacadeServiceTestCase.java:32)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at junit.framework.TestCase.runTest(TestCase.java:154)

at junit.framework.TestCase.runBare(TestCase.java:127)

at junit.framework.TestResult$1.protect(TestResult.java:106)

at junit.framework.TestResult.runProtected(TestResult.java:124)

at junit.framework.TestResult.run(TestResult.java:109)

at junit.framework.TestCase.run(TestCase.java:118)

at junit.framework.TestSuite.runTest(TestSuite.java:208)

at junit.framework.TestSuite.run(TestSuite.java:203)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
java.lang.NullPointerException

at org.apache.axis.AxisFault.makeFault(AxisFault.java:137)

at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:137)

at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:71)

at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:157)

at org.apache.axis.SimpleChain.invoke(SimpleChain.java:122)

at org.apache.axis.client.AxisClient.invoke(AxisClient.java:183)

at org.apache.axis.client.Call.invokeEngine(Call.java:2682)

at org.apache.axis.client.Call.invoke(Call.java:2665)

at org.apache.axis.client.Call.invoke(Call.java:2355)

at org.apache.axis.client.Call.invoke(Call.java:2278)

at org.apache.axis.client.Call.invoke(Call.java:1772)

at br.com.sysdata.client.ws.WSEquifaxFacadeSoapBindingStub.helpService(WSEquifaxFacadeSoapBindingStub.java:149)

at br.com.sysdata.client.ws.WSEquifaxFacadeServiceTestCase.test1WSEquifaxFacadeHelpService(WSEquifaxFacadeServiceTestCase.java:32)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at junit.framework.TestCase.runTest(TestCase.java:154)

at junit.framework.TestCase.runBare(TestCase.java:127)

at junit.framework.TestResult$1.protect(TestResult.java:106)

at junit.framework.TestResult.runProtected(TestResult.java:124)

at junit.framework.TestResult.run(TestResult.java:109)

at junit.framework.TestCase.run(TestCase.java:118)

at junit.framework.TestSuite.runTest(TestSuite.java:208)

at junit.framework.TestSuite.run(TestSuite.java:203)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

Caused by: java.lang.NullPointerException

at java.util.Hashtable.put(Hashtable.java:396)

at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.setProperty(SAXParserImpl.java:395)

at org.apache.axis.encoding.DeserializationContextImpl.parse(DeserializationContextImpl.java:261)

at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:582)

at org.apache.axis.Message.getSOAPEnvelope(Message.java:447)

at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:687)

at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:134)

 26 more

Já li em alguns fóruns e páginas aki que isso pode ter relação com o arquivo web.xml, mas eu duvido. Tem uns sujeitos na net que perguntaram exatamente o que eu to querendo saber (com um stack diferente, mas a idéia é a mesma)

aki o link deles:

http://mail-archives.apache.org/mod_mbox/ws-axis-user/200208.mbox/<[email removido]>

e aqui

http://mail-archives.apache.org/mod_mbox/ws-axis-dev/200411.mbox/<533563689.1101729680840.JavaMail.apache@nagoya>

Agradeço desde já qualquer ajuda.

2 Respostas

F

Tive um pequeno progresso (eu acho). A biblioteca que estava utilizando era do Apache Axis 1.2, atualizei para a versão 1.4 e a mensagem de erro mudou, ficou mais compreensiva e já consigo ter uma idéia do que pode ser o causador do problema, mais ainda estou na caça. Segue o stacktrace:

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:DESENV13

java.lang.reflect.InvocationTargetException

at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)

at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)

at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)

at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:633)

at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSDocumentScannerImpl.java:719)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1685)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)

at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)

at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)

at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)

at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)

at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)

at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)

at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)

at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)

at org.apache.axis.client.Call.invokeEngine(Call.java:2784)

at org.apache.axis.client.Call.invoke(Call.java:2767)

at org.apache.axis.client.Call.invoke(Call.java:2443)

at org.apache.axis.client.Call.invoke(Call.java:2366)

at org.apache.axis.client.Call.invoke(Call.java:1812)

at br.com.sysdata.client.ws.WSEquifaxFacadeSoapBindingStub.helpService(WSEquifaxFacadeSoapBindingStub.java:156)

at br.com.sysdata.client.ws.WSEquifaxFacadeServiceTestCase.test1WSEquifaxFacadeHelpService(WSEquifaxFacadeServiceTestCase.java:32)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at junit.framework.TestCase.runTest(TestCase.java:154)

at junit.framework.TestCase.runBare(TestCase.java:127)

at junit.framework.TestResult$1.protect(TestResult.java:106)

at junit.framework.TestResult.runProtected(TestResult.java:124)

at junit.framework.TestResult.run(TestResult.java:109)

at junit.framework.TestCase.run(TestCase.java:118)

at junit.framework.TestSuite.runTest(TestSuite.java:208)

at junit.framework.TestSuite.run(TestSuite.java:203)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

Vamos ver agora se eu acho a solução. Havia outro problema também, nas minhas buscas, a versão 1.2 do Apache Axis tem um pacote que utiliza uma palavra reservada do Java 1.5: enum. Esse problema foi corrijido com a nova versão do Axis (1.4).

Abraços

F

Achei uma possível solução, realmente simples, mas muita gente acaba esquecendo de fazer isso: coloque os arquivos que estão no seu classpath da aplicação no lib do servidor que você está utilizando…

Meu problema não era esse, infelismente, mas continuarei trabalhando nisso.

Abraços

Criado 30 de junho de 2006
Ultima resposta 5 de jul. de 2006
Respostas 2
Participantes 1