.
Alguem poderia me dar um exemplo de algo que só pode ser feito com EJB?
4 Respostas
[i]
EJB ou Enterprise JavaBeans é um dos principais componentes da plataforma J2EE (Java 2 Enterprise Edition). É um componente do tipo servidor que executa no container do servidor de aplicação. Os principais objectivos da tecnologia EJB são fornecer um rápido e simplificado desenvolvimento de aplicações Java baseado em componentes distribuídos, transacionais, seguros e portáveis.
fonte: http://pt.wikipedia.org/wiki/Enterprise_JavaBeans
[/i]
Não que só possa ser feito em EJB, pois seria genérico. EJB por baixo é RMI, que por baixo é TCP/IP. EJB ganha em facilidade de fazer aplicações distribuídas e escaláveis.
Acredito que a questão não é o “que” mas o “como”. Você sempre pode implementar na “unha” tudo o que o EJB e/ou qualquer outra tecnologia já te entregam de bandeja para somente usar. No caso do EJB, vc pode deixar o container, por exemplo, cuidar de transações e o código da sua app ficará bem mais simples, mas, por debaixo dos panos, o container estará fazendo o trabalho que vc poderia (e em alguns casos vai querer) fazer na “unha”.
Então, IMHO, não existe nada que só pode ser feito com EJB. Tudo vai depender em que nível de abstração vc vai querer trabalhar a solução que estará desenvolvendo.
Um exemplo básico de facilidade que se ganha é você obtendo uma conexão do banco de dados e fazendo o try {} para executar um código, fazenfo o catch{} para um possível roolback e escrevendo o finnaly {} para fechar sua conexão … em código:
Connection connection = null;
try {
connection = ConnectionPool.getConnection();
...
} catch(SQLException sqlException) {
throw sqlException;
} finnaly {
if (connection != null) {
connection.close();
}
}
no EJB você injeta um EntityManager (JPA), usa, e todo o controle de conexão fica do lado do container, algo como:
@Steteless
public class EntidadeEJB {
@PersistenceContext
private EntityManager entityManager;
public void add(Entidade entidade) {
entityManager.persist(entidade);
}
}
[]'s
apenas complementando o que definiu no exemplo acima o uso do EJB e passagem da responsabilidade de abrir e fechar conexoes pelo container foi a notacao @Stateless em cima da classe.
abraco