Olá!
Preciso iniciar um projeto onde vou trabalhar com clientes de web services.
Para testar o Axis resolvi utilizar o seguinte web service para teste: http://www.w3schools.com/webservices/tempconvert.asmx
No eclipse eu gerei os Stubs através do axis, até aí funcionou blz, gerando as seguintes classes:
TempConvertSoapStub
TempConvertSoapProxy
TempConvertLocator
TempConvert (Interface)
TempConvertSoap (Interface)
Agora as dúvidas:
1 - Pelo que entendo eu preciso utilizar a classe *Stub para acesso, e montei uma classe java comum, com método main. Qual o correto procedimento usar o Stub e acessar o web service?
2 - As classes geradas (stub, proxy…) precisam estar em algum servidor web? (Jboss, Glassfish, Tomcat…)?
Grato
Seguinte, consegui.
O Eclipse não consegue gerar os Stubs automaticamente, dá erro. O processo ideal é:
Para fazer a chama ao webservice eu preciso gerar as classes de Stub, para isso usei o Axis2, que pode ser baixado em www.apache.org.
- Descompacta o conteúdo do axis
- Crie um projeto Java, no Eclipse, projeto comum mesmo. Na raiz do arquivo creia pasta META-INF.
- Acesse a url do seu webservice, da seguinte maneira: http://www.w3schools.com/webservices/tempconvert.asmx?wsdl. Copie o conteúdo, salve com o nome: arquivo.wsdl e coloque dentro da pasta META-INF criada anteriormente.
- Vá no projeto java e importe todas as libs (dentro da pasta lib) do projeto Axis que vc baixou
- Agora no prompt de comando do Dos (ou terminal linux), acesse a pasta bin do Axis e digite o comando: wsdl2java.bat -uri c:\caminho_do_seu_projeto\META-INF\arquivo.wsdl.
- As classes Stubs serão crias, basta apenas copia-las para seu projeto:
O código agora para acessar o webservice e trabalhar com as classes geradas, é:
package org.temperatura.ws.vai.la;
import java.rmi.RemoteException;
import org.apache.axis2.AxisFault;
import org.temperatura.ws.cliente.TempConvertStub;
public class TemperaturaTesteWsCliente {
/**
* @param args
*/
public static void main(String[] args) {
try {
TempConvertStub tsc = new TempConvertStub("http://www.w3schools.com/webservices/tempconvert.asmx");
TempConvertStub.CelsiusToFahrenheit req = new TempConvertStub.CelsiusToFahrenheit();
req.setCelsius("20");
TempConvertStub.CelsiusToFahrenheitResponse res = tsc.celsiusToFahrenheit(req);
System.out.println("Temperatura em Fahrenheit: " + res.getCelsiusToFahrenheitResult());
} catch (AxisFault e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}
}
}
O básico do básico é isso.
abraços