Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

110
Os melhores do mundo: comparativo entre Spring e EJB 3.0

description

Palestra ministrada no Just Java 08

Transcript of Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Page 1: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Os melhores do mundo: comparativo

entre Spring e EJB 3.0

Page 2: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Super Heroes

� CEJUG Leader� Coordenador Portal Java� Desenvolvedor Java na

� Entusiasta Java� Membro do CEJUG� Atualmente trabalha

Tarso Bessa Rafael Carneiro

� Desenvolvedor Java na IVIA� Desenvolvedor do CEJUG-Classifieds(OpenSource)� Blog: www.rafaelcarneiro.org

[email protected]

� Atualmente trabalha como Arquiteto Java na IVIA� Um dos desenvolvedores do CEJUG-Classifieds(OpenSource)

[email protected]

Page 3: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

� Objetivos� Ambiente� Injeção de Dependência� Transações� Agendamento

Agenda

� Agendamento� AOP� Web services� Serviço de mensagens� Segurança� Conclusão

Page 4: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

� Comparar as funcionalidades das duas tecnologias.

� Mostrar as vantagens e desvantagens.

� Criar uma aplicação de mercado com as duas

Objetivos

� Criar uma aplicação de mercado com as duas tecnologias a fim de mostrar os recursos de cada uma.

� O foco não é ensinar como usar, apenas compará-las.

Page 5: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

� Objetivos� Ambiente� Injeção de Dependência� Transações� Agendamento

Agenda

� Agendamento� AOP� Web services� Serviço de mensagens� Segurança� Conclusão

Page 6: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Ambiente

� JDK 1.6� JDK 1.6

� JBoss 4.2.2� Tomcat 6.0.14

� Apache ActiveMQ 5

� CXF 2.0

Page 7: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

� Objetivos� Ambiente� Injeção de Dependência� Transações� Agendamento

Agenda

� Agendamento� AOP� Web services� Serviço de mensagens� Segurança� Conclusão

Page 8: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Spring: Injeção de Dependência

Page 9: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

� 3 Tipos (Construtor, Propriedade, Método de fábrica)

� A configuração pode ser por XML ou Anotações (maioria dos casos).

Spring: D.I.

� Suporta Autowiring

� Possui elementos próprios para Collections e Properties

� map, set, list, props

� Oferece Lazy-Initialization

Page 10: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

� Possui vários escopos:� singleton – uma única instância no Container� prototype – várias instâncias no Container� request – uma instância por request

(HttpServletRequest)

Spring: D.I.

(HttpServletRequest)� session – uma instância por Sessão

(HttpSession)� globalSession – semelhante a session, mas

voltado para portlets.

� Suporte as anotações @PostConstruct, @PreDestroy e @Resource

Page 11: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

Page 12: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

EJB: Injeção de Dependência

Page 13: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

� ENC JNDI (Enterprise Naming Context)

� Podem ter valores primitivos, referências a interfaces EJB, JMS, JCA, databases

EJB: D.I.

� Tipos de anotações: @EJB, @Resource, @PersistenceUnit, @PersistenceContext e @WebServiceRef

� Funciona com herança (com algumas restrições)

Page 14: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

� Todas as anotações podem ser configuradas via XML

� Necessita de um container EJB

EJB: D.I.

Page 15: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

3 tipos de

D.I

Page 16: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Nem tudo deve ser EJB!

Exemplo: fazer com que

EJB: D.I. Anti-pattern

Exemplo: fazer com quetodos os DAOs sejam EJBs.

Page 17: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

DI: Spring e EJB

Artefatos Necessários

Spring

�XML de configuração do Container (mesmo �XML de configuração do Container (mesmo usando anotações).

� ServletContextListener no web.xml.

EJB� Nenhum.

Page 18: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

DI: Spring e EJB

Nível de Dificuldade

Spring� Fácil.

EJB� Fácil.

Page 19: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

DI: Spring e EJBVantagens

Spring� Usa somente POJOs� Flexível para instanciar os beans (3 tipos de injeção de dep.)de dep.)� Elimina necessidade de padrões como ServiceLocator e BusinessDelegate

