Acesso webservice Axis2

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.

  1. Descompacta o conteúdo do axis
  2. Crie um projeto Java, no Eclipse, projeto comum mesmo. Na raiz do arquivo creia pasta META-INF.
  3. 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.
  4. Vá no projeto java e importe todas as libs (dentro da pasta lib) do projeto Axis que vc baixou
  5. 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.
  6. 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