Apache Axis e classe de ponteiro

8 respostas
luis.txt

Pessoal,

Estou querendo utilizar o Apache Axis para criar um web service para consulta a banco de dados.

Bem, eu já fiz os exemplos simples (calculadora..), também já cheguei a fazer alguns exemplos usando outras ferramentas, mas achei o axis mais fácil.

Quando fui fazer minha aplicação q acessa bd segui os seguintes passos:

-->coloquei o pacote do meu projeto q tem a classe que acessa bd dentro da pasta axis\WEB-INF\classes.

-->coloquei o jar do postgres dentro da pasta axis\WEB-INF\lib.

-->coloquei a classe ponteiro na pasta axis e renomeei a extensão do arquivo para jws:

import com.icc.daotest.DAO;

public class TestBD {
	public String getData(String test) {
		DAO dao = new DAO();
		return dao.getData(test);
       }
	
}

O axis gera o wsdl corretamente, mas quando tento usar o método ele me retorna o seguinte erro:

<soapenv:Envelope>
&#8722;
<soapenv:Body>
&#8722;
<soapenv:Fault>
<faultcode>soapenv:Server.userException</faultcode>
<faultstring>java.lang.reflect.InvocationTargetException</faultstring>
&#8722;
<detail>
<ns1:hostname>ICCPC-12</ns1:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>

se alguém tiver alguma idéia do que pode ser..
valeu!

8 Respostas

J

Primeiramente sugiro que você utilize o SOAP-UI para verificar se o seu webservice está realmente funcionando antes de tentar implementar seu client. Depois de verificado que ele está ok, posta aqui caso tenha problemas em criar o client. Sugiro que use o modo ADB para o client, este gera um código menos legível mas não é o propósito que você dê manutenção em um código gerado. Portanto creio que não terá maiores problemas.

Dependendo do container que você utilize pode também tentar gerar o CXF que tem algumas incompatibilidades com container de grande porte, como OC4J, da Oracle.

[]'s,

Jefferson Cunha

luis.txt

valeu pela dica do soapUI (estou baixando).

Depois de gerar as classes do client, ao tentar usar o serviço ele gera o seguinte erro:

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:ICCPC-12

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:601)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1772)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2923)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:508)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
	at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
	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 com.icc.axis.wstbank.BankSoapBindingStub.getBalance(BankSoapBindingStub.java:111)
	at com.icc.axis.TestDAO.<init>(TestDAO.java:14)
	at com.icc.axis.TestDAO.main(TestDAO.java:20)
luis.txt

Testando pelo soapUI deu o seguinte erro:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <soapenv:Fault> <faultcode>soapenv:Server.userException</faultcode> <faultstring>java.lang.reflect.InvocationTargetException</faultstring> <detail> <ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">ICCPC-12</ns1:hostname> </detail> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope>

J

luis to com o mesmo erro

se conseguiu resolver, posta a resposta pra gente

vlw

P

javaCBA:
luis to com o mesmo erro

se conseguiu resolver, posta a resposta pra gente

vlw


Comigo estava ocorrendo o mesmo.
No meu caso, era um erro no método do WebService mesmo.

[]`s

J

luis

tira uma duvida minha, como eu faço para saber qual a estrutura do xml o meu web serivce gerando em axis (axis 1.4) ele ta aceitando?

por exemplo, tentei gerar o xml a partir do meu xsd e manualmente o axis nao ta aceitando, ele soh aceita o que for gerado pelo proprio cliente do axis

como eu poderia testar isso?

P

peterson.br:
javaCBA:
luis to com o mesmo erro

se conseguiu resolver, posta a resposta pra gente

vlw


Comigo estava ocorrendo o mesmo.
No meu caso, era um erro no método do WebService mesmo.

[]`s

Detalhando mais o erro, eu estava utilizando um método de um jar referenciado no projeto, mas que não estava dentro de WEB-INF/lib.
Coloquei o jar lá e resolveu.

J

peterson, vc sabe como eu faço para ver o padrao do xml que meu web service gerado em axis trabalha?

eu quero atender tanto o padrao soap1.1 qto soap1.2

mas quero ver o padrao soap:envelope soap:body dele igual o visual studio permite mostrar

tem como fazer isso no java?

Criado 8 de janeiro de 2009
Ultima resposta 30 de jun. de 2009
Respostas 8
Participantes 4