quinta-feira, 19 de junho de 2008

EJB3 + WebService no JBossAS

Venho fazer este post não com o objetivo de falar sobre como criar WebServices a partir de SessionBean na especificação do EJB3.

Venho falar sobre as experiências que eu tive e sobre o que eu apreendi. Todas as experiências que eu tive de EJB3 com WebServices foram dentro do ambiente JBossAS, então muitas das coisas que eu vou falar são expecíficas no JBossAS.

Então antes de começar a implementar vamos configurar o JBossAS. O JBossAS trabalha com componentes, no caso, ele tem um componente que trata da parte de WebService, o JBossWS. Uma vantagem nesta forma de trabalhar é que podemos alterar a forma que ele é implementado, colocando o framework que preferirmos, e atualizando a sua versão sem precisar atualizar o AS inteiro. As opções de implementações que a equipe do JBoss mantém são: Native (Axis), Metro e CXF.

Recomendo atualizar a versão do componente, por exemplo colocando a versão 2.0.4 do Native.

Falo isso pois ao atualizar a versão você terá duas vantagem:
  1. Criação de vários EndPointer (WebServices) cada um com seu ContextPath. Acabando com o problema de vários EndPointer para mesmo ContextPath.
  2. Utilização de tipos complexos com Coleções (Collection, List e Set), em versões anteriores só era permitido array de objetos.
Outra coisa interessante no JBossAS é o serviço UDDI que já vem na versão 4.0.2. Ele usa o jUDDI para isso. Para configurar entre no wiki: JUDDIConfiguration.

Recomendo a leitura do Wiki do JBossWS, mantido pelo pessoal do JBoss.

Falando agora da parte de implementação...

Prefiro não colocar aqui código fonte de exemplo, mas sim algumas praticas que eu acho interessantes.
  1. Não expor todos os métodos a não ser que eles sejam de fatos usados;
  2. Evitar passar como parâmetro objetos complexos onde serão usados um ou dois atributos destes;
  3. Evitar passar como parâmetro informações que podem ser obtidas de outras formas, por exemplo: O usuário do serviço, este pode ser obtido a partir do WebServiceContext;
  4. Verificar sempre se o usuário conectado pode ter acesso aos objetos a serem manipulados, por exemplo: em um sistema ASP onde várias empresas têm cadastros com vários usuários e vários clientes, então um usuário logado no sistema pede para ver os dados de um cliente cujo ID é passado como parâmetro. Devesse verificar se o cliente está no "banco de dados" da empresa do usuário logado;
  5. Utilize o recurso de Exception, isso ajuda a não utilizar o retorno como verificação da execução do método.
Uma dica sobre teste em WebServices recomendo a ferramenta: soapUI. Ela é bem interessante, podendo ser usada dentro do Eclipse, Netbeans entre outros.

Bom é isso, irei colocar nos próximos post outras experiências minhas.

quinta-feira, 11 de janeiro de 2007

Google Maps

Depois de somente ter criado o blog, venho escrever minha primeira postagem com conteúdo.

E venho falar do Google Maps. Acho fascinante essa ferramenta do Google, principalmente agora com integração com o Google Earth. Esta por sua vez também esta cada vez melhor.

Estou trabalhando num projeto que irá utilizar o Google Maps, então tirei um tempo para estudar como integrar o sistema com ele.

E olhando a API do Google Maps pode perceber como é simples integrar e utilizar essa poderosa ferramenta. Na propria documentação eles mostram vários exemplos de utilização de todo o potencial desta ferramenta.

Irei aqui mostra um exemplo:

1. Primeiro adicione o JavaScript deles:
<script src="http://maps.google.com/maps?file=api&v=2" type="text/javascript"></script>

2. Depois criei um Div onde ficará o Mapa:
<div id="map" style="width: 500px; height: 300px"></div>

3. Criei a seguinte função JS:
function load() {
   if (GBrowserIsCompatible()) {
      var map = new GMap2(document.getElementById("map"));
      map.setCenter(new GLatLng(37.4419, -122.1419), 13);
   }
}

4. E finalmente a chamada da função 'load()':
<body onload="load()" onunload="GUnload()" >

Com esse exemplo você será o seguinte resultado: http://www.google.com/apis/maps/documentation/simple.html

Podemos analisar no item 3, que nós informamos a Latitute (37.4419) e a Longitude (-122.1419) e ainda o Zoom (13) do Mapa.

Mas este mapa está simples e nem utiliza aquilo que pra mim é o mais fantastico do Google Maps: os controles de movimentação e as Visões[Mapa, Satélite, Híbrido]. Mas para coloca-los é muito simples, é só adicionar dois controles a sua váriavel 'map', assim:
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());

Obtendo o seguinte resultado final: http://www.google.com/apis/maps/documentation/controls.html

Muito simples, o mais dificil mesmo é achar a Latitude e a Longitude das coisas que vocês quer mostrar, então vai ai algumas dicas:
  1. O seguinte link informar a latitude e longitude do centro do mapa: http://www.google.com/apis/maps/documentation/event.html
  2. O proprio Google Maps: http://maps.google.com/maps

Não se esqueçam de gerar sua Key de utilização do Serviço: http://www.google.com/apis/maps/signup.html

Bom é isso, estou querendo agora que ele inicie na Visão Híbrido e não Mapa, quem souber, colabore. :)

sexta-feira, 15 de dezembro de 2006

Estudos

Bom, inspirado no blog de um grande profissional e um grande mestre na informática para mim: Felipe Nascimento, venho colocar aqui o que eu tenho experimentado no Mundo do Desenvolvimento.

Espero que este espaço
sirva de aprendizado tanto meu quanto dos leitores. Estarei em breve colocando o que tenho estudado no Mundo do Desenvolvimento: Java, .Net, Web, Mobile e GUI.