EJB� Não precisa de configuração adicional� Elimina a necessidade de ServiceLocator e BusinessDelegate� Controle do ciclo de vida dos EJBs

Page 20: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

DI: Spring e EJBDesvantagens

Spring� Mesmo com a configuração via anotações, ainda é necessário incluir um bean no XML (em alguns casos, exemplo: AOP).exemplo: AOP).

EJB� É necessário um EJB Container para realizar a injeção de dependência de componentes ou um Client Container específico. Exemplo: o Web Container não entende anotações como @Resourceou @EJB.

Page 21: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

� Objetivos� Ambiente� Injeção de Dependência� Transações� Agendamento

Agenda

� Agendamento� AOP� Web services� Serviço de mensagens� Segurança� Conclusão

Page 22: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Spring: Transações

Page 23: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

� Promove modelo único de configuração independente da tecnologia ou frameworks

� Usa AOP para a configuração

Spring: Transações

� Configuração via xml ou anotações.

� Tipos de Propagação: Required, RequiresNew, Nested, Supports, Never.

� Permite controle sobre o rollback baseado em tipos de exceção

Page 24: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

O QUE FAZER

AONDE

Page 25: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

EJB: Transações

Page 26: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

� É recomendável utilizar o controle de transação do container

� Tipos de atributos de transação disponíveis utilizando a anotação @TransactionAttribute:

EJB: Transações

utilizando a anotação @TransactionAttribute: NotSupported, Supports, Required, RequiresNew, Mandatory e Never

� Gerenciamento explícito de transação: através da anotação @TransactionManagement e da interface UserTransaction

Page 27: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Transações: Spring e EJBArtefatos Necessários

Spring� Necessita de configuração via XML, mesmo usando anotações.

EJB� Anotações nos componentes em que se deseja alterar as características padrões fornecidas pelo Container.

Page 28: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Transações: Spring e EJBNível de Dificuldade

Spring� Fácil. A configuração é feita utilizando AOP, portanto é desejável ter conhecimento de alguns conceitos.

EJB� Fácil. No entanto, utilizar o controle transacional de forma programática pode tornar a manipulação das transações trabalhosa. Os autores enfatizam ter um conhecimento abrangente em controle de transações para efetuar mudanças.

Page 29: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Transações: Spring e EJBVantagens

Spring� Dispõe de um modelo único de configuração, independente da API usada (JTA, Hibernate, JDBC) e abstrai o uso de transações locais e globais.abstrai o uso de transações locais e globais.

EJB� O Container não precisa de configuração adicional caso não se deseje efetuar um controle mais fino.

Page 30: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Transações: Spring e EJBDesvantagens

Spring� Nenhuma.

EJBEJB� Aplica-se somente a EJBs.

Page 31: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

� Objetivos� Ambiente� Injeção de Dependência� Transações� Agendamento

Agenda

� Agendamento� AOP� Web services� Serviço de mensagens� Segurança� Conclusão

Page 32: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Spring: Agendamento

Page 33: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

� Configuração declarativa

� Atualmente suporta o Quartz e o Timer (JDK)

� Quartz:

Spring: Agendamento

� Quartz:� Os beans não precisam de dependências

com a API� Opções avançadas para agendamento

� A partir da versão 2.0, possui suporte ao TaskExecutor (JDK 5) para Thread Pooling.

Page 34: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

Page 35: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

� Sem dependências com o Quartz

Page 36: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

EJB: Agendamento

Page 37: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

� Indicado para processamentos em batch

� Semelhante ao java.util.Timer do Java SE

� Configurações através da interface TimerService

EJB: Agendamento

� Configurações através da interface TimerService

� Lógica do negócio para o agendamento presente no método que possui a anotação @Timeout

Page 38: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

Page 39: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

Page 40: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Agendamento: Spring e EJBArtefatos Necessários

Spring� Caso o Quartz venha a ser utilizado, deve-se incluir sua API.� Configuração em XML.� Configuração em XML.� Classe POJO que executa a operação

EJB� EJB para executar a operação

Page 41: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Agendamento: Spring e EJBNível de Dificuldade

Spring� Fácil, porém requer conhecimentos em Quartz, caso este venha a ser usado.

