Preciso aprender EJB[+opiniões][+heelp]

Boa noite colegas! :wink:

Minha universidade lançou edital de concurso público, me inscrevi para concorrer a uma vaga em desenvolvimento Java. Os requisitos são os básicos e mais utilizados atualmente em Java EE. Pedem JSF, JSP, Servlets, Hibernate, JDBC, e algumas outras tecnologias da área, nada incomum. Algumas destas tecnologias confesso que não domino, conheço muito o básico, mas como a prova será só em Novembro, tenho bastante tempo pra estudar.

O que me preocupa um pouco é EJB. No edital consta, mas não citam nenhuma versão. Estou um pouco perdido, nunca tive contato com EJB e gostaria de opiniões, dicas pra dominar pelo menos os conceitos básicos e ter uma carga de conhecimento que me permita me virar sozinho.

Penso em começar pela documentação, destilar o máximo de informação possível de lá e complementar com possíveis tutoriais pra praticar…

Já juntei algum material hoje a tarde pra começar os estudos, mas toda dica é bem-vinda. Se alguém tiver alguma observação importante, uma crítica ou sugestão, fiquem a vontade, estou aberto a discussão!

Vou estudar o máximo que puder, quero muito essa vaga. O salário é bom, tenho a chance de trabalhar dentro da Universidade, o que é algo que me atrai bastante. Sei que pode ser difícil, mas como já diz o ditado “no pain, no gain”… :stuck_out_tongue:

Boa sorte na prova !

Cara, acho que a melhor forma mesmo, é começando vendo tutoriais pequenos na internet, pra ter uma noção de Stateless, Stateful, MessageDrivenBeans, Singleton e Local e Remote. Ai ja da pra fazer alguns exemplos e testes. Depois pra se aprofundar um pouco mais, apenas pra saber como funciona: Transacoes, Seguranca, Interceptors, Timer Service e WebServices, ai é melhor pegar um livro mesmo e dar uma lida. Nem precisa ler tudo, nem entender tudo, é mais dar uma lida mesmo pra ter uma noção por cima.

segue essa apostila:

http://www.k19.com.br/artigos/apostila-de-ejb-3-1-disponivel-gratuitamente-para-download/

leia antes: http://www.slideshare.net/vsenger/enterprise-javabeans-simples-e-descomplicado-na-prtica

não se assuste com o nome EJB a idéia principal (não somente) é acessar objetos remotos.

eu crio um objeto na minha maquina

você na sua maquina “puxa” esse objeto populado para a sua maquina e o utiliza.

sendo assim é possivel fazer aplicações usando Android / Swing / Web usando a mesma regra de negocios.

cuidado com:
Stateless, Stateful, MessageDrivenBeans, Singleton e Local e Remote, Transacoes, Seguranca, Interceptors, Timer Service e WebServices

não se assuste lembre-se:

stateless: operações sem sessão -> parecido com session que usamos na web
stateful: operações ficam em sessões, então é possivel acessar os dados em memória entre uma requisição e outra
MessageDrivenBeans: são os objetos remotos que falei
Transacoes: um conjunto de Sqls só serão comitados(salvos no banco) se todos os sqls do conjunto forem bem sucedidos, caso contrario rollback
Segurança: é o login/senha e Acessos no ejb, como você faria os controles de acessos das aplicações/usuários, via declaração ou via código mesmo…
Singleton: apenas uma instancia da classe é criada.
local: se você esta rodando sua aplicação (ex web junto com o EJB) usa local pra acessar objetos, se é outra instancia ou maquina usa remote pra acessar objetos
interceptor: você coloca anotações de intercept em métodos, quando um destes métodos for chamado, ele executará também o código que você definirá em um interceptador
timer service: parece com agendador de tarefas do windows
webservices: integração de aplicações usando uma mensagem em comum: xml, json etc…acho que você ja sabe

acho que ja deu pra perder o medo e partir pros testes. rsrs =)

Comece instalando o JBoss AS 7.1 e configure-o para usar o standalone-full.xml, assim ele habilita todas as funcionalidades do AS.
Os próprios exemplos da documentação do JBoss te permitem aprender e entender os conceitos de Session Bean, Stateless, Stateful, Singleton, MDB, JMS e CDI. A versão 7.1 do JBoss AS suporta a especificação JEE 6 e EJB 3.1, que é bem tranquilo.

[quote=douglaskd]stateless: operações sem sessão -> parecido com session que usamos na web
stateful: operações ficam em sessões, então é possivel acessar os dados em memória entre uma requisição e outra
MessageDrivenBeans: são os objetos remotos que falei[/quote]
Essa definição do MDB ficou confusa, deu a impressão que só os MDBs são remotos, e isso não é verdade.

Todos os 3 são objetos que podem ser acessados remotamente. Os dois primeiros (Stateless e Stateful) caem na categoria de Session Beans, e Message Driven Bean é uma outra categoria. Esses são os 2 tipos de Enterprise Beans, antes existiam também os Entity Beans, mas hoje foram substituídos pelas entities do JPA.

Os Session Beans são basicamente classes normais, que executam regras de negócio, e como você disse, elas podem manter o estado ou não.

Os Message Driven Beans normalmente são usados para ouvir uma fila JMS. A ideia é implementar um listener que leia mensagens assíncronas, e por isso ele implementa a interface MessageListener que define somente o método onMessage, que recebe uma instância de Message e faz o que tem que fazer.

Basicamente essa é a diferença entre os 2 tipos.

Bom dia!

Poxa pessoal, obrigado mesmo pelas dicas. Estive conversando ontem com o Vinícius, um colega do GUJ que também me deu umas dicas.

Obrigado mesmo gente, esse final de semana vou tirar pra estudar EJB! Obrigado também a quem me desejou boa sorte na prova! :slight_smile:

[quote=Rodrigo Sasaki][quote=douglaskd]stateless: operações sem sessão -> parecido com session que usamos na web
stateful: operações ficam em sessões, então é possivel acessar os dados em memória entre uma requisição e outra
MessageDrivenBeans: são os objetos remotos que falei[/quote]
Essa definição do MDB ficou confusa, deu a impressão que só os MDBs são remotos, e isso não é verdade.

Todos os 3 são objetos que podem ser acessados remotamente. Os dois primeiros (Stateless e Stateful) caem na categoria de Session Beans, e Message Driven Bean é uma outra categoria. Esses são os 2 tipos de Enterprise Beans, antes existiam também os Entity Beans, mas hoje foram substituídos pelas entities do JPA.

Os Session Beans são basicamente classes normais, que executam regras de negócio, e como você disse, elas podem manter o estado ou não.

Os Message Driven Beans normalmente são usados para ouvir uma fila JMS. A ideia é implementar um listener que leia mensagens assíncronas, e por isso ele implementa a interface MessageListener que define somente o método onMessage, que recebe uma instância de Message e faz o que tem que fazer.

Basicamente essa é a diferença entre os 2 tipos.[/quote]

eu tentei explicar de uma forma besta, por que os nomes assustam, só possuo conhecimento teórico, nunca trabalhei com EJB

obrigado pelo exclarecimento