Aventuras no mundo Jboss-Seam

Posted on mai 25, 2009 under desenvolvimento | 1 Comentário

Escrevo pouco aqui no blog sobre desenvolvimento, mas é uma área que gosto muito. Já desenvolvi alguns projetos usando Spring Framework ainda na versão 1.x, achei muito trabalhoso, gastei muito tempo em configurações de arquivos xml. Mas agora tudo mudou. Ouvi dizer que Jboss-Seam é a bolachinha mais recheada do pacote. E que com ele se consegue uma alta produtividade em desevolvimento web.
Mas afinal o que é Jboss-Seam?

Jboss-Seam é um novo framework para desenvolvimento web, que integra as melhores tecnologias para desenvolvimento web em java. O próprio nome do framework já diz isso seam em inglês significa costura, emenda. A idéia principal é desenvolver usando POJO (Plain Old Java Objects) e fazer o mínimo de configurações em arquivos xml. Isso é alcançado através do uso de anotações e programação orientada a aspectos.

Muito bonito o blah,blah,blahh, mas qual o benefício?

O benefício é o desenvolvedor se concentrar nas funcionalidades das regras de negócio ao invés das cofigurações necessárias para a integração de frameworks.

Vamos a um exemplo. Se chama registration e pode ser encontrado no pacote de instalação do jboss-seam download.

O que ele faz?

Persiste o objeto user no banco de dados caso ele não exista, mostra mensagens de erro ou sucesso e faz redirecionamento de página.

Para fazer isso é necessário três classes:

User.java a qual representa uma entidade EJB que será persistida no banco de dados.

@Entity
@Name("user")
@Scope(SESSION)
@Table(name="users")
public class User implements Serializable
{
   private static final long serialVersionUID = 1881413500711441951L;

   @Id @NotNull @Length(min=5, max=15)
   private String username;

   @NotNull @Length(min=5, max=15)
   private String password;

   @NotNull
   private String name;

   public User(String name, String password, String username)
   {
      this.name = name;
      this.password = password;
      this.username = username;
   }

   ...
   getters and setters

RegisterAction.java – Um ejb stateless que irá interagir com o banco de dados realizando uma pesquisa, e persistindo o objeto no banco, caso ainda não exista.
Esta classe possui muitos detalhes interessantes como a anotação @In, a qual injeta um atributo do tipo user definido nas variáveis de contexto através da anotação @Name na classe User. Outro detalhe que achei interessante é a possibilidade de usar JSF EL expressões dentro de uma query ejb no caso: select username from User where username = #{user.username}

@Stateless
@Name("registerTest")
public class RegisterAction implements Register
{

   @In
   private User user;

   @PersistenceContext
   private EntityManager em;

   @Logger
   private static Log log;

   public String register()
   {
      List existing = em.createQuery("select u.username from User u where u.username=#{user.username}")
         .getResultList();

      if ( existing.size()==0 )
      {
         em.persist(user);
         log.info("Registered new user #{user.username}");
         return "/registered.xhtml";
      }
      else
      {
         FacesMessages.instance().add("User #{user.username} already exists");
         return null;
      }
   }

}

E por fim a interface Remote.java

@Local
public interface Register
{
   public String register();
}

Os códigos em java estão prontos, com essas três classes já é possível interagir com o banco de dados, ou seja, as camadas de modelo e controle estão prontas, falta criar a camada de visualização, o qual foi desenvolvida usando facelets e JSF nada específico do framework seam. Não irei coloca-lás devido ao plugin que mostra o código não conseguir mostrar corretamente.
Esses códigos foram removidos do diretório examples/registration que acompanha o jboss-seam. Coloquei eles no blog para mostrar como o framework seam facilita as coisas e cumpre perfeitamenta com a sua missão, possibilitando ao desenvolvedor se preocupar com as funcionalidades exigidas pelo cliente. Claro que o seam tem muitas outras funcionalidades que não mostrei, pois também estou aprendendo e ainda não cheguei lá.

Para quem quiser aprender, a documentação que acompanha o framewrok seam é muito boa bem explicada, esse exemplo que mostrei é mostrado em detalhes. Também estou lendo o livro Jboss Seam Projetos Práticos, o qual estou achando muito interessante, uma leitura recomendada.

Se gostou do post assine os feeds. E volte sempre.

One Response to “Aventuras no mundo Jboss-Seam”

  1. Alex disse:

    Valeu cara põe +++ai, Seam é tudo

Leave a Reply