Dúvida sobre Web Service

6 respostas
camillabrasilia

Estou tentando consumir um web service, mas está dando erro. Estou utilizando o axis.

O código do cliente é o seguinte:

import org.apache.axis.client.Call;
import org.apache.axis.client.Service; 

public class TesteWebService 
{
	public static void main(String[] args) 
	{
		try
		{
			String urlWS = "http://localhost:8080/axis/Calculator.jws";
			Object[] params = {new Integer(1), new Integer(1)};
			
			Service service = new Service();
			Call call = (Call) service.createCall();
			call.setTargetEndpointAddress(urlWS);
			call.setOperationName("somar");
			Integer ret = (Integer) call.invoke(params);
			System.out.println("Resultado: " + ret);
		}
		catch(Exception ex)
		{
			ex.printStackTrace();
		} 
	}
}

O erro está acontecendo a partir do Service service = new Service();

O erro que dá no eclipse é o seguinte:
[color=“red”]This compilation unit inderecltly references the missing type javax.xml.rpc.Service (typically some required class file is referencing a type outside the classpath)[/color]

Agradece a todos que poderem me ajudar

6 Respostas

danieldestro

http://www.geocities.com/danieldestro/java/

Lá tem um PDF da palestra que eu dei.

Use o Axis para gerar o cliente pra vc, é mais fácil.

camillabrasilia

O problema que está acontecendo no meu webservice (cliente) é o seguinte:

Quando eu instancio o “Service service = new Service();” ele dá erro, pois está classe utiliza o pacote "javax.xml.rpc.Service ", mas a classe não está encontrando este pacote.

Dúvida:
Este pacote faz parte da api da sun, como eu já setei o chasspath. Esse pacote já era para ser reconhecido?

Caso esse pacote eu tenha que baixar, qual o site que eu devo baixar este pacote?

Agradece a todos e ao danieldestro.

camillabrasilia

Já descobri o erro.

O fato é que eu tenho tenho setado no classpath o j2sdk1.4.0 (J2SE) e o pacote javax.xml.rpc.Service faz parte do J2EE e eu não tinha setado no classpath.

danieldestro

Ainda assim te aconselho a usar o Axis para criar a classe de acesso.

T

Ou seja, não é aconselhável usar “Dynamic Invocation Interface” ou DII (que é o que a Camilla está tentando usar.)
Naquelas palestras a que assisti no JavaOne eles dizem que DII é apenas para o uso de ferramentas de teste de Web Services, não para seres humanos. Use o gerador de código do Axis, que é bem melhor e ajuda depois quando você for usar o Eclipse (classes geradas têm code completion, o que não existe quando se usa DII).

danieldestro

Além de ser bem mais fácil fazer assim:

UmWebService ws = new UmWebService(); Amigo a[] = ws.buscarAmigos();

Do que fazer:

Service s = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(urlWS); call.setOperationName("buscarAmigos"); Amigo a[] = (Amigo[]) call.invoke(params);

Criado 24 de setembro de 2004
Ultima resposta 27 de set. de 2004
Respostas 6
Participantes 3