Ajuda com Apache Axis

11 respostas
R

Opa,

Baixei o axis-bin-1_2_1 do site do axis, descompactei, copiei os jar´s determinados para o tomcat, fiz um .war da pasta ‘axis’ e coloquei no tomcat.
Funcionou tudo blz, rodou a happyaxis.jsp, tudo certinho…
Bom, criei a seguinte classe :

public class TesteWebservice {
	
	public double getMedia(int a, int b){
		return ((double)(a+b)/2);
	}
	
	public double getMedia(int[] numeros){
		int total = 0;
		for(int i = 0; i < numeros.length; i++){
			total += numeros[i];
		}
		
		return ((double)total/numeros.length);		
	}
	
	public int getMenor(int numeros[]){
		
		int menor = numeros[0];	
		for(int i = 0; i < numeros.length; i++){
			if(numeros[i] < menor)
				menor = numeros[i]; 				
		}		
		return menor;
	}
	
	public int getMaior(int numeros[]){
		
		int maior = numeros[0];	
		for(int i = 0; i < numeros.length; i++){
			if(numeros[i] < maior)
				maior = numeros[i]; 				
		}		
		return maior;
	}
	

}

Bem simples, só pra testar o webservice. Renomeio o .java da classe para .jws e coloco no diretório do axis que foi criado no tomcat… Só que quando mando exibir a lista de serviços disponíveis, meu métodos não aparecem… alguém te malguma idéia ???

Valeu !

11 Respostas

danieldestro

Ele lista o serviço, mas não lista os métodos?
Dá erro?

Colocou o .jws em qual diretório?

R

eu consegui fazendo o .wsdd, agora ele lista tudo bem, só estou levando uma surra da classe cliente que estou fazendo.

R

Estou tentando fazer um cliente para interagis com os métodos que disponobilizei.

import java.net.MalformedURLException;
import java.net.URL;
import java.rmi.RemoteException;
import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;


public class TesteCliente {
	
	public static void main(String args[]){
		try{
			
			String urlServico = "http://127.0.0.1:8080/axis/services/teste";
			String nomeDoMetodo = "getMedia";
			
			Service servico = new Service();
			
			Call chamada = (Call)servico.createCall();
			
			chamada.setTargetEndpointAddress(new URL(urlServico));
			
			
			
			chamada.setOperationName(new QName(nomeDoMetodo));
			
			Object parametros[] = new Object[2];
			
			parametros[0] = new Integer(3);
			parametros[0] = new Integer(2);
			
			Double media = (Double)chamada.invoke(parametros);
			
			System.out.println("O Resultado do método " + nomeDoMetodo + " é:" + media.toString());
			
		}
		catch(MalformedURLException e){System.out.println("Erro na URL. \n" + e.getMessage());}
		catch(RemoteException e){System.out.println("Erro chamando o método! \n" + e.getMessage() );}
		catch(ServiceException e){System.out.println("Erro criando a chamada \n" + e.getMessage());}
		
	}

}

Quando rodo ele dá o seguinte erro:

"Erro chamando o método!
No such operation ‘getMedia’ "

E na lista do axis, aparecem os métodos… alguma luz ??

danieldestro

Sabia que o próprio Axis tem uma ferramenta para gerar clientes ?

Tem uma palestra aqui: http://java.danieldestro.com.br

R

Vou dar uma olhada, brigadão :wink:

R

danieldestro,
Cara BRIGADÃO, li o pdf e não precisei fazer o cliente na mão, ele já gerou tudo pra mim !

Valeu !
:smiley:

R

Só mais uma pergunta, o WSDL2Java que gerou as classes, gerou também um Stub , alguém saberia pra que serve ele, já que estou conseguindo trabalhar com meu webservice sem utilizar esta classe ???

contremo

Eu tenho o mesmo problema…

Eu tenho un bean, e uma interface muito simples, e com isso e o Java2WSDL gero o .wsdl. A continuaçao faço a geraçao do código Java co WSDL2Java, faço o deploy do webservice com AdminClient (o WS aparece listado e coas suas operaçoes no AxisServlet, coma no caso anterior neste thread)… mas quando ejecuto…

AxisFault
 faultCode: Server.userException
 faultSubcode: 
 faultString: No such operation 'enviaSMS'
 faultActor: 
 faultNode: 
 faultDetail: 
        {http://xml.apache.org/axis/}hostname:petra.rpso.usc.es

No such operation 'enviaSMS'
        at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:221)
        at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:128)
        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:424)
        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:2765)
        at org.apache.axis.client.Call.invoke(Call.java:2748)
        at org.apache.axis.client.Call.invoke(Call.java:2424)
        at org.apache.axis.client.Call.invoke(Call.java:2347)
        at org.apache.axis.client.Call.invoke(Call.java:1804)
        at es.usc.sms.ws.SMSServidorWSSoapBindingStub.enviaSMS(SMSServidorWSSoapBindingStub.java:155)
        at Main.doMain(Main.java:18)
        at Main.main(Main.java:6)

Gostaria de saber se algum de vcs podeme ajudar a resolver o problema. Muito obrigado por tudo

PD: Desculpem o meu portugues… mas eu som espanhol (e moro na Espanha) e quase nao falo o seu idioma. :stuck_out_tongue:

R

Mande o código fonte do seu cliente, para vermos como você chama o WS. ( Send your client´s source-code, so we can see how are you calling the web service )

:smiley:

contremo

Ja foi solucionado. Era um simples problema de versoes e tinha uma referencia a um wsdd que nao correspondia.

Muito obrigado pela sua ajuda :slight_smile:

R

Que bom :smiley:

Criado 13 de julho de 2005
Ultima resposta 3 de ago. de 2005
Respostas 11
Participantes 3