Aproveite o mês das
carreiras na Alura

Até 44% OFF

Falta pouco!

00

DIAS

00

HORAS

00

MIN

00

SEG

Novidades do EJB 3.1 do futuro Java EE 6

Alura
steppat
steppat

Compartilhe

A especificação EJB 3.0 já está no mercado há quase 2 anos e simplificou bastante o desenvolvimento. O uso de anotações (XML opcional) e POJOs/POJIs são as características principais. EJB 3.0 faz parte da Java EE 5.

Ainda esse ano deve sair o Java EE 6 e, com ele, também uma atualização da especificação do EJB. Vamos ver quais são as novidades/melhorias propostas atualmente no rascunho do EJB 3.1:

Facilidades no desenvolvimento

  1. Interfaces locais são opcionais.
Banner da Imersão de IA da Alura com Google Gemini. Participe de aulas gratuitas online com certificado. Domine as inovações mais recentes da IA.

Um session bean local pode ficar simples assim:

 @Stateless public class PedidoDAO {
public void cadastra(Pedido pedido) { //código para cadastrar um pedido } } 

Não precisa mais da interface e da anotação @Local.

  1. EJB's dentro do war

Será possivel colocar um EJB3 num war, facilitando o packaging. Não é preciso criar um jar e ear separado, tudo pode ser dentro de um unico war. As classes ficam na pasta WEB-INF/classes, e se for usado um ejb-jar.xml, se encontra na pasta WEB-INF.

Novidades

  1. Singleton Beans

A ideia é que você pode criar session beans que só existem uma única vez na sua aplicação. Assim é possível criar objetos como o ServletContext na aplicação web. Por exemplo:

 @Singleton @ReadOnly public class ApplicationContextBean implements ApplicationContext {
@PostConstruct public void init() { //initializa o contexto da aplicação }
//métodos, por exemplo getAttribute(String chave) } 

Repare a anotação @ReadOnly, declarando o EJB imutável. Também vai existir uma anotação @ReadWrite para singletons beans que podem ser alterados.

O método init() será executado quando o container inicializa a aplicação. Singleton components também serão EJBs e podem ser injetados, o que é uma grande vantagem em relação a ter de ficar preso ao método estático de lookup de um singleton, e uma boa prática de inversão de controle.

  1. EJB Timer

Terá uma nova anotação @Schedule referente ao EJB timer para facilitar o agendamento. Por exemplo:

 //... @Schedule(hour=”13”, dayOfMonth=”1”) public void geraRelatorio() {/\* .... \*/} //... 

executa cada primeiro dia no mes as 13 horas. É um modelo bem superior aos atuais timers do EJB, porém ainda não tão completo quanto aos frameworks open source existentes, como o Quartz.

  1. Chamadas assíncronas

Parecidos com Web Services, métodos num session beans também podem ser chamados assincronamente. Para isto serve a anotação @Asynchronous:

 @Stateless @Remote(PedidoFacade.class) public class PedidoFacadeBean implements PedidoFacade{
@Asynchronous public void cadastra(Pedido pedido) { //código para cadastrar um pedido }
@Asynchronous public Future autoriza(Pedido pedido) { //autoriza demora ..... } } 

O segundo método devolve um object do tipo java.util.concurrent.Future que fornece métodos para verificar se o resultado já chegou.

O lançamento da versão 3.1, que teoricamente ocorrerá até o fim deste ano, deve acelerar ainda mais a adoção da plataforma Java EE 5/6 em relação ao uso das versões antigas J2EE.

Veja outros artigos sobre Programação