Java Enterpise Edition
e as novidades da versão 6
                    Fabio Velloso
             fabio@soujava.org.br

   ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




                             Esta obra está licenciada sob uma...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Fabio Velloso
 Bacharel  em Ciência da Computação pela
  Univ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Agenda
 Java Enterprise Edition
 Java Enterprise Edition 6
 ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Java Platform
FISL10 - Fórum Internacional de Software Livre / JAVALI




Java Enterprise Edition


 Especificação  de arquitetura para...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Camadas JEE
FISL10 - Fórum Internacional de Software Livre / JAVALI




Servlet - Request e Response HTTP
FISL10 - Fórum Internacional de Software Livre / JAVALI




Java Web Technologies
FISL10 - Fórum Internacional de Software Livre / JAVALI




JavaServer Faces
 Framework                                  ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Enterprise Java Beans
 Definição:
        “Enterprise JavaBe...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Java EE Timeline




                                         ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Agenda
 Java Enterprise Edition
 Java Enterprise Edition 6
 ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Java Authentication SPI for Containers
 JSR                  ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Java Authentication SPI for Containers
 Suporta o modelo de s...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Java Authentication SPI for Containers




      Client      ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Java Authentication SPI for Containers
 Servlet
        Conta...
FISL10 - Fórum Internacional de Software Livre / JAVALI




JavaServer Faces 2.0
 JSR  314
 Final Approval Ballot
 Inco...
FISL10 - Fórum Internacional de Software Livre / JAVALI




JavaServer Faces 2.0
 Composite                              ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




JavaServer Faces 2.0
     Mínimo de configuração
      Mais ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




