Web Service - SOAP

Ola pessoal,

eu tenho uma nova tarefa tenho que é integrar um sistema aqui com um outro sistema interno do cliente… utilizando Web Service, gostaria de alguns conselhos… por exemplo o cliente mandou os .xsd files então eu posso criar os arquivos .java para mapeamento o xml/java né ?

e como eu trato SOAP ? e o corpo da mensagem ?

eu tenho alguns arquivos de exemplos com conteudo assim :

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<soap:Header>
		<HTNGHeader xmlns="http://htng.org/1.1/Header/">
...
		</HTNGHeader>
	</soap:Header>
	<soap:Body>
... dados no formato xml
</soap:Body>

eu sei eu poderia usar DOM para colocar o conteudo em memoria percorre ele… mais acho que existem maneiras mais bonitas de fazer isso né ?

por favor se alguém souber de algum tutorial/documentação/conselho :wink: me indique… estou procurando no google mais em geral é bem confuso…

valeu…

depois do monte de resposta :wink: um ótimo tutorial sobre o assunto : http://www.oreilly.com/catalog/javawsian/chapter/ch03.pdf

Ola Ualex

A ideia do SOAP/WSDL é justamente ser super burocratico para facilitar a vida de ferramentas geradoras de codigo (ou dinamicas). Voce nao deveria ter de ler o SOAP por DOM/SAX: use ferramentas para isso. O Java 6 ja ate vem com o wsimport para gerar stubs para voce: voce vai trabalhar diretamente com objetos java, em vez de XML.

Manipular o XML do webservice na unha é um excesso de trabalho que é facilmente evitado com essas ferramentas. Se nao usar o Java 6, voce pode usar o apache Axis ou XFire. Ou ate mesmo baixar a RI do JAX-WS.

abracos

[quote=Paulo Silveira]Ola Ualex

A ideia do SOAP/WSDL é justamente ser super burocratico para facilitar a vida de ferramentas geradoras de codigo (ou dinamicas). Voce nao deveria ter de ler o SOAP por DOM/SAX: use ferramentas para isso. O Java 6 ja ate vem com o wsimport para gerar stubs para voce: voce vai trabalhar diretamente com objetos java, em vez de XML.

Manipular o XML do webservice na unha é um excesso de trabalho que é facilmente evitado com essas ferramentas. Se nao usar o Java 6, voce pode usar o apache Axis ou XFire. Ou ate mesmo baixar a RI do JAX-WS.

abracos
[/quote]

isso mesmo. neste tutorial não trata disso mais eu tenho varios arquivos XSD então eu pretendo gerar o binding XML/java e java/XML com XMLBEANS até escrevi um pequeno tutorial (http://www.alexflorentino.com/?page_id=44).

ainda não sei exatamente como vou trabalhar com isso, vou olhar as dicas.

valeu.

(A fim de deicar o post mais útil)

Opa…

Pessoal… to lendo o tutorial da SUN sobre SAAJ API e SOAP no link

http://java.sun.com/javaee/5/docs/tutorial/doc/bnbhg.html

E esta sendo muito útil para desenvolver um exemplo com acesso ao WebService.

Fui !

Web Service passo a passo sem mistérios:

http://blogs.mentaframework.org/posts/list/14404.page

E seja feliz.

SOAP ??? Graças ao pai a coisa evoluiu e agora vc não precisa mais sujar a mão com o sabão.

Galera… preciso de um help com um exception

javax.xml.soap.SOAPException: Unable to create SAAJ meta-factoryProvider com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl not found at javax.xml.soap.SAAJMetaFactory.getInstance(Unknown Source) at javax.xml.soap.MessageFactory.newInstance(Unknown Source) at integrar.net.SOAHelloWorld.main(SOAHelloWorld.java:31)

Da esse erro logo na primeira linha do metodo main:

... MessageFactory factory = MessageFactory.newInstance(SOAPConstants.DYNAMIC_SOAP_PROTOCOL); ...

Procurando na net me parece que falta lagum jar no meu projeto… o qual acho que achei em http://www.java2s.com/Code/Jar/wsit/Downloadsaajapijar.htm

Adicionei o jar ao projeto mas continuo com o mesmo erro… =/

Alguma ideia ?

[quote=saoj]
Web Service passo a passo sem mistérios:

http://blogs.mentaframework.org/posts/list/14404.page

E seja feliz.

SOAP ??? Graças ao pai a coisa evoluiu e agora vc não precisa mais sujar a mão com o sabão.[/quote]

Bacana o tutorial… vou ler mais e ver se rola de usar… pq no meu caso meu WebService eh em .NET…

Acredito que precise apenas mudar algumas coisas…

Vlw a dica…

Bom… sobre o meu exemplo… resolvi o erro que postei acima… era so importar o jar correto http://www.java2s.com/Code/Jar/Web-Services-AXIS2/Downloadaxis2saajapi13jar.htm

Mas agora me surgiu outro erro… to importanto os jar para ver se resolve…

Agora to com o seguinte problema…

log4j:WARN No appenders could be found for logger (org.apache.axis2.util.Loader). log4j:WARN Please initialize the log4j system properly.

Segue o trecho de codigo:

[code]public static void main(String[] args) {

	try{
		// 1 Criar a Mensagem com o protocolo desejado
		MessageFactory factory = MessageFactory.newInstance();
		SOAPMessage message = factory.createMessage();

		// 2 obter as partes do envelope
		SOAPHeader header = message.getSOAPHeader();
		SOAPBody body = message.getSOAPBody();
		
		header.detachNode(); // elima o cabecalho, caso nao va utiliza-lo
		
		// 3 montar o corpo com os elementos desejados (metodos do WS a serem chamados)
		//HelloWorld no meu exemplo
		QName bodyName = new QName("http://MeuWebService.NET/Metodos.asmx", "HelloWorld", "m");
		SOAPBodyElement bodyElement = body.addBodyElement(bodyName);
		
		SOAPElement symbol = bodyElement.addChildElement(new QName("symbol"));
		symbol.addTextNode("HW");
		
		// 4 Montar a conexão com o WS
		SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
		SOAPConnection connection = soapConnectionFactory.createConnection();
		URL url = new URL("http://MeuWebService.NET/Metodos.asmx");

		SOAPMessage response = connection.call(message, url); // TO DANDO O ERRO AKI
		...

[/code]

Tô pesquisando a solução… =/

Uma opção que gostei muito foi o JBossWS;

http://labs.jboss.com/jbossws/

Espero que ajude.