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 me indique… estou procurando no google mais em geral é bem confuso…
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.
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.
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:
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
...