EJB� Fácil.

Page 42: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Agendamento: Spring e EJBVantagens

Spring� Bem mais flexível que o TimerService do Container EJB.� A classe do job não precisa ter dependência com o � A classe do job não precisa ter dependência com o Quartz

EJB� Suporte padrão da especificação.

Page 43: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Agendamento: Spring e EJBDesvantagens

Spring� Ainda requer uma boa quantidade de configuração em XML para ter recursos avançados.

EJB� Não é flexível e possui poucos recursos avançados. � Necessita ser disparado via código.

Page 44: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

� Objetivos� Ambiente� Injeção de Dependência� Transações� Agendamento

Agenda

� Agendamento� AOP� Web services� Serviço de mensagens� Segurança� Conclusão

Page 45: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Spring: AOP

Page 46: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

� Pode ser usada através de AspectJ e Spring AOP.

� Configuração via xml ou Annotations.

� Usada pelo próprio container para controle

Spring: AOP

� Usada pelo próprio container para controle transacional.

� Pode ser aplicada a qualquer bean do Container.

Page 47: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

execution(* *.service.impl.OrderServiceImpl.checkout(..)) and args(order)

Page 48: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

Page 49: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

EJB: AOP

Page 50: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

� AOP na especificação EJB se chama interceptors

� Não precisa ser um EJB

� A anotação @AroundInvoke marca o trecho de

EJB: AOP

� A anotação @AroundInvoke marca o trecho de código que irá ser executado

� Utilizar a anotação @Interceptors para registrar os aspectos

� Pode ser configurado via XML

Page 51: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

Page 52: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

Page 53: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

AOP: Spring e EJBArtefatos Necessários

Spring� APIs do AspectJ ou Spring AOP� Classe POJO para o aspecto.� Configuração em XML, independente do uso de � Configuração em XML, independente do uso de Anotações.

EJB� Classe POJO para ser o interceptador.� Anotar as classes ou métodos a serem interceptados.

Page 54: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

AOP: Spring e EJBNível de Dificuldade

Spring� Fácil. Necessário uma leitura com cautela na documentação do Spring (e AspectJ, se for caso) .

EJB� Fácil.

Page 55: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

AOP: Spring e EJBVantagens

Spring� AspectJ é bastante poderoso e permite usar inúmeros pointcuts (Around, Before, After, AfterReturn)AfterReturn)� Não invasiva. Instâncias que serão interceptadas não precisam de configuração em suas classes.

EJB� Suporte padrão da especificação.

Page 56: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

AOP: Spring e EJBDesvantagens

Spring� Usar uma API que não é padrão.� Necessitar de configuração em XML, mesmo usando anotações.usando anotações.

EJB� Invasiva se usada com anotações. Necessita marcar a classe ou método que será interceptada.� Só tem suporte para um tipo de pointcut: Around.� Só se aplica a EJBs.

Page 57: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

� Objetivos� Ambiente� Injeção de Dependência� Transações� Agendamento

Agenda

� Agendamento� AOP� Web services� Serviço de mensagens� Segurança� Conclusão

Page 58: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Spring: Web Services

Page 59: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

� Expõe qualquer bean via web services

� Pode ser usado via Spring-WS� Modelo Contract First� Necessita de implementação adicional

Spring: Web Services

� Necessita de implementação adicional

� Pode ser combinado com CXF (Nova versão do XFire):

� Modelo Contract Last� Não requer implementação adicional� Suporte as anotações de WS como

@WebService, @WebMethod

Page 60: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

� Usando o CXF

Page 61: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

Page 62: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

EJB: Web Services

Page 63: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

� Podem ser acessados através de um EJB

� Principais anotações: @WebService, @WebMethod, @WebParam, @WebResult, @OneWay, @WebServiceRef,

EJB: Web Services

@OneWay, @WebServiceRef, @WebServiceClient e @SOAPBinding

� Podem ser implantados via XML

Page 64: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

Page 65: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Web Services: Spring e EJBArtefatos Necessários

Spring� Usar uma API para Web Service: Spring-WS ou CXF.� Configuração de XML necessária, mesmo usando � Configuração de XML necessária, mesmo usando anotações.

