Erro ao criar teste para WebService

Boa tarde pessoal tudo bem?

Eu estou começando a trabalhar com WebService e estou ainda um pouco perdida… Eu tenho que criar um Client de teste para o meu WebService porém estou com o seguinte erro

Exception in thread "main" java.lang.NoClassDefFoundError: com.ibm.ws.webservices.multiprotocol.utils.WSDLFactoryImpl
	at java.lang.J9VMInternals.verifyImpl(Native Method)
	at java.lang.J9VMInternals.verify(J9VMInternals.java:72)
	at java.lang.J9VMInternals.initialize(J9VMInternals.java:134)
	at br.com.alelo.florida.ejb.fidelity.servico.client.FidelityTransacaoTransferenciaP2PWS.main(FidelityTransacaoTransferenciaP2PWS.java:18)
Caused by: java.lang.ClassNotFoundException: com.ibm.ws.webservices.multiprotocol.utils.WSDLFactoryImpl
	at java.net.URLClassLoader.findClass(URLClassLoader.java:419)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:643)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:345)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:609)
	... 4 more

A minha classe de teste está da seguinte maneira

public static void main(String[] args) {
		try {
			String urlWS = "http://localhost:9080/simulador/Transf/Transf.wsdl";
			Object[] params = { new String("1223455"), new String("011"),
					new String("992694476"), new String(""), new String("122"),
					new String("011"), new String("992694476"), new String(""),
					new String("36164238803"), new String("188"),
					new String("claro"), new String(""), new String("") };

			Service service = new Service();
			Call call = (Call) service.createCall();
			call.setTargetEndpointAddress(urlWS);
			call.setOperationName("consultarInformacoes");
			Integer ret = (Integer) call.invoke(params);
			System.out.println("Resultado: " + ret);
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}

O servidor de aplicação que estou utilizando é Websphere, porém estou começando a conhecer ele agora. Será que alguém poderia me dar uma ajuda de onde estou errando?

Bjs

Favor desconsiderar…

natanaelv

rsrs… Tuuuuuuuuuudo bem rs!

Oi,

Percebí que você está tentando criar um cliente dinâmico. É a intenção, ou foi acidental? Se foi acidental, já tentou usar wsimport? Se não foi, já tentou usar o Dispatcher, do JAX-WS?

EDIT: Além disso, me parece que tem alguma biblioteca faltando no próprio websphere. Tente usar o findjar.com (ou similares) pra descobrir em que JAR deveria estar essa classe: com.ibm.ws.webservices.multiprotocol.utils.WSDLFactoryImpl

[]'s

Se vc quer testar WS use a ferramenta “SoapUI” é mais facil do que ficar criando clientes.

Oi Alexandre Saudate,

Em primeiro lugar, obrigada por responder…

Bom, como eu disse nessa parte eu sou muito novata… Já tenho 3 anos em Java, mas o WebService que eu mexia era REST, porém como troquei de emprego, aqui eles usam SOAP e eu não manjo nada e foi me dada a tarefa de criar os Clients para os WebServices. Eu procurei alguns materiais mas que não me ajudaram muito, o que chegou mais próximo foi esse então… Pelo que vi não fiz da melhor forma possível… Você poderia então me explicar a diferença do dinâmico e o WSImport. Diante dessa minha explicação, o que seria o melhor a ser feito?

Obrigada!

pbnf,

Eu até vi o “SoapUI”, mas eu preciso ter o Client no meu código mesmo "/

[quote=dsystem]Oi Alexandre Saudate,

Em primeiro lugar, obrigada por responder…

Bom, como eu disse nessa parte eu sou muito novata… Já tenho 3 anos em Java, mas o WebService que eu mexia era REST, porém como troquei de emprego, aqui eles usam SOAP e eu não manjo nada e foi me dada a tarefa de criar os Clients para os WebServices. Eu procurei alguns materiais mas que não me ajudaram muito, o que chegou mais próximo foi esse então… Pelo que vi não fiz da melhor forma possível… Você poderia então me explicar a diferença do dinâmico e o WSImport. Diante dessa minha explicação, o que seria o melhor a ser feito?

Obrigada![/quote]

Então, o wsimport é um utilitário que vem na JVM Oracle (tenho quase certeza que você está usando a VM da IBM, e não sei dizer se essa VM tem ou não esse utilitário). Ele faz a leitura do WSDL e cria algumas interfaces para usar como proxy na comunicação com o serviço. Ou seja, na prática, você usa como se estivesse usando um método normal em uma classe qualquer.

Já um serviço dinâmico é aquele em que você não tem como garantir o formato do XML. Mesmo tendo schemas, algumas partes podem variar. É o caso de serviços definidos com schemas XML que contém anyType, por exemplo. A imensa maioria dos serviços por aí não usa esse tipo de coisa, mas pelo código que você postou, eu fiquei em dúvida.

Para usar o wsimport, você só precisa pegar ele na JDK (fica na mesma pasta do executável Java e outros) e usar

wsimport -s <pasta onde você quer colocar os arquivos gerados> seu.wsdl

E pode arrancar todas essas libs do Axis daí, que pra usar JAX-WS você não precisa de nada disso :wink:

[]'s

Alexandre,

Eu acho que meu entendimento ainda está bem confuso … rs… Talvez esteja fazendo as coisas e eu nem saiba o que ao certo estou fazendo… Eu não sei se é a mesma coisa, mas eu gerei um WebService e ele gerou várias classes pra mim… Seria isso que o wsimport faz? Eu encontrei alguns exemplos na internet onde fazia o teste com um main normal, isso é possível? Outra coisa, acho que já deu pra perceber que estou bem perdida na questão de WebService né? Você tem algum material pra indicar onde eu possa entender bem a estrutura pra que eu não fique nessa confusão? Desculpa estar tomando o seu tempo, mas é que meio que fui jogada no meio de um tiroteio rs…

Desde já agradeço por toda sua atenção.