JavaServer Faces 2.0
 Processamento       e atualização parci...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Servlet 3.0
 JSR                       315
 Proposed        ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Servlet 3.0
 @WebServlet
      Classe anotada é um Servlet
 ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Servlet 3.0
 Exemplos:

       @WebServlet(“/hello”)
       ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Servlet 3.0
 @WebFilter
  Classe anotada é um filtro
  Prec...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Servlet 3.0
 Pluggability
  Modularidade do web.xml com frag...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Servlet 3.0
 Exemplo:
             <web-fragment>
           ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Servlet 3.0
 Fragmentos                                      ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Servlet 3.0
 Asynchronous   Servlets
 Evitar gargalos com re...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Servlet 3.0
 Programmatic       Security
       Usado quando...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Servlet 3.0
 Suporte                                     a an...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Servlet 3.0
 Exemplo:
          @WebServlet("/soujava")
     ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Servlet 3.0
     @WebInitParam
         @WebServlet(name="hel...
FISL10 - Fórum Internacional de Software Livre / JAVALI




JSR 299
 Contexts  and Dependency Injection for
  JavaEE (ant...
FISL10 - Fórum Internacional de Software Livre / JAVALI




JSR 299
O     que pode ser injetado
      Classes Java
     ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




JSR 299
 @Named(“<nome>”)
 Habilita uso com Unified Expressi...
FISL10 - Fórum Internacional de Software Livre / JAVALI




JSR 299
 Unified    EL
       Objeto pode ser usado diretamen...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1
 JSR  318
   Proposed Final Draft – Março 2009
   V...
FISL10 - Fórum Internacional de Software Livre / JAVALI




JEE 6 - Empacotamento simplificado
 JEE 5 – WEB e EJB         ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1
 Local Business Interfaces opcionais
 Empacotamento ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1
 Optional     Local Business Interfaces
       Class...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1
 EJB  segue o mesmo modelo de
   desenvolvimento atua...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1
 Session                                      Bean co...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1
 Uso no cliente por injeção de dependência
 Chamando...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB “Lite”
 Subset   de EJB 3.1 API para Web Profiler
 Expan...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB Profiler's


                                  Lite       ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1
 Portable                                         JND...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1 - Portable JNDI names
 Nome único global
  java:glob...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1
 Exemplo:


          package org.soujava;

         ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1
 HelloBean  empacotado em helloejb.jar e
   helloapp....
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1
 HelloBean                                           ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1
 Singleton
       Componente instanciado uma única v...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1
 Exemplo                                          Sin...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1
 Singleton
       Necessário controlar:
            ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1
 Singleton    Container Managed Concurrency
       @...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1
    Singleton                                        ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1
 BeanManaged Concurrency
  Controle pelo desenvolved...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1
 Singleton é inicializado pelo container no
  momento...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1
 @DependsOn
       Define um grau de dependência par...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1 – Timer Service
 Calendar-based   timeout (EJB 2.1)
...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1 – Timer Service
 Calendar-based                      ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1 – Timer Service
 Exemplos      de Calendar Expression...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1 – Timer Service
 Automatic                           ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1 – Timer Service
   Automatic Timer Creation
        ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1 – Embeddable API
 Possibilita execução de EJBs no mes...
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1 – Embeddable API
 Exemplo:
             public class ...
FISL10 - Fórum Internacional de Software Livre / JAVALI




JAX-RS
 Java API for RESTful Web Services
 JSR 311
 Objetiv...
FISL10 - Fórum Internacional de Software Livre / JAVALI




JAX-RS
 @Path - Indica que o recurso é exposto como
   uma RE...
FISL10 - Fórum Internacional de Software Livre / JAVALI




JAX-RS - @Path – sub recursos
 Exemplo:

        @Path("notic...
FISL10 - Fórum Internacional de Software Livre / JAVALI




JAX-RS - EJB
 EJB Session Bean como serviço REST
 Disponível...
What is GlassFish ?

• Open Source Community
 > Users, Partners, Testers, Developers, ...
 > Started in 2005 on java.net
•...
State of GlassFish
• GlassFish v2
 >   Java EE 5 Reference Implementation
 >   Clustering, Load Balancing, High Availabili...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Conclusão
 Facilidade de desenvolvimento
 Compatibilidade co...
FISL10 - Fórum Internacional de Software Livre / JAVALI




Referências
 Java Comunnity Process
   www.jcp.org
 JavaOne...
FISL10 - Fórum Internacional de Software Livre / JAVALI




                                                          Obri...
Upcoming SlideShare
Loading in...5
×

Jee6

1,911

Published on

Published in: Technology, News & Politics
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,911
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
80
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Jee6

  1. 1. Java Enterpise Edition e as novidades da versão 6 Fabio Velloso fabio@soujava.org.br JAVALI@FISL10
  2. 2. FISL10 - Fórum Internacional de Software Livre / JAVALI Esta obra está licenciada sob uma Licença Creative Commons http://creativecommons.org/licenses/by-nc-sa/2.0/br/
  3. 3. FISL10 - Fórum Internacional de Software Livre / JAVALI Fabio Velloso  Bacharel em Ciência da Computação pela Universidade Federal de São Carlos-UFSCar  Fundador e Vice-Presidente do SouJava  Trabalha com tecnologia Java desde 96  Professor de SOA e Web Services do curso de Pós-Graduação "Lato-Sensu" em Desenvolvimento de Software para Web da UFSCar  Arquiteto de Integração e Sistemas na Telefonica
  4. 4. FISL10 - Fórum Internacional de Software Livre / JAVALI Agenda  Java Enterprise Edition  Java Enterprise Edition 6  Java Authentication SPI for Containers  Contexts and Dependency Injection for JavaEE (anteriormente WebBeans)  Java API for RESTful Web Services  JavaServer Faces 2.0  Servlets 3.0  EJB 3.1
  5. 5. FISL10 - Fórum Internacional de Software Livre / JAVALI Java Platform
  6. 6. FISL10 - Fórum Internacional de Software Livre / JAVALI Java Enterprise Edition  Especificação de arquitetura para a criação de aplicações para servidores, exigindo alta disponibilidade, robustez, segurança, performance, escalabilidade e interoperabilidade.
  7. 7. FISL10 - Fórum Internacional de Software Livre / JAVALI Camadas JEE
  8. 8. FISL10 - Fórum Internacional de Software Livre / JAVALI Servlet - Request e Response HTTP
  9. 9. FISL10 - Fórum Internacional de Software Livre / JAVALI Java Web Technologies
  10. 10. FISL10 - Fórum Internacional de Software Livre / JAVALI JavaServer Faces  Framework MVC padrão de JEE  JSR 128  Facilidade de desenvolvimento  Suporte visual de IDE's  Modelo de componentes Várias implementações Comunidade Open Source
  11. 11. FISL10 - Fórum Internacional de Software Livre / JAVALI Enterprise Java Beans  Definição:  “Enterprise JavaBeans is a cross-platform component architecture for the development and deployment of multi-tier, distributed, scalable, object- oriented Java applications. Enterprise JavaBeans makes it easy to write business applications as components by providing a set of automatic services to support scalable transactional application server components. Enterprise JavaBeans can be deployed on top of existing transaction processing systems including traditional transaction processing monitors, web servers, database servers, application servers, etc. “  O único padrão para desenvolvimento de componentes server side para monitores transacionais, habilitando o desenvolvimento de aplicações distribuídas, transacionais, robustas, escaláveis e seguras.
  12. 12. FISL10 - Fórum Internacional de Software Livre / JAVALI Java EE Timeline Fonte: TS-5055 (JavaOne 2009)
  13. 13. FISL10 - Fórum Internacional de Software Livre / JAVALI Agenda  Java Enterprise Edition  Java Enterprise Edition 6  Java Authentication SPI for Containers  Contexts and Dependency Injection for JavaEE (anteriormente WebBeans)  Java API for RESTful Web Services  JavaServer Faces 2.0  Servlets 3.0  EJB 3.1
  14. 14. FISL10 - Fórum Internacional de Software Livre / JAVALI Java Authentication SPI for Containers  JSR 196  Final  Define uma interface padrão para integração de containers JEE com servidores de autenticação  Possibilita delegar o processo de autenticação a um servidor/ externo  Define SPI que amplia os conceitos de JAAS  Define “profiles” que estabelecem contratos para uso da SPI
  15. 15. FISL10 - Fórum Internacional de Software Livre / JAVALI Java Authentication SPI for Containers  Suporta o modelo de segurança declarativa de JEE  Possibilita a implementação de protocolos complexos como SOAP  Tokens SAML Kerberos service tickets  X509 Certificates Liberty
  16. 16. FISL10 - Fórum Internacional de Software Livre / JAVALI Java Authentication SPI for Containers  Client  Server Verifica tokens ou  Adiciona tokens e assinaturas assinatura Extraem datos  Chama o Discovery para Adiciona ao “Security localizar o serviço Context”
  17. 17. FISL10 - Fórum Internacional de Software Livre / JAVALI Java Authentication SPI for Containers  Servlet Container Profile  LoginModule Bridge Profile Define a integração e delega o processamento de autorização de segurança a um JAAS Login Module  SOAP Profile  Profiles a definir Java Message Service  RMI/IIOP (Internet Inter-ORB Protocol)
  18. 18. FISL10 - Fórum Internacional de Software Livre / JAVALI JavaServer Faces 2.0  JSR 314  Final Approval Ballot  Incorporação de Facelets  Suporte a AJAX nativo <h:commandButton id="btnDeleteSprint" action="#{sprintManager.remove}" value="Delete" onclick="jsf.ajax.request(this, event, {execute: 'frmListSprints', render: 'frmListSprints'}); return false;"/>
  19. 19. FISL10 - Fórum Internacional de Software Livre / JAVALI JavaServer Faces 2.0  Composite Componentes: Componentes customizados mais fáceis de desenvolver  Não precisa de XML  Não precisa criar CustomTag  É um componente real, pode ter conversores e validadores
  20. 20. FISL10 - Fórum Internacional de Software Livre / JAVALI JavaServer Faces 2.0  Mínimo de configuração Mais anotações menos XML Navegação implícita Declaração e configuração de ManagedBeans em anotações  Maior flexibilidade na navegação Suporte a EL dentro do facesconfig.xml; Navegação condicional (if) no facesconfig.xml
  21. 21. FISL10 - Fórum Internacional de Software Livre / JAVALI JavaServer Faces 2.0  Processamento e atualização parcial da árvore de componentes  Melhor suporte a “Resources” como CSS, arquivos JavaScript com novas tags:  <h:outputStylesheet library="css/1_1" name="common.css"/>  <h:outputScript library="js" name="menu.js" target="head"/>  Novos escopos : CustomScope ViewScope Acesso via EL #{viewScope.attrName}
  22. 22. FISL10 - Fórum Internacional de Software Livre / JAVALI Servlet 3.0  JSR 315  Proposed Final Draft  Non-blocking I/O  Processamento assíncrono  Maior número de usuários concorrentes  Anotações para declarar Servlets, Filters, Listeners e segurança  Web.xml opcional, porém se utilizado suas definições valem sobre as anotações
  23. 23. FISL10 - Fórum Internacional de Software Livre / JAVALI Servlet 3.0  @WebServlet Classe anotada é um Servlet Precisa declarar a “URL pattern” Outros parâmetros são opcionais Exemplo: Nome é o full qualified name da classe Classe precisa declarar extends HttpServlet Métodos doGet, doPost são herdados
  24. 24. FISL10 - Fórum Internacional de Software Livre / JAVALI Servlet 3.0  Exemplos:  @WebServlet(“/hello”) public class Exemplo extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) { } }  @WebServlet(urlPatterns=“/hello”, name=”JavaliServlet”, asyncSupported=true) public class Exemplo extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) { } }
  25. 25. FISL10 - Fórum Internacional de Software Livre / JAVALI Servlet 3.0  @WebFilter Classe anotada é um filtro Precisa declarar a “URL pattern” do filtro Outros parâmetros são opcionais  Classe precisa declarar implements Filter  Exemplo:  @WebFilter(“/javaliFilter”) public class Exemplo implements Filter { public void doFilter(HttpServletRequest req, HttpServletResponse res) { } }
  26. 26. FISL10 - Fórum Internacional de Software Livre / JAVALI Servlet 3.0  Pluggability Modularidade do web.xml com fragmentos Alterar parâmetros definidos via anotações Não é necessário escrever todo o web.xml  Exemplos de uso: Logging e Filters de segurança Declarar Listeners para executar ações em diferentes pontos da aplicação
  27. 27. FISL10 - Fórum Internacional de Software Livre / JAVALI Servlet 3.0  Exemplo: <web-fragment> <servlet> <servlet-name>hello</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> <listener> <listener-class>RequestListener</listener-class> </listener> </web-fragment>
  28. 28. FISL10 - Fórum Internacional de Software Livre / JAVALI Servlet 3.0  Fragmentos podem ser ordenados  Exemplo: web-fragment1.xml <web-fragment> <name>fragmento1</name> <ordering><after>fragmento2</after></ordering> </web-fragment>  <after> - carregado após o fragmento descrito  <before> - carregado antes do fragmento descrito  <others> - indica ordem que é carregado na lista Com <before> - no início Com <after> - ao final
  29. 29. FISL10 - Fórum Internacional de Software Livre / JAVALI Servlet 3.0  Asynchronous Servlets  Evitar gargalos com recursos como Conexão JDBC Web Services JMS Outro recurso acessado pela aplicação  Retorna o processamento ao container  Outra thread ou callback retorna o resultado paralelo executado em paralelo
  30. 30. FISL10 - Fórum Internacional de Software Livre / JAVALI Servlet 3.0  Programmatic Security Usado quando a segurança declarativa não é suficiente Métodos de HttpServletRequest interface: login logout getRemoteUser isUserInRole getUserPrincipal
  31. 31. FISL10 - Fórum Internacional de Software Livre / JAVALI Servlet 3.0  Suporte a anotações de seguranca @RolesAllowed Grupo que tem acesso ao recurso @DenyAll Recurso não acessíveis a usuário @PermitAll Recurso acessível a todos usuários @TransportProtected Uso de SSL  Aplicável a classes e métodos
  32. 32. FISL10 - Fórum Internacional de Software Livre / JAVALI Servlet 3.0  Exemplo: @WebServlet("/soujava") @RolesAllowed("users"); public class TestServlet extends HttpServlet { @PermitAll protected void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {} @RolesAllowed("javali") protected void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {} @DenyAll protected void doTrace(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {} }
  33. 33. FISL10 - Fórum Internacional de Software Livre / JAVALI Servlet 3.0  @WebInitParam @WebServlet(name="hello", urlPatterns={"/hello"}, initParams={ @InitParam(name="evento", value="Javali"), @InitParam(name="local", value="Porto Alegre") }) public class JavaliServlet extends javax.servlet.http.HttpServlet{ }  @MultipartConfig  Define o mime/multipart suportado pelo Request
  34. 34. FISL10 - Fórum Internacional de Software Livre / JAVALI JSR 299  Contexts and Dependency Injection for JavaEE (anteriormente WebBeans)  Public Review Ballot  Modelo unificado de injeção de dependência  Modelo para uso integração entre camada Web e transacional  Possibilita o uso direto de um EJB em páginas JSF  Define uma Service Provider Interface (SPI) para integração de novas anotações
  35. 35. FISL10 - Fórum Internacional de Software Livre / JAVALI JSR 299 O que pode ser injetado Classes Java EJB Session Beans Java EE resources (Datasources, JMS topics/queues, etc) Persistence contexts (JPA EntityManager) Referências a Web services Referências remotas a EJBs Framework é aberto a novos tipos
  36. 36. FISL10 - Fórum Internacional de Software Livre / JAVALI JSR 299  @Named(“<nome>”)  Habilita uso com Unified Expression language expressions  Nome definido em  Nome default da classe @Named public public @Named @Named(“hello”) class Hello { class Hello { public String sayHello (String name) { public String sayHello return “hello “ + name; (String name) { } return “hello “ + name; } } }
  37. 37. FISL10 - Fórum Internacional de Software Livre / JAVALI JSR 299  Unified EL Objeto pode ser usado diretamente em uma página JSP ou JSF:  <h:commandButton value=”Say Hello” action=”#{hello.sayHello}”/> <h:commandButton value=”Say Hello” action=”#{Hello.sayHello}”/>
  38. 38. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1  JSR 318 Proposed Final Draft – Março 2009 Versão final planejada para Q3 2009  Simplificar desenvolvimento  Reduzir número de interfaces  Minimizar uso de deployment descriptors  Java Persistence API (JPA) passa a ser definida em uma JSR separada (JSR 317)
  39. 39. FISL10 - Fórum Internacional de Software Livre / JAVALI JEE 6 - Empacotamento simplificado JEE 5 – WEB e EJB JEE 6 Fonte: TS-5055 (JavaOne 2009)
  40. 40. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1  Local Business Interfaces opcionais  Empacotamento simplificado  API simplificada de EJB 3.1  Portable JNDI Names  Simple Component Testing  Passam a ser opcionais CMP e JAX-RPC
  41. 41. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1  Optional Local Business Interfaces Classe simples, sem uma interface local Todos métodos públicos são acessíveis ao cliente Injeção de dependência com @EJB ou lookup para a referência do objeto Client não chama new() do bean Modelo de programação permanece igual ao com Local Business Interface
  42. 42. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1  EJB segue o mesmo modelo de desenvolvimento atual @Stateless public class HelloBean { public String sayHello(String msg) { return “Hello “ + msg; } }
  43. 43. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1  Session Bean com Local Business Interface Fonte: TS-4605 (JavaOne 2009)
  44. 44. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1  Uso no cliente por injeção de dependência  Chamando diretamente o EJB @EJB HelloBean hello; ... hello.sayHello(“FISL”);  JNDI Lookup @Resource SessionContext ctx; HelloBean hello = (HelloBean)ctx.lookup(“hello”);
  45. 45. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB “Lite”  Subset de EJB 3.1 API para Web Profiler  Expansão da portabilidade de EJBs, sem perda da portabilidade  Mesma publicação pode ser feita no “Web Profile” e “Full Profile” Sem alteração no modelo de desenvolvimento Possível pela simplificação do empacotamento .war
  46. 46. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB Profiler's Lite Full (Lite e as seguintes funcionalidades) Local Session Bean Message Driven Beans Annotations /ejb-jar.xml EJB Web Services endpoint CMT e BMT RMI-IIOP intereoperability Segurança declarativa 2.x e 3.x Remote view Interceptor 2.x Local view JPA 2.0/ JTA 1.1 Timer Service CMP e BMP Assynchronous Beans
  47. 47. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1  Portable JNDI names  Sintaxe: java:global[/<app-name>]/<module-name>/<bean- name>[!<fully-qualified-interface-name>]  Por default usa o nome do pacote do bean  Pode ser alterado no application.xml  Pode ser alterado no ejb-jar.xml ou web.xml  Simplifica Local Session lookups entre aplicações  Simplifica o mapeamento de referências a Session beans entre aplicações  Melhora a portabilidade de clientes remotos
  48. 48. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1 - Portable JNDI names  Nome único global java:global[/<app-name>]/<module- name>/<ejb-name>  Nome único na mesma aplicação java:app[/<module-name>]/<ejb-name>  Nome único no módulo java:module/<ejb-name>
  49. 49. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1  Exemplo: package org.soujava; @Stateless public class HelloBean implements Hello { ... }
  50. 50. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1  HelloBean empacotado em helloejb.jar e helloapp.ear java:global/helloapp/helloejb/HelloBean java:global/helloapp/helloejb/HelloBean! org.soujava.Hello java:app/helloejb/HelloBean java:app/helloejb/HelloBean!org.soujava.Hello java:module/HelloBean java:module/HelloBean!org.soujava.Hello
  51. 51. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1  HelloBean empacotado em helloweb.war java:global/helloweb/HelloBean java:global/helloweb/HelloBean!org.soujava.Hello java:app/HelloBean java:app/HelloBean!org.soujava.Hello java:module/HelloBean java:module/HelloBean!org.soujava.Hello
  52. 52. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1  Singleton Componente instanciado uma única vez por aplicação Criado para compartilhamento e suporte a acesso concorrente Em aplicações distribuídas em várias JVMs, existirá uma instância do componente por JVM para cada aplicação
  53. 53. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1  Exemplo Singleton  Exemplo Client @Singleton @Stateless public class SharedBean { public class FooBean { private SharedData shared; // Injeção da referência ao @PostConstruct Singleton bean private void init() { @EJB shared = ...; private SharedBean shared; } public void foo() { public int getData() { int var = shared.getData(); return shared.data; } } } }
  54. 54. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1  Singleton Necessário controlar: Concorrência Integridade de dados Dois mecanismos: Container Managed Concurrency O container controla a concorrência baseado em anotações ao nível de método Bean Managed Concurrency Container habilita acesso total a instância e delega ao desenvolvedor a responsabilidade de controle É necessário definir um dos modelos
  55. 55. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1  Singleton Container Managed Concurrency @Lock(READ) Habilita leitura a todos acessos @Lock(Write) Controla a concorrência permitindo um único acesso @AccessTimeout(value=1,unit=SECONDS) Aplicavel a classes e métodos Especifica o tempo de bloqueio antes do timeout
  56. 56. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1  Singleton  Singleton com Timeout @Singleton @Singleton @Lock(READ) public class SharedBean { public class SharedBean { private SharedData shared; private SharedData shared; @Lock(READ) @AccessTimeout(value=1, unit=SECONDS) public int getData() { public int getData() { return shared.data; return shared.data; } } @Lock(WRITE) public void update(...) { public void update(...) { // update shared data // update shared data } }
  57. 57. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1  BeanManaged Concurrency Controle pelo desenvolvedor  Exemplo: @Singleton @ConcurrencyManagement(BEAN) public class SharedBean { private SharedData shared; synchronized public int getData() { return shared.data; } synchronized public void update(...) { // update shared data } }
  58. 58. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1  Singleton é inicializado pelo container no momento mais apropriado  @Startup indica ao container que o Singleton deve ser inicializado junto com a aplicação  Exemplo @Singleton @Startup public class StartupBean { @PostConstruct private void onStartup() { } @PreDestroy private void onShutdown() { }
  59. 59. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1  @DependsOn Define um grau de dependência para sequência de inicialização de EJBs Exemplo: @Singleton public class B { ... } @DependsOn(“B”) @Singleton public class A { ... } Container deve garantir que A é inicializado após B
  60. 60. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1 – Timer Service  Calendar-based timeout (EJB 2.1)  Persistente (shutdown/restart)  Executado quando “expira”  Exemplo: ScheduleExpression schedule = new ScheduleExpression().dayOfWeek(“Sat”).hour(1); //1:00 AM Timer timer = timerService.createCalendarTimer(schedule);  Novidades com EJB 3.1 Automatic timer creation Cron-based scheduling
  61. 61. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1 – Timer Service  Calendar-based timeout Semântica similar ao Cron Criado automaticamente ou por programação Named attributes second, minute, hour (default = “0”) dayOfMonth, month, dayOfWeek, year (default = “*”)  Attribute Syntax  Single value : minute = “30”  Lista : month = “Jan, Jul, Dec”  Faixa : dayOfWeek = “Mon-Fri”  Wild card : hour = “*”  Incremental : minute = “*/10”
  62. 62. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1 – Timer Service  Exemplos de Calendar Expression: “A cada 15 segundos” (second=”*/15”, minute=”*”, hour=”*”) “Último domingo de Março às 2h.” (hour=”2”, dayOfMonth=”LastSun”,month=”Mar”) “Todo dia 2:30 p.m. U.S. Eastern Time” (minute=”30”, hour=”14”,timezone=”America/New_York”)
  63. 63. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1 – Timer Service  Automatic Timer Creation Container cria o timer automaticamente após o deployment Equivale a chamada: TimerService.createCalendarTimer() Definido por anotação ou no deployment descriptor ejb-jar.xml
  64. 64. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1 – Timer Service  Automatic Timer Creation  Container cria o timer automaticamente após o deployment Equivale a TimerService.createCalendarTimer()  Definido por anotação ou no deployment descriptor ejb- jar.xml Exemplo: @Stateless public class SendStatements { @Resource javax.mail.Session mailSession; // Callback the last day of each month at 8 a.m. @Schedule(hour=”8”, dayOfMonth=”Last”) void sendMonthlyBankStatements() { }}
  65. 65. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1 – Embeddable API  Possibilita execução de EJBs no mesmo processo de aplicações client com JSE  Mesmo comportamento e ciclo de vida quando executado em um container JEE CMT/BMT, injection, threading guarantees  Suporte mandatório mínimo é 3.1 “Lite” API Opcionalmente pode-se adicionar outras funcionalidades
  66. 66. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1 – Embeddable API  Exemplo: public class BankTester { public static void main(String[] args) { EJBContainer container = EJBContainer.createEJBContainer(); // Acquire Local EJB reference Bank bank = (Bank) container.getContext(). lookup(“java:global/bank/BankBean”); testAccountCreation(bank); }
  67. 67. FISL10 - Fórum Internacional de Software Livre / JAVALI JAX-RS  Java API for RESTful Web Services  JSR 311  Objetivos: Suporte a RESTful em Java Programação declarativa Modelo de anotações Facilitar o desenvolvimento  JSE5 e JEE5 ou superior  Integrado ao JEE6 (JSR 313)
  68. 68. FISL10 - Fórum Internacional de Software Livre / JAVALI JAX-RS  @Path - Indica que o recurso é exposto como uma REST Web Services  @GET – Indica que o método Java é acessível pelo metodo GET HTTP  Exemplo:  @Path("/helloWorld") public class HelloWorldRest { @GET public String sayHello() { return "hello from Java REST; }}  http://localhost/SouJava/resources/helloWorld
  69. 69. FISL10 - Fórum Internacional de Software Livre / JAVALI JAX-RS - @Path – sub recursos  Exemplo: @Path("noticias") public class ListaNoticias { @GET @Path("esporte") public String getNewsSport() {...} @GET @Path("economia") public String getNewsEconomy() {...} } http://localhost/fisl/resources/noticias/economia
  70. 70. FISL10 - Fórum Internacional de Software Livre / JAVALI JAX-RS - EJB  EJB Session Bean como serviço REST  Disponível no JEE 6  Exemplo: @Stateless @Path("ssb") public class StatelessSessionRootResource { @Context private UriInfo ui; @GET public String get() { return "GET: " + ui.getRequestUri().toASCIIString(); }}
  71. 71. What is GlassFish ? • Open Source Community > Users, Partners, Testers, Developers, ... > Started in 2005 on java.net • Application Server > Java EE 5 and 6 Reference Implementation > Enterprise Quality and Open Source > Full Commercial Support from Sun Creating Quick and Powerful Web Applications with MySQL, GlassFish, and NetBeans/Eclipse 71
  72. 72. State of GlassFish • GlassFish v2 > Java EE 5 Reference Implementation > Clustering, Load Balancing, High Availability > Web-based/CLI Administration Console > .NET 3.x/4.x Web services Interoperability > Current Release: 2.1 • GlassFish v3 > Java EE 6 Reference Implementation > Modular (OSGi), Embeddable, Extensible > Java EE, Rails, Grails, Django, ... > Current Release: v3 Preview Creating Quick and Powerful Web Applications with MySQL, GlassFish, and NetBeans/Eclipse 72
  73. 73. FISL10 - Fórum Internacional de Software Livre / JAVALI Conclusão  Facilidade de desenvolvimento  Compatibilidade com versões anteriores  Modelo de anotações  Alterações em todas camadas  GlassFish v3 Java EE 6 Reference Implementation  Modelo robusto para desenvolvimento de aplicações corporativas
  74. 74. FISL10 - Fórum Internacional de Software Livre / JAVALI Referências  Java Comunnity Process www.jcp.org  JavaOne http://www.cplan.com/javaone2009/contentcatalog/  Glassfish https://glassfish.dev.java.net/
  75. 75. FISL10 - Fórum Internacional de Software Livre / JAVALI Obrigado Fabio Velloso fabio@soujava.org.br
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×