Professional Documents
Culture Documents
Adilson Vahldick
Avaliao da Disciplina
Implementao de um provedor de WS Implementao de uma aplicao usuria desses WS mais outra fornecida pelo professor Trabalho em duplas Data de entrega: 21/05/2007
Adilson Vahldick
Adilson Vahldick
Vantagens
Interoperabilidade em ambientes heterogneos Servios de negcio atravs da Web Integrao com os sistemas existentes Suportam mais tipos de clientes
<resposta>130</resposta>
Adilson Vahldick
Adilson Vahldick
Volte ao navegador e digite IP retornado Clique em [Send] Experimente com outros sites!!! Mantenha essa pgina aberta
Adilson Vahldick
SOAP
Simple Object Access Protocol Protocolo que padroniza como devem ser as mensagens trocadas entre cliente e provedor Mensagens como XML
SOAP
Formato desses documentos (mensagens) request http://xpto.br/ <incluirCliente> <nome>Adilson</nome> </incluirCliente>
Aplicao
<resposta>130</resposta> response
Adilson Vahldick
Adilson Vahldick
SOAP
Composio da mensagem
SOAP
Formato da mensagem <soap:Envelope> <soap:Header> ........ </soap:Header> <soap:Body> ........ </soap:Body> </soap:Envelope>
Adilson Vahldick
Fonte: www.w3.org
Adilson Vahldick
SOAP
Header:
Opcional Informaes contextuais, no especficas s chamadas que constam na tag Body So usados por pr-processadores de SOAP Transao, autenticao, ...
Header
<soap:Header> <m:transaction xmlns:m="soap-transaction" soap:mustUnderstand="true"> <transactionID>1234</transactionID> </m:transaction> </soap:Header>
Adilson Vahldick
Adilson Vahldick
Header
mustUnderstand: mesmo que o servidor entender o corpo da mensagem, se ele no entender o cabealho ento deve rejeitar a mensagem inteira Body:
SOAP
Obrigatrio Contedo da mensagem Dois estilos:
Document: objeto (pedido, registro de cliente) RPC: chamada rotina (procedures ou mtodos) com seus parmetros
Adilson Vahldick
Adilson Vahldick
Body - DOC
Request
<soap:Envelope> <soap:Body> <tns:Order> <tns:orderNumber>1000</tns:orderNumber> <tns:orderDate>2007/05/05</tns:orderDate> </tns:Order> </soap:Body> </soap:Envelope>
Body - RPC
Request
<soap:Envelope> <soap:Body> <tns:IP2Pais> <ip>200.135.24.30</ip> </tns:IP2Pais> </soap:Body> </soap:Envelope>
Adilson Vahldick
Adilson Vahldick
SOAP
SOAP
HTTP Header Filtro do servidor HTTP SOAPAction = Host = Content-Type = text/xml Content-Length =
XML Message
Adilson Vahldick
Adilson Vahldick
Explorando o SOAP
Retornem a pgina do WS que estavamos testando Clique em [Populate] e digite novamente algum IP Clique em [Edit/Preview] Observe as partes da mensagem Clique em [Send]
Explorando o SOAP
Na pgina contendo o resultado, selecione XML tanto na rea de Request quanto de Response
Adilson Vahldick
Adilson Vahldick
NetTool
http://nettool.sourceforge.net Ferramenta que podemos usar para testar os web services
1. 2. 3. 4.
NetTool
Inicie o NetTool
Mude a forma de envio de GET para POST URL=http://www.oorsprong.org/websamples.countryinfo/CountryI nfoService.wso Adicione uma linha no cabealho (clicando Add Header) O nome do campo Content-type e o valor text/xml.
Adilson Vahldick
Adilson Vahldick
NetTool
5. Na rea de edio abaixo do boto [Add Header] digite:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://www.oorsprong.org/websamples.countryinfo"> <soap:Body> <tns:ListOfContinentsByName /> </soap:Body> </soap:Envelope>
1
4 3
Adilson Vahldick
Adilson Vahldick
NetTool Exerccio
Faa funcionar o exemplo do reconhecedor de IPs que exploramos no xmethods Experimente outros servios
Country Information WebService Bible Verses (Genesis 1:1)
SOAP Fault
<soap:Body> <soap:Fault> <faultcode></faultcode> <faultstring> </faultstring> <faultactor> </faultactor> <detail> </detail> </soap:Fault> </soap:Body>
Adilson Vahldick
Adilson Vahldick
SOAP Fault
faultcode: cdigo de erro faultstring: mensagem de erro legvel faultactor: URL de quem gerou o erro detail: por exemplo, a pilha de chamadas que gerou o erro
SOAP Fault
</SOAP-ENV:Envelope> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>Client</faultcode> <faultactor>ERRO</faultactor> <faultstring>**no foram devolvidos registos**</faultstring> <detail></detail> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Adilson Vahldick
Adilson Vahldick
WSDL
Web Service Description Language Documento XML que descreve o WS Ferramentas automatizam a gerao de cdigo ou integrao entre WS utilizando a WSDL <definitions>
WSDL
<types> ...</types> <message> ... </message> <portType> ... </portType> <binding> ... </binding> <service> ... </service>
</definitions>
Adilson Vahldick
Adilson Vahldick
WSDL
Tipos de dados usados como parmetros ou retorno
<types> <xsd:complexType name="paisdados"> <xsd:all> <xsd:element name="isocode" type="xsd:string"/> <xsd:element name="pais" type="xsd:string"/> <xsd:element name="regiao" type="xsd:string"/> <xsd:element name="capital" type="xsd:string"/> <xsd:element name="moeda" type="xsd:string"/> </xsd:all> </xsd:complexType> </types>
Adilson Vahldick
WSDL
Mensagens que sero trocadas entre cliente e provedor
<message name="IP2PaisRequest"> <part name="ip" type="xsd:string" /> </message> <message name="IP2PaisResponse"> <part name="retorna" type="tns:paisdados" /> </message>
Adilson Vahldick
WSDL
Mapeamento de uma operao (funo) com as mensagens
<portType name="ConversaodeIPparaPaisPortType"> <operation name="IP2Pais"> <input message="tns:IP2PaisRequest"/> <output message="tns:IP2PaisResponse"/> </operation> </portType>
WSDL
Como a operao foi implementada
<binding name="ConversaodeIPparaPaisBinding" type="tns:ConversaodeIPparaPaisPortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="IP2Pais"> <soap:operation soapAction="http://webservices.tekever.eu/ip2pais#IP2Pais" style="rpc"/> <input> <soap:body use="encoded" namespace="http://webservices.tekever.eu/ip2pais" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </input> .....
Adilson Vahldick
Adilson Vahldick
WSDL
Como a operao foi implementada (cont.)
<binding> <operation name="IP2Pais"> <output> <soap:body use="encoded namespace="http://webservices.tekever.eu/ip2pais" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </output> </operation> </binding>
Adilson Vahldick
WSDL
Onde o WS est hospedado
<service name="ConversaodeIPparaPais"> <port name="ConversaodeIPparaPaisPort" binding="tns:ConversaodeIPparaPaisBinding"> <soap:address location="http://webservices.tekever.eu/ip2pais/index.php"/> </port> </service>
Adilson Vahldick
WSDL
ConversaodeIPparaPaisPortType IP2Pais input IP2PaisRequest output IP2PaisResponse
implementa ConversaodeIPparaPais
ConversaodeIPparaPaisPort
ConversaodeIPparaPaisPort
Adilson Vahldick
Adilson Vahldick
WSDL no xmethods
Retornando pgina do xmethods (do IP por pas) Clique em [View] Na caixa de seleo, troque de [Pseucocode] para [Raw] e depois [XML]
Exerccios WSDL
Identifique nos servios de busca de versculos da Bblia e informaes de pases
binding: o nome, o protocolo (p.e. HTTP) e o tipo de troca de mensagem (RPC ou DOC) service: o nome e o nome das ports
Adilson Vahldick
Adilson Vahldick
Referncias
www.w3.org/2002/ws Chappel, D.A.; Jewell, T. Java Web Services. McGovern, J. Java Web Services Architecture. Snell, J. Programming Web Services with SOAP.
Adilson Vahldick