sexta-feira, 9 de setembro de 2011

Timeout Business Service - Oracle Service Bus

Olá pessoas esse é mais um post meu na internet.

Bom, nesse post vou demonstar como configurar e tratar de forma adequada o timeout de um Business Service no Oracle Service Bus 11g. 

Indicado para desenvolvedores

Pontos importantes:
-Ao lançar o timeout o business não impede o provedor de continuar com seu processamento, em outra palavras, se o timeout do provedor for maior que do business service em serviço transacionais podem haver problemas de integridade.


Pré-requisitos:
Eclipse com OEPE: 11.1.1.4
OSB: 11.1.1.4
SoapUI 4.x ou superior
Ter algum familiaridade com OSB.

Configuração de projetos
Baixe sconfig nesse link e importe no seu eclipse.
Baixe o projeto SoapUI nesse LINK e importe.
Publique o projeto no OSB.


Ao abrirmos o projeto vamos se deparar com a estrutura abaixo:


Para configurar o timeout clique no business service e navegue até a aba HTTP Transport.



Aqui temos duas opções de configurações voltadas para timeout sendo elas:

Connection Timeout: Ele determina quanto tempo esperar até ocorrer o ack do TCP.
Read Timeout: Ele determina quanto tempo esperar o response após o request ser enviado. 

O valor dessas propriedades está em segundos.

Vamos alterar os valores para 3 segundos cada e publique o projeto no OSB.Após publicar selecione o Business dentro do SBConsole, iremos verificar que as propriedades estão configuradas corretamente, a partir do SBConsole também é posssível alterar essas propriedades.


Bom, vamos aos testes para compreender como funciona o controle de timeout no OSB.

Primeiro vamos alterar o nosso mock do SoapUI. Clique no response e vá na opção Script, adicione o um sleep de 5 segundos por exemplo, na função sleep os valores estão em milisegundos.


Logo após isso vamos testar no business, altere o endpoint do business para o endpoint do mock. E abra o test console do Business do OSB, execute o teste e veja o resultado.

Após esgotar o tempo o business lançou um erro como o descrito na figura abaixo, isso significa que o teste foi com sucesso. Mas notou que a exceção lançada não está em um formato de fault??
Esse ponto é um pouco ruim, se deixarmos em aberto sem efetuar o tratamento adequado pode gerar má interpretação de erros por parte do cliente. No exemplo que temos, há um tratamento de erros nesse tratamento estamos traduzindo esse erro para o formato esperado pelo cliente.

Clique no proxy local e vá até o error handler para conferir.
Para conferir como a mensagem será tratada e enviada para o cliente acione o proxy soap. Após a execução o erro retornado estará formado conforme o seguinte.
Feito isso já termos nosso projeto com tratamento de timeout configurado e com sua falta tratada de forma correta.

Obrigado!! Nós vemos por ai!

segunda-feira, 6 de agosto de 2007

Definindo SOA

Hoje temos um buzzwords imenso a respeito de SOA e estamos cheios de definição para todos os lados.

Gostaria aproveitar o espaço aqui pra expor a minha consideração sobre essa definição.

SOA é uma forma madura de definir e aproveitar os recursos das aplicações, o seu objetivo maior é garantir uniformidade, reusabilidade independente da tecnologia em que o recurso foi inicialmente desenvolvida” 
Davi Piala

Mas oq são esses recursos?? 

R: Basicamente serviços. dãhnnnnn

Mas....
O que é um serviço?
2.      Devem ser associados a um objeto direto
3.      Devem ser autosuficientes.
4.      Podem cooperar entre si.
5.      Produz um resultado significativo para empresa.
Os serviços podem ser classificados em 3 grandes grupos sendo:1.      Serviços de Dados
2.      Serviços Utilitários
3.      Serviços de Negócio (Tarefas)

Há mais dois pontos que devem ser respeitados na ideia de serviços a autosufiência e cooperação entre serviços.Sendo assim podemos dizer que é um recurso computacional que se apoia nos nossos 5 pontos que são:1.      Devem ser associados a um verbo no infinitivo.


Outro dia iremos discutir os tipos de serviços e suas características.