O mais recente release do OpenEJB, uma implementação leve do framework EJB 3.0, suporta singletons EJB 3.1, Injeção de Construtor e integração com o framework Spring. O time de desenvolvimento do Apache OpenEJB anunciou na semana passada o release da versão 3.1 do OpenEJB. A última versão possui suporte para algumas das características EJB 3.1 que pode ser usado não apenas como um servidor autônomo, mas também embutido no Tomcat, JUnit, Eclipse, Maven, Ant, ou qualquer outra IDE ou aplicação. A especificação EJB 3.1 será liberada como parte do Java EE 6 (prevista para o início do próximo ano).
EJB singletons:
O suporte a Singleton do EJB 3.1 adiciona uma nova funcionalidade para EJB tais como a aplicação inicialização / ganchos de desligamento e capacidades multi-threaded. Muito do que Stateless Beans são utilizados agora pode ser substituído por um Singleton multi-threaded. Além do container EJB embutido e da funcionalidade de EAR simplificados (ejbs em arquivos .war), que será parte do release EJB 3.1, esta versão inclui suporte para o novo EJB 3.1 Singleton Session Bean.
O Singleton é basicamente o que você recebe quando você pegar um Stateless bean e ajustar o pool para ser exatamente 1, resultando em apenas uma instância do Singleton bean na aplicação que pode ser invocado concorrentemente por múltiplas threads, como um servlet. Ele pode fazer tudo o que um Stateless pode fazer, como suporte local e remoto a interfaces de negócio, WebServices, segurança, transações, e muito mais. Além disso, o Singleton pode ter seu método @PostConstruct chamado quando a aplicação inicia e o seu método @PreDestroy, chamado quando o aplicativo é encerrado. Isto lhe permite funcionar como um ouvinte do ciclo de vida da aplicação que é algo que somente Servlets podiam fazer antes. Há também uma anotação @Startup que é semelhante ao conceito de servlet no
Injeção de Construtor:
O recurso de injeção de construtores permite que outros recursos gerenciados pelo servidor JavaEE, como servlets, filtros, listeners ou beans, sejam injetados usando anotações a nível do construtor. Dessa forma, os programadores podem ainda utilizar atributos "final" e construtores java à moda antiga e evitar o uso de setters e injeção de atributos privados para gerenciamento da dependências nos componentes do JavaEE.
Integração com Spring:
Integração com o Spring é um recurso que permite aos desenvolvedores embutir Spring beans nos OpenEJB ou Componentes OpenEJB componentes em aplicações Spring. Isto pode ser feito injetando Spring beans em EJBs usando a anotação @Resource e os EJBs pode ser injetados por via do mecanismo padrão do Spring de injeção de dependências (DI). Esse recurso está no release 3.1 do OpenEJB ainda como uma característica experimental e está sujeita a alterações com base em feedback dos usuários.
O lançamento do OpenEJB 3.1 também inclui várias melhorias das funcionalidades existentes. Algumas dessas melhorias são:
- Multicast Client-Server Discovery e agrupamento
- Tomcat features: Suporte a Injection para ManagedBenas do JSF 1.2
- Agregação EAR-style de módulos detectados no classpath
- ConnectorModule detectáveis via classpath (arquivos RAR)
- PersistenceModule detectável via classpath
- Otimização do JavaAgent/JPA para Unit Tests foi melhorado
- JMS executa livre de portas (port-free) no modo embutido
- Scanner de anotações otimizado para determinar se um jar é um ejb mais rapidamente
- Protocolo EJBd sobre SSL
- Modo de login baseado em JDBC/DataSource
A equipe do projeto OpenEJB incluiu documentação na API Singleton e alguns exemplos para os usuário saberem mais sobre as novas características como Singleton e Integração com Spring.