EJB� Nenhum se não desejar gerar o WSDL dinamicamente.

Page 66: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Web Services: Spring e EJBNível de Dificuldade

Spring� Médio. Precisa conhecer a configuração da API utilizada.

EJB� Médio. Utilizando o servidor de aplicação JBoss 4.2, foi necessário utilizar o sistema de endorsed jars do Java.

Page 67: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Web Services: Spring e EJBVantagens

Spring� Expor beans configurados no Container.� Flexível quanto a escolha da API utilizada.

EJB� Padrão definido pela especificação.

Page 68: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Web Services: Spring e EJBDesvantagens

Spring� Configuração via XML mesmo utilizando anotações (no caso do CXF).

EJB� Não funciona com o Java 6 (no caso do JBoss). É necessário utilizar o esquema de endorsed jars.

Page 69: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

� Objetivos� Ambiente� Injeção de Dependência� Transações� Agendamento

Agenda

� Agendamento� AOP� Web services� Serviço de mensagens� Segurança� Conclusão

Page 70: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Spring: Serviços de Mensagens

Page 71: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Spring: Serviços de Mensagens

� O Container do Spring não possui um Message Broker (MB).

� É preciso incorporar um MB ou utilizar o do servidor de aplicação, caso este venha a dispor de um. Ex.: de aplicação, caso este venha a dispor de um. Ex.: JBoss

� O ActiveMQ da Apache possui boa integração com Spring

Page 72: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Spring: Serviços de Mensagens

� Possui a classe JmsTemplate para facilitar o uso de enviar mensagens e consumi-las (se for o caso).

� Possui Listener-Containers para escutar filas de mensagens e disparar ações em beans.mensagens e disparar ações em beans.

� Permite definir número de Threads para processamento

� Beans não precisam implementar MessageListener (Opcional).

� Possui conversores de tipos de mensagens: MapMessage, ObjectMessage, TextMessage...

Page 73: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

� Configuração de um Listener JMS

Page 74: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

�JMSTemplate para simplificar a comunicação com filas

Page 75: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

�Envio de mensagens

� Processamento da mensagem (sem dep. JMS)

Page 76: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

EJB: Serviços de Mensagens

Page 77: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

EJB: Serviços de Mensagens

� As mensagens são processadas por Message

Driven Bean

� Devem implementar a interface MessageListener

� São identificados através da anotação @MessageDriven

� O método onMessage() contém a lógica do negócio

� É configurado através da anotação @ActivationConfigProperty

Page 78: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

EJB: Serviços de Mensagens

� Possuem anotações de callback: @PostConstruct e @PreDestroy

� Podem enviar mensagens JMS

� Podem ser configurados via XML

Page 79: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

� Enviando uma mensagem JMS

Page 80: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

� Enviando uma mensagem JMS

Page 81: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

� MessageDriven Bean

Page 82: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

� MessageDriven Bean

Page 83: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Mensagens: Spring e EJBArtefatos Necessários

Spring� Configurar um Message Broker. Incluir as APIs se for executá-lo no modo embedded.� Criar uma classe POJO para receber as mensagens� Definir um Listener Container para notificar os POJO� Definir um Listener Container para notificar os POJO� Configurar uma instância de JmsTemplate para envio.

EJB� É preciso obter os recursos ConnectionFactory e Queue

(no exemplo utilizado)� 7 linhas de código para enviar uma mensagem� Classe Java anotada com @MessageDriven

Page 84: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Mensagens: Spring e EJBNível de Dificuldade

Spring� Médio. Necessário conhecimento de configuração do Message Broker.

EJB� Médio. É preciso entender o conceito de JMS.

Page 85: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Mensagens: Spring e EJBVantagens

Spring� Usar beans do Container para receber mensagens.� Redução de codificação e nenhuma dependência com JMS.com JMS.� Escolha do Message Broker.

EJB� Padrão definido pela especificação.� O Container EJB já possui um Message Broker.

Page 86: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Mensagens: Spring e EJBDesvantagens

Spring� Configuração inicial um pouco extensa.� Incorporar APIs externas para o MB.

EJB� Muita linha de código para enviar mensagem. A especificação não fornece uma forma simples para a sua utilização, como uma abstração.

Page 87: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

� Objetivos� Ambiente� Injeção de Dependência� Transações� Agendamento

Agenda

� Agendamento� AOP� Web services� Serviço de mensagens� Segurança� Conclusão

Page 88: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Spring: Segurança

Page 89: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Spring: Segurança

� Feita pela extensão de segurança do Spring: O Spring Security

� Configuração tradicional, da mesma forma que se configura o Springconfigura o Spring

� Promove uma cadeia de filtros para autenticação, autorização

� Mecanismo bastante extensível e compatível com CMA, JAAS

Page 90: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Spring: Segurança

� As regras de segurança não precisam ser declaradas em xml.

�Protege objetos de domínio com suporte as anotações da JSR 250 (@RolesAllowed, @DenyAll)anotações da JSR 250 (@RolesAllowed, @DenyAll)

� Oferece controle de limite de logins, autenticação do tipo “Run As” e serviço de lembrança de senha.

Page 91: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

Page 92: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

Page 93: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

EJB: Segurança

Page 94: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

EJB: Segurança

� Pode ser feita declarativamente e programaticamente

� Principais anotações: @RunAs, @PermitAll, @DenyAll, @DeclareRoles e @RolesAllowed@DenyAll, @DeclareRoles e @RolesAllowed

� Somente os session beans podem ser seguros no ambiente EJB

� Pode ser configurado via XML

Page 95: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

� Web.xml

Page 96: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

� Web.xml

Page 97: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

� login-config.xml

Page 98: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

� jboss-web.xml

� jboss.xml

Page 99: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Exemplo

� Anotação na classe do bean

Page 100: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Segurança: Spring e EJBArtefatos Necessários

Spring� Incluir as APIs do Spring Security.� Configuração de filtros no web.xml� Configuração via XML do Spring Security� Configuração via XML do Spring Security

EJB� configuração declarativa via XML no Container EJB� arquivos de propriedades (users.properties e roles.properties)� incluir anotações nos EJBs� configurar o Deployment Descriptor do Web Container

Page 101: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Segurança: Spring e EJBNível de Dificuldade

Spring� Médio.

EJBEJB� Difícil. Segurança no Container EJB não é trivial.

Page 102: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Segurança: Spring e EJBVantagens

Spring� Incorporado ao Container do Spring, facilitando a integração da autenticação e autorização com o beans já configurados.beans já configurados.

EJB� Utilização da especificação.

Page 103: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Segurança: Spring e EJBDesvantagens

Spring� Nenhuma.

EJBEJB� Pouco material contundente na Internet.� Nível de complexidade alto.� Muita configuração via XML.

Page 104: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

� Objetivos� Ambiente� Injeção de Dependência� Transações� Agendamento

Agenda

� Agendamento� AOP� Web services� Serviço de mensagens� Segurança� Conclusão

Page 105: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Conclusão

� O container do Spring requer uma boa quantidade de configuração em XML, porém ainda é mais poderoso que o Container EJB, principalmente em injeção de dependência.

� O Spring está incorporando Anotações para configuração, mas ainda requer algo em XML.

� Apesar de ser open-source, é mantido por uma única empresa, a SpringSource (Interface21).

Page 106: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Conclusão

� O Spring oferece um mecanismo “plugável” para incorporação de serviços semelhantes aos do EJB Container.

� Apesar do EJB 3.0 ser bastante fácil de utilizar, ele � Apesar do EJB 3.0 ser bastante fácil de utilizar, ele não possui um mecanismo de integração com frameworks conhecidos do mercado. Já o contrário disto, o Spring fornece integração e suporte para os melhores do mercado.

� O EJB tem a vantagem de fazer parte do JCP, sendo assim uma especificação.

Page 107: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Conclusão

� A especificação EJB precisa melhorar o suporte das anotações em outros Containers.

� As duas soluções (Spring e EJB) não são exclusivas. É possível combiná-las para tirar o melhor de cada mundo.

Page 108: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Perguntas?

Page 109: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Agradecer queremos...

Que a força esteja comesteja comvocês!

Page 110: Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0

Apoio