Académique Documents
Professionnel Documents
Culture Documents
Protocolo SOAP
Resumo
Neste trabalho ser apresentado um modelo de implementao para tratamento de erros em Web
Services utilizando o Protocolo Simples de Acesso a Objetos, Simple Object Access Protocol SOAP,
formalizando conceitos e boas prticas, visando a unificao no desenvolvimento de solues que
utilizem este protocolo em decorrncia da necessidade de interoperabilidade com sistemas
desenvolvidos para o governo federal. A grande flexibilidade do SOAP permite implementaes que
atendam a grande maioria das demandas de integrao entre sistemas mas em contra partida
dificulta a uniformizao e implementao das solues devido a generalizao das especificaes
do protocolo.
Tratamento de Erros
O amadurecimento dos padres de interoperabilidade do Governo Federal apresenta novas
demandas relativas a uma especificao em uma granularidade menor para atendimento das
demandas relativas a implementao de produtos de software. O uso de web services tem se
demonstrado como uma ferramenta muito adequada as implementaes das aplicaes ligadas as
atividades da gesto pblica, o que vem demandando novas necessidades de especificao mais
prximas da realidade das atividades de implementao. Este artigo apresenta critrios e
nomenclaturas padronizadas para oferecer informaes para proporcionar maior compreenso de
erros ocorridos nas trocas de informaes em Web Services que utilizam o protocolo SOAP.
Fornecer adequadamente as informaes quando ocorre um erro na troca de mensagens entre
aplicaes facilita no somente o desenvolvimento da aplicao mas proporciona facilidade na
identificao de falhas durante todo ciclo de vida do sistema. Informaes claras e fornecidas
adequadamente para cada tipo de erro que ocorra em uma transao pode ser determinante em
momentos crticos como falha na infraestrutura ou alteraes nas regras de negcios. Passar ao
usurio do sistema, humano ou aplicao, informaes adequadas permite o encaminhamento
adequado para o ator que pode solucionar a demanda quer seja ela uma falha em validao de erros
com a camada de visualizao de um sistema quer seja a indisposio de algum outro servio que
compreende a arquitetura da soluo de software.
Sempre que ocorre alguma falha no processamento das informaes no servidor gerada uma
resposta por meio de um tipo especial de marcador enviado no corpo do documento SOAP definido
no item 5.4 SOAP Fault da recomendao SOAP Version 1.2. O tratamento adequado das
informaes contidas nestes marcadores relevante para que o desenvolvedor que implementa o
consumidor do servio agregue qualidade ao produto que esta desenvolvendo. Outro fator relevante
que a clareza nos motivos que causaram a excesso evite a necessidade de solicitao de
informaes adicionais aos rgos responsveis pela manuteno do servio.
As definies do padres definidos para os tipos de falhas, na verso 1.2 da especificao do SOAP
esto definidos no namespace http://www.w3.org/2001/06/soap-envelope. Estas definies
fornecem um conjunto de informaes suficientes para o atendimento das necessidades de
compreenso de falhas em um sistema. No entanto para o atendimento das demandas de integrao
necessrias aos sistemas mantidos pelo Governo Federal Brasileiro as recomendaes apresentadas
no so suficientes para a produo dos sistemas com a qualidade exigida nos produtos. A proposta
de exteno do protocolo de falha apresentando a incluso de marcadores especficos proporciona
maior capacidade de compreender falhas ocorridas em uma transao de consumo de dados.
A extenso proposta neste documento prev incluso de marcadores no campo details do protocolo
Fault e padronizao dos valores enviados nos marcadores faultcode e faultsring das
recomendaes W3C para promover maior capacidade de interoperabilidade aos sistemas. Neste
modelo proposto o marcador details passa a ser obrigatrio e deve conter obrigatoriamente o
marcador application, contendo o cdigo da aplicao que provocou o erro, e opcionalmente o
marcador extradetail.
<s:Envelope xmlns:s="...">
<s:Body>
<s:Fault>
<faultcode>Client.Authentication</faultcode>
<faultstring>
Invalid credentials
</faultstring>
<details>
<application>
<name>Sigla da aplicacao</name>
<organization>Orgao responsavel pela manutencao do sistema<organization>
</application>
</details>
</s:Fault>
</s:Body>
</s:Envelope>
A padronizao das mensagens de erro foram divididas em trs categorias tratveis pela camada de
aplicao definida no padro OSI e so as seguintes:
Erros de Tipo
Erros de Negcio
Erros de Processamento
Para quaisquer categoria de erros o marcador faultcode dever ser preenchido com um identificador
nico do erro no sistema construdo utilizando o padro @@:NNNN onde @@ contm a
especificao do tipo de erro conforme a lista tipos de erros:
EN: erro no processamento de regras de negcio como por exemplo valores fora de intervalo
pr definido.
ET: erro no processamento de tipos onde o mtodo no pode ser executado pois os
parmetros no correspondem a assinatura do mtodo.
EP: erro de implementao no previsto como ponteiro que aponta para endereo invlido
ou falha no acesso a recursos.
Erros de Tipo
Apesar dos servidores de aplicao Web services implementarem tratamento de erros de tipo em sua
implementao, no existe uma padronizao de cdigos e mensagens em caso de falhas. A
promoo da interoperabilidade tem uma forte relao com a padronizao de troca de mensagens,
apresentando a necessidade de implementar uma camada de tratamento de validao na
transformao de tipos que interaja com o servidor fazendo a traduo das falhas conforme o padro
apresentado a seguir.
Exemplo de mensagens produzidas por erros de converso de tipos:
ET:001 No foi possvel converter o valor <dados>em<tipo>
ET:002 O valor <dados> tem tamanho maior que definido para o campo <tipo>[tamanho]
ET:003 O campo no existe.
ET:004 No existe assinatura de mtodo que em conformidade com os parmetros
informados.
[ET:005 ET:999] Livre para ser utilizada pela aplicao
<s:Envelope xmlns:s=http://www.w3.org/2001/06/soap-envelope
xmlns:br=http://www.w3.org/2001/06/soap-envelope>
<s:Body>
<s:Fault xmlns:br="urn:ePingFaults">
<faultcode>ET:001</faultcode>
<faultstring>Nao foi possivel converter o valor Teste' em Long!
</faultstring>
<details>
<application>SIGEPE<application>
</details>
</s:Fault>
</s:Body>
</s:Envelope>
Erros de Processamento
Esta categoria de erros est relacionada a situaes imprevistas como indisponibilidade de um
recurso externo a aplicao tais como servidor de banco de dados, barramento, mainframe, etc ou
falhas relativas a limitaes originrias por permisso de acesso. A mensagem a ser repassada ao
usurio deve ser explicativa mas no apresentar detalhes que prejudiquem a segurana do sistema,
como falhas conhecidas o motivo da limitao do acesso.
EP:001 Problemas ao acessar o recurso , tente mais tarde.
EP:002 Usurio ou senha invlido.
EP:003 Permisso de acesso insuficiente para o servio.
[EP:004 EP999] Permisso de acesso insuficiente para o servio.