Mostrando postagens com marcador middleware. Mostrar todas as postagens
Mostrando postagens com marcador middleware. Mostrar todas as postagens

quinta-feira, 16 de setembro de 2010

WS-BPEL e os cabeçalhos HTTP de resposta

Nos últimos dias realizamos alguns testes com o GlassFish ESB expondo processos BPEL através de WebServices SOAP de diferentes maneiras. Tais testes foram feitos com dois diferentes padrões de troca de mensagens (MEP - Message Exchange Patterns): Request Only (Também conhecido como InOnly) e Resquest-Response.

Para quem não sabe, o GlassFish ESB possui um componente JBI chamado BPEL Service Engine que é implementação do padrão WS-BPEL. Relembre o que é o padrão JBI.

O motivo de ter feito esses testes é porque no caso dos serviços assíncronos eu estava pensando que, para o cliente saber se a requisição foi aceita pelo provedor do serviço bastaria verificar se cabeçalho HTTP de resposta era o 200 OK. Acontece que não é bem assim que a coisa funciona. Segue abaixo as constatações...

Serviços Resquest Only (São os serviços que estou considerando como sendo Assíncronos)
  • O GlassFish ESB, mais especificamente o BPEL SEsempre (eu disse SEMPRE) retorna o status HTTP/1.1 202 Accepted
    • Esse código indica que "...a requisição do cliente não pode ou não será tratada em tempo real, sendo processada mais tarde. A requisição parece válida, mas pode causar problemas quando for processada. Essa é uma resposta adequada quando uma requisição ativar uma ação assíncrona.". Fonte:http://goo.gl/QEYZ
    • Nesse caso, o provedor do serviço não envia nenhum conteúdo no corpo da mensagem de resposta, ou seja, existe uma resposta mas ela é vazia no sentido que só existe o cabeçalho HTTP de resposta. Isso acontece dessa forma mesmo se o dentro da implementação do serviço (no nosso caso dentro de um BPEL) for gerada uma exception!!! Nesse caso temos que ter muita atenção ao tratamento de erros dentro do BPEL para não deixar a requisição "se perder". Por exemplo, eu forcei a geração de uma exception dentro do processo e, mesmo usando um Throw ou fazendo uma conta de 1/0, o serviço respondeu HTTP/1.1 202 Accepted. Sendo assim o Framework de tratamento de erro que estamos construindo e o seu correto uso tornam-se fundamentais.

Serviços Request-Response
  • O GlassFish ESB... 
    • Retorna o status HTTP/1.1 200 OK quando...
      • A requisição foi processada sem problemas. Esse código indica que... bem, esse tudo mundo sabe, né?!? A diferença para o código 202 Accepted é que nesse caso o serviço enviou um conteúdo no corpo da mensagem. O consumidor do serviço poderá decidir, por exemplo, se precisa realizar alguma outra ação.
    • Retorna o status HTTP/1.1 500 Internal Server Error quando...
      • Dentro do BPEL capturarmos alguma exception, fizermos o devido tratamento e respondermos para o cliente uma mensagem do tipo Fault no corpo da mensagem. Sendo assim, o provedor do serviço também envia algum conteúdo no corpo da mensagem.
O interessante disso tudo foi constatar a fidelidade do GlassFish ESB em relação aos cabeçalhos HTTP de resposta.

Acredito que essas informações possam nos ajudar a desenvolver serviços no GlassFish ESB de forma mais segura (no sentido de saber mais sobre o comportamento da ferramenta) e também implementar consumidores de serviços ainda mais refinados.

Abraços a todos e até o próximo post!

domingo, 25 de julho de 2010

Qual o futuro do GlassFish Open ESB e da sua implementação JBI?

Quando a Oracle anunciou a compra da Sun o assunto principal foi o que aconteceria com o MySQL já que o maior fornecedor de banco de dados comercial estava comprando a empresa que mantinha a maior distribuição de banco de dados open source. Entretanto a minha atenção, e certamente de vários profissionais que trabalham com SOA e integração de sistemas, voltou-se para o GlassFish ESB. Qual seria o futuro do GlassFish ESB e da sua implementação JBI?

Mesmo antes da aprovação da compra da Sun pela Oracle pela Comissão Européia, os mais pessimistas praticamente auto decretaram o fim não só do GlassFish ESB mas um genocídio onde o servidor de aplicação GlassFish e o a IDE NetBeans também estariam com os dias contados.

Passados mais de 6 meses desde a efetivação da compra, podemos considerar como incerto o futuro do GlassFish ESB?. De fato parece que nada concreto está definido por parte da Oracle. No que diz respeito à comunidade que desenvolvia o produto e as empresas que prestavam (e ainda prestam) suporte, as novidades já começam a surgir. O código-fonte do GlassFish ESB e a versão mais atual do OpenSSO estão disponívis em http://www.forgerock.com/. Além disso, está programado para os dias 4 e 5 de outubro de 2010 um encontro na Bélgica para discutir e definir os seguintes pontos em relação ao GlassFish ESB:
  • Definir um novo modelo de governança para a comunidade
  • Definir um novo processo de manutenção e evolução do código-fonte
  • Desenhar o Roadmap para as próximas versões do Open-ESB V2.x e do Fuji (considerada a versão 3)
  • Reorganização das documentações do projeto
O evento contará também com laboratórios, apresentação de casos de sucesso e painéis de discussão e utilização do GlassFish ESB. Temporariamente o site do evento está no endereço http://87.106.30.213:8081/ezpublish/index.php/eng mas em breve estará em definitivo no endereço http://openesb-community.org/.

Voltando ao assunto Oracle... na minha opinião o que acontecerá com o GlassFish ESB é que a Oracle irá portar o padrão JBI para o Oracle Service Bus permitindo que componentes JBI possam ser compostos na implementação SCA (Service Component Architecture). Essa "simples" ação ao menos preservaria o investimento daqueles que possuem utilizam o GlassFish ESB e desejarem migrar o stack Oracle.

Vamos aguardar cenas dos próximos capítulos esperando que boas notícias do passado em relação ao GlassFish ESB possam novamente ser manchete.

[]'s

quinta-feira, 4 de junho de 2009

Curso Plataforma SOA Open Source

Quer fazer um curso gratuíto sobre plataforma SOA? A WSO2 está oferecendo um curso com oito módulos sobre suas ferramentas Open Source.

WSO2 é um conjunto de produtos SOA que além de open source são gratuítos. Há algum tempo venho estudando principalmente o Barramento de Serviços (ESB) denominado WSO2 ESB e em breve teremos alguns posts sobre ele aqui.

A plataforma WSO2 é composta dos seguintes produtos:
  • Enterprise Service Bus: Uma implementação de um Barramento de Serviços (middleware);
  • Registry: Uma ferramenta de governança com a função de armazenar, catalogar, indexar e gerenciar metadados de serviços;
  • Identity Solution: Uma ferramenta de gerenciamento de identidade com funcionalidades de single sign-on e que pode ser integrada com o CardSpace e OpenID;
  • Data Services: Uma ferramenta que permite expor como WebServices os dados existentes em banco de dados, arquivos texto (Ex: CSV), Servidores LDAP etc. Isso é feito implementando ainda alguns padrões WS-* ou através de REST;
  • Business Process Server: É um motor (engine) BPM que executa processos através do padrão WS-BPEL (Antigo BPEL4WS). Essa ferramenta não inclui um diagramador de processos, ela é apenas um orquestrador de WebServices;
  • Web Services Application Server: Um servidor web composto de uma série projetos do Apache onde são hospedados webservices implementados com o Axis2.
  • Web Sevices Framework: Um framewor para desenvolvimento de Web Services e seus clientes para as linguagens C, PHP, Perl, Python, Ruby, Spring, C++ e Jython;
  • Mashup Server: Uma ferramenta que permite compor e personalizar Web Services, Feeds, páginas web etc.
Nada mal, hein?!! Mas voltando ao papo do curso gratuíto, trata-se de uma ótima oprtunidade para entender melhor os conceitos por trás de SOA e conhecer essas ferramentas. Para isso, basta se cadastrar clicando na imagem abaixo.

Os cursos acontecem sempre às sextas-feira das 13:00 às 16:30 a partir de 18 de junho de 2009.