SlideShare une entreprise Scribd logo
1  sur  75
Télécharger pour lire hors ligne
Java Enterpise Edition
e as novidades da versão 6
                    Fabio Velloso
             fabio@soujava.org.br

                  JAVALI@FISL10
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/
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
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
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 a criação
  de aplicações para servidores, exigindo alta
  disponibilidade, robustez, segurança,
  performance, escalabilidade e
  interoperabilidade.
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                                                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
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.
FISL10 - Fórum Internacional de Software Livre / JAVALI




Java EE Timeline




                                                           Fonte: TS-5055 (JavaOne 2009)
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
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
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
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”
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)
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;"/>
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
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
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}
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
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
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) { } }
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) { } }
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
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>
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
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
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
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
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 {}
          }
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
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
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
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;
                                                                   }
                   }
            }
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}”/>
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)
FISL10 - Fórum Internacional de Software Livre / JAVALI




JEE 6 - Empacotamento simplificado
 JEE 5 – WEB e EJB                                                     JEE 6




                                                           Fonte: TS-5055 (JavaOne 2009)
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
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
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;
            }
          }
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1
 Session                                      Bean com Local Business Interface




                                                             Fonte: TS-4605 (JavaOne 2009)
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”);
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
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
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
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>
FISL10 - Fórum Internacional de Software Livre / JAVALI




EJB 3.1
 Exemplo:


          package org.soujava;

          @Stateless
          public class HelloBean implements Hello { ... }
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
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
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
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; } }                                       }
                                                               }
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
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
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
                                                            }
 }
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
              } }
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() { }
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
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
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”
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”)
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
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() {
                      }}
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
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);
}
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)
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
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
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();
           }}
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
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
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
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/
FISL10 - Fórum Internacional de Software Livre / JAVALI




                                                          Obrigado
                                                           Fabio Velloso
                                                            fabio@soujava.org.br

Contenu connexe

Tendances

Spring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaSpring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaMariana de Azevedo Santos
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8Helder da Rocha
 
GlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EEGlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EEBruno Borges
 
Java Server Faces 2 & Rich Faces 4
Java Server Faces 2 & Rich Faces 4Java Server Faces 2 & Rich Faces 4
Java Server Faces 2 & Rich Faces 4Bruno Garcia
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Helder da Rocha
 
Certificacoes java
Certificacoes javaCertificacoes java
Certificacoes javaBruno Garcia
 
A arquitetura modular do Java 9
A arquitetura modular do Java 9A arquitetura modular do Java 9
A arquitetura modular do Java 9Helder da Rocha
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Helder da Rocha
 
Java Server Faces
Java Server FacesJava Server Faces
Java Server FacesJoão Longo
 
JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com PrimefacesFabio Noth
 
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXF
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXFIntrodução ao JBoss Fuse 6.x: criação e implantação de um serviço CXF
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXFRafael T. C. Soares (tuelho)
 
The twelve factor apps and openruko
The twelve factor apps and openrukoThe twelve factor apps and openruko
The twelve factor apps and openrukoÉverton Ribeiro
 

Tendances (20)

Spring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaSpring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em Java
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8
 
GlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EEGlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EE
 
MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)
 
Java Server Faces 2 & Rich Faces 4
Java Server Faces 2 & Rich Faces 4Java Server Faces 2 & Rich Faces 4
Java Server Faces 2 & Rich Faces 4
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
 
Certificacoes java
Certificacoes javaCertificacoes java
Certificacoes java
 
GUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EEGUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EE
 
A arquitetura modular do Java 9
A arquitetura modular do Java 9A arquitetura modular do Java 9
A arquitetura modular do Java 9
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)
 
Java Server Faces
Java Server FacesJava Server Faces
Java Server Faces
 
Workshop05
Workshop05Workshop05
Workshop05
 
JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com Primefaces
 
GlassFish
GlassFishGlassFish
GlassFish
 
Enterprise php
Enterprise phpEnterprise php
Enterprise php
 
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXF
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXFIntrodução ao JBoss Fuse 6.x: criação e implantação de um serviço CXF
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXF
 
JBoss Fuse Workshop Desenvolvimento - Parte 1
JBoss Fuse Workshop Desenvolvimento - Parte 1JBoss Fuse Workshop Desenvolvimento - Parte 1
JBoss Fuse Workshop Desenvolvimento - Parte 1
 
Spring Framework
Spring FrameworkSpring Framework
Spring Framework
 
JBoss5 @ FISL
JBoss5 @ FISLJBoss5 @ FISL
JBoss5 @ FISL
 
The twelve factor apps and openruko
The twelve factor apps and openrukoThe twelve factor apps and openruko
The twelve factor apps and openruko
 

En vedette

Posimpresionismo
PosimpresionismoPosimpresionismo
Posimpresionismoyvonfer
 
Zirkuitu elektriokoak
Zirkuitu elektriokoakZirkuitu elektriokoak
Zirkuitu elektriokoakmarkelbeppo
 
Com donar-se d'alta al moodle
Com donar-se d'alta al moodleCom donar-se d'alta al moodle
Com donar-se d'alta al moodlePedro Pablo
 
Frukostmöte om digital marknadsföring hos Resultify
Frukostmöte om digital marknadsföring hos ResultifyFrukostmöte om digital marknadsföring hos Resultify
Frukostmöte om digital marknadsföring hos ResultifyResultify
 

En vedette (8)

Arte
ArteArte
Arte
 
Posimpresionismo
PosimpresionismoPosimpresionismo
Posimpresionismo
 
Zirkuitu elektriokoak
Zirkuitu elektriokoakZirkuitu elektriokoak
Zirkuitu elektriokoak
 
Hesperine diplômes
Hesperine diplômesHesperine diplômes
Hesperine diplômes
 
Com donar-se d'alta al moodle
Com donar-se d'alta al moodleCom donar-se d'alta al moodle
Com donar-se d'alta al moodle
 
Frukostmöte om digital marknadsföring hos Resultify
Frukostmöte om digital marknadsföring hos ResultifyFrukostmöte om digital marknadsföring hos Resultify
Frukostmöte om digital marknadsföring hos Resultify
 
vanguarda
vanguardavanguarda
vanguarda
 
Bruxelas
BruxelasBruxelas
Bruxelas
 

Similaire à Java EE 6 novidades e tecnologias

Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebElenilson Vieira
 
Desenvolvimento Web com JSF
Desenvolvimento Web com JSFDesenvolvimento Web com JSF
Desenvolvimento Web com JSFDalton Valadares
 
TechDay - Sistemas WEB em Java - Rogério N. Jr.
TechDay - Sistemas WEB em Java - Rogério N. Jr.TechDay - Sistemas WEB em Java - Rogério N. Jr.
TechDay - Sistemas WEB em Java - Rogério N. Jr.Rogério Napoleão Jr.
 
Jsf – Java Sever Faces
Jsf – Java Sever FacesJsf – Java Sever Faces
Jsf – Java Sever Facesbielgott
 
Navegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo javaNavegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo javaAndrei Tognolo
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer FacesEduardo Bregaida
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev IntroduçãoMarcio Marinho
 
CDI -Contextos e Dependências
CDI -Contextos e DependênciasCDI -Contextos e Dependências
CDI -Contextos e DependênciasWende Mendes
 
TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?Rafael Benevides
 
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_MeloUtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melothalesboss
 
Apresentação jsf 2.0
Apresentação jsf 2.0Apresentação jsf 2.0
Apresentação jsf 2.0Paulo Neto
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysDr. Spock
 

Similaire à Java EE 6 novidades e tecnologias (20)

Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias Web
 
Aula 1 apresentação
Aula 1   apresentaçãoAula 1   apresentação
Aula 1 apresentação
 
Tutorial Java EE
Tutorial Java EETutorial Java EE
Tutorial Java EE
 
Desenvolvimento Web com JSF
Desenvolvimento Web com JSFDesenvolvimento Web com JSF
Desenvolvimento Web com JSF
 
Serra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EESerra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EE
 
TechDay - Sistemas WEB em Java - Rogério N. Jr.
TechDay - Sistemas WEB em Java - Rogério N. Jr.TechDay - Sistemas WEB em Java - Rogério N. Jr.
TechDay - Sistemas WEB em Java - Rogério N. Jr.
 
Web Sphere
Web SphereWeb Sphere
Web Sphere
 
Jsf – Java Sever Faces
Jsf – Java Sever FacesJsf – Java Sever Faces
Jsf – Java Sever Faces
 
Introdução - Java WEB
Introdução - Java WEBIntrodução - Java WEB
Introdução - Java WEB
 
Navegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo javaNavegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo java
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer Faces
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 
CDI -Contextos e Dependências
CDI -Contextos e DependênciasCDI -Contextos e Dependências
CDI -Contextos e Dependências
 
TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_MeloUtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
 
Apresentação jsf 2.0
Apresentação jsf 2.0Apresentação jsf 2.0
Apresentação jsf 2.0
 
JavaServer Faces
JavaServer FacesJavaServer Faces
JavaServer Faces
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 
Ferranentas OWASP
Ferranentas OWASPFerranentas OWASP
Ferranentas OWASP
 

Java EE 6 novidades e tecnologias

  • 1. Java Enterpise Edition e as novidades da versão 6 Fabio Velloso fabio@soujava.org.br JAVALI@FISL10
  • 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. 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. 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. FISL10 - Fórum Internacional de Software Livre / JAVALI Java Platform
  • 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. FISL10 - Fórum Internacional de Software Livre / JAVALI Camadas JEE
  • 8. FISL10 - Fórum Internacional de Software Livre / JAVALI Servlet - Request e Response HTTP
  • 9. FISL10 - Fórum Internacional de Software Livre / JAVALI Java Web Technologies
  • 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. 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. FISL10 - Fórum Internacional de Software Livre / JAVALI Java EE Timeline Fonte: TS-5055 (JavaOne 2009)
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1  Session Bean com Local Business Interface Fonte: TS-4605 (JavaOne 2009)
  • 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. 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. 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. 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. 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. FISL10 - Fórum Internacional de Software Livre / JAVALI EJB 3.1  Exemplo: package org.soujava; @Stateless public class HelloBean implements Hello { ... }
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. FISL10 - Fórum Internacional de Software Livre / JAVALI Obrigado Fabio Velloso fabio@soujava.org.br