Novidades do EJB 3.1 do futuro Java EE 6
Postado em 24. mar, 2008 por Nico Steppat em Java
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.
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.
2) 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.
2) 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.
3) 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.
Nico Steppat (Google+)
Mais sobre o autor
5 Respostas para “Novidades do EJB 3.1 do futuro Java EE 6”
Trackbacks/Pingbacks
-
-
março 27, 2012
[...] isso não foi suficiente. Java EE 6 foi outra resposta com várias atualizações como JSF 2.0, EJB 3.1, Bean Validation e CDI. Muitas dessas especificações foram inspiradas no sucesso do JBoss Seam, [...]
ASSINE NOSSO RSS
Rafael Carneiro
25. mar, 2008
Finalmente a Sun e os membros da JCP estão prezando pela qualidade e simplicidade.
A especificação tende a facilitar mais ainda a vida dos desenvolvedores JEE com essas novas funcionalidades.
Pedro
27. mar, 2008
Quais sao os applications server que já estão na Java EE 5 ?
Nico Steppat
27. mar, 2008
Tem uma lista na pagina do SUN:
http://java.sun.com/javaee/overview/compatibility.jsp
Pedro
28. mar, 2008
Por que o Jboss AS está demorando tanto para ser lançado para o Java EE 5 ? será uma perda de interesse ?
Pedro