Liferay e seus Web Services 7

Posted by Alê! Wed, 28 Jul 2010 22:19:00 GMT

<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”> Liferay Web Services O post de hoje será um pouco mais técnico que de costume.


Quem acompanha de perto a rotina da SEA, seja pelo Twitter, pelo site ou nos corredores da vida, já sabe o quão envolvidos estamos com o Liferay Portal Server. Tornamo-nos sua primeira parceria oficial no Brasil e comemoramos agora o título de primeira parceria nível Gold da América Latina.




Neste tempo, vários projetos foram desenvolvidos e o aprendizado foi enorme,  No intuito de divulgar a tecnologia, disponibilizamos alguns slidecasts básicos, fizemos alguns posts, mas ainda ficamos na dívida de uma continuação mais avançada, que eu espero reverter a partir de agora.

Arquitetura Liferay

Internamente, o Liferay nada mais é do que um monte de entidades de negócio que compartilham serviços entre si para a composição do que chamamos de portal. Cada portlet presente constitui-se de algum conjunto de serviços que podem ser acessados por outros portlets do portal ou mesmo por outros aplicativos externos ao servidor.


Esses serviços, geralmente criados a partir de uma ferramenta interna da Liferay chamada de Service Builder,  compartilham de uma arquitetura padrão, que até podemos tratar em outro post. Isso quer dizer que, se você aprender a trabalhar com uma entidade de negócio do Liferay, você automaticamente terá aprendido a lógica por trás de todas as demais entidades. Em síntese, a arquitetura escolhida define uma estratégia de classes utilitárias, service locators e a possibilidade de exposição local e remota da interface de serviços em criação.


Dito isso, este post trata de como podemos utilizar a camada de Web Services do Liferay para acesso remoto à sua interface pública de serviços.

Liferay Web Services

Todos os testes apresentados a seguir foram realizados numa instalação virgem do liferay-portal-5.2-ee-sp4 e num Eclipse Galileo com todo aquele suporte a JEE.


Primeiro de tudo, vamos ver a lista de serviços disponíveis para acesso remoto. Para isso, inicie o Liferay e acesse  http://localhost:8080/tunnel-web/axis




Perceba que cada Web Service possui, além de um link para seu WSDL, um conjunto de operações que podem ser invocadas.


O próximo passo é a criação das classes que farão o acesso  a esses Web Services. Você pode fazê-las na mão ou utilizar-se de alguma ferramenta de apoio. Como não sou mané, vou gerar todo este código utilizando um recurso do próprio Eclipse.


Com o Eclipse abert, clique em File > New > Other > Web Services > Web Service Client.




Em seguida, escolha o Web Service a ser acessado, copie o link de seu WSDL para o clipboard (Ctrl + C) e informe-o na primeira tela de criação do Web Service Client.





Clique em Finish e aguarde a geração do código de acesso ao Web Service escolhido.




Analise o código gerado e veja o tamanho do galho que a ferramenta nos quebrou.


 

Por fim, utilizando as classes geradas, implemente o código para acesso ao serviço remoto (clique na imagem para ampliar).



Repare bem nos três passos executados (criação do service locator, obtenção de referência ao serviço remoto e invocação do serviço), pois eles serão repetidos em praticamente todos os Web Services disponíveis no portal, conforme listagem da primeira listagem feita no início do tutorial.

Pode até ser trabalhoso, mas é bem mais simples do que pensou, não? Como exercício, tente cadastrar, via Web Service, um novo artigo (JournalArticle) no portal.

[]s