Jee6

75
Java Enterpise Edition e as novidades da versão 6 Fabio Velloso [email protected] JAVALI@FISL10

Transcript of Jee6

Page 1: Jee6

Java Enterpise Edition e as novidades da versão 6

Fabio Velloso [email protected]

JAVALI@FISL10

Page 2: Jee6

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/

Page 3: Jee6

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

Page 4: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

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

Agenda

Page 5: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Java Platform

Page 6: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Especificação de arquitetura para a criação de aplicações para servidores, exigindo alta disponibilidade, robustez, segurança, performance, escalabilidade e interoperabilidade.

Java Enterprise Edition

Page 7: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Camadas JEE

Page 8: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Servlet - Request e Response HTTP

Page 9: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Java Web Technologies

Page 10: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

JavaServer Faces

Framework MVC padrão de JEEJSR 128Facilidade de desenvolvimentoSuporte visual de IDE'sModelo de componentes

Várias implementaçõesComunidade Open Source

Page 11: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

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.

Enterprise Java Beans

Page 12: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Java EE Timeline

Fonte: TS-5055 (JavaOne 2009)

Page 13: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

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

Agenda

Page 14: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

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

Java Authentication SPI for Containers

Page 15: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Suporta o modelo de segurança declarativa de JEE Possibilita a implementação de protocolos complexos

como SOAP

TokensSAML Kerberos service tickets X509 CertificatesLiberty

Java Authentication SPI for Containers

Page 16: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Client

Verifica tokens ou assinaturas

Extraem datos Adiciona ao “Security

Context”

ServerAdiciona tokens e

assinaturaChama o Discovery para

localizar o serviço

Java Authentication SPI for Containers

Page 17: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Servlet Container ProfileLoginModule Bridge Profile

Define a integração e delega o processamento de autorização de segurança a um JAAS Login Module

SOAP ProfileProfiles a definir

Java Message Service RMI/IIOP (Internet Inter-ORB Protocol)

Java Authentication SPI for Containers

Page 18: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

JSR 314Final 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;"/>

JavaServer Faces 2.0

Page 19: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

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

JavaServer Faces 2.0

Page 20: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Mínimo de configuraçãoMais anotações menos XMLNavegação implícitaDeclaraçã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

JavaServer Faces 2.0

Page 21: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

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}

JavaServer Faces 2.0

Page 22: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

JSR 315Proposed Final DraftNon-blocking I/O Processamento assíncrono Maior número de usuários concorrentesAnotações para declarar Servlets, Filters,

Listeners e segurançaWeb.xml opcional, porém se utilizado suas

definições valem sobre as anotações

Servlet 3.0

Page 23: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

@WebServlet Classe anotada é um ServletPrecisa 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

Servlet 3.0

Page 24: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

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) { } }

Servlet 3.0

Page 25: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

@WebFilterClasse anotada é um filtroPrecisa declarar a “URL pattern” do filtroOutros 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) { } }

Servlet 3.0

Page 26: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

PluggabilityModularidade do web.xml com fragmentos Alterar parâmetros definidos via anotaçõesNão é necessário escrever todo o web.xml

Exemplos de uso:Logging e Filters de segurançaDeclarar Listeners para executar ações em

diferentes pontos da aplicação

Servlet 3.0

Page 27: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Exemplo: <web-fragment> <servlet> <servlet-name>hello</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> <listener> <listener-class>RequestListener</listener-class> </listener> </web-fragment>

Servlet 3.0

Page 28: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

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ícioCom <after> - ao final

Servlet 3.0

Page 29: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Asynchronous ServletsEvitar gargalos com recursos como

Conexão JDBCWeb ServicesJMSOutro recurso acessado pela aplicação

Retorna o processamento ao containerOutra thread ou callback retorna o resultado

paralelo executado em paralelo

Servlet 3.0

Page 30: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Programmatic Security Usado quando a segurança declarativa

não é suficienteMétodos de HttpServletRequest interface:

loginlogout getRemoteUser isUserInRole getUserPrincipal

Servlet 3.0

Page 31: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

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

Servlet 3.0

Page 32: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

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 {}

}

Servlet 3.0

Page 33: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

@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

Servlet 3.0

Page 34: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Contexts and Dependency Injection for JavaEE (anteriormente WebBeans)

Public Review BallotModelo unificado de injeção de dependência Modelo para uso integração entre camada

Web e transacionalPossibilita o uso direto de um EJB em

páginas JSFDefine uma Service Provider Interface (SPI)

para integração de novas anotações

JSR 299

Page 35: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

O que pode ser injetadoClasses 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

JSR 299

Page 36: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Nome definido em @Named

public

@Named(“hello”)

class Hello {

public String sayHello

(String name) {

return “hello “ + name;

}

}

JSR 299

Nome default da classe public

@Named

class Hello {

public String sayHello

(String name) {

return “hello “ + name;

}

}

@Named(“<nome>”) Habilita uso com Unified Expression language

expressions

Page 37: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

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}”/>

JSR 299

Page 38: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

JSR 318Proposed Final Draft – Março 2009 Versão final planejada para Q3 2009

Simplificar desenvolvimentoReduzir número de interfacesMinimizar uso de deployment descriptorsJava Persistence API (JPA) passa a ser

definida em uma JSR separada (JSR 317)

EJB 3.1

Page 39: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

JEE 6 - Empacotamento simplificado

Fonte: TS-5055 (JavaOne 2009)

JEE 5 – WEB e EJB JEE 6

Page 40: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Local Business Interfaces opcionaisEmpacotamento simplificadoAPI simplificada de EJB 3.1Portable JNDI Names Simple Component TestingPassam a ser opcionais CMP e JAX-RPC

EJB 3.1 EJB 3.1

Page 41: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Optional Local Business Interfaces Classe simples, sem uma interface localTodos métodos públicos são acessíveis

ao clienteInjeção de dependência com @EJB ou

lookup para a referência do objetoClient não chama new() do beanModelo de programação permanece igual ao com Local Business Interface

EJB 3.1 EJB 3.1

Page 42: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

EJB segue o mesmo modelo de desenvolvimento atual

@Stateless public class HelloBean { public String sayHello(String msg) { return “Hello “ + msg; } }

EJB 3.1

Page 43: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Session Bean com Local Business Interface

EJB 3.1 EJB 3.1

Fonte: TS-4605 (JavaOne 2009)

Page 44: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Uso no cliente por injeção de dependênciaChamando diretamente o EJB @EJB HelloBean hello; ... hello.sayHello(“FISL”);

JNDI Lookup @Resource SessionContext ctx;

HelloBean hello = (HelloBean)ctx.lookup(“hello”);

EJB 3.1

Page 45: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Subset de EJB 3.1 API para Web ProfilerExpansão da portabilidade de EJBs, sem

perda da portabilidadeMesma publicação pode ser feita no “Web

Profile” e “Full Profile”Sem alteração no modelo de

desenvolvimentoPossível pela simplificação do

empacotamento .war

EJB “Lite”

Page 46: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

EJB Profiler's

Lite

Local Session Bean

Annotations /ejb-jar.xml

CMT e BMT

Segurança declarativa

Interceptor

JPA 2.0/ JTA 1.1

Full (Lite e as seguintes funcionalidades)

Message Driven Beans

EJB Web Services endpoint

RMI-IIOP intereoperability

2.x e 3.x Remote view

2.x Local view

Timer Service

CMP e BMPAssynchronous Beans

Page 47: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

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

EJB 3.1

Page 48: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

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>

EJB 3.1 - Portable JNDI names

Page 49: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Exemplo:

package org.soujava;

@Stateless public class HelloBean implements Hello { ... }

EJB 3.1

Page 50: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

HelloBean empacotado em helloejb.jar e helloapp.ear

java:global/helloapp/helloejb/HelloBean java:global/helloapp/helloejb/HelloBean!

org.soujava.Hellojava:app/helloejb/HelloBean java:app/helloejb/HelloBean!org.soujava.Hellojava:module/HelloBean java:module/HelloBean!org.soujava.Hello

EJB 3.1

Page 51: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

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

EJB 3.1

Page 52: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

SingletonComponente instanciado uma única vez por

aplicaçãoCriado 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

EJB 3.1

Page 53: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Exemplo Singleton

@Singleton public class SharedBean { private SharedData shared; @PostConstruct private void init() { shared = ...; } public int getData() { return shared.data; } }

Exemplo Client

@Stateless public class FooBean { // Injeção da referência ao Singleton bean @EJB private SharedBean shared; public void foo() { int var = shared.getData(); } }

EJB 3.1

Page 54: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

SingletonNecessá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 ConcurrencyContainer habilita acesso total a instância e delega ao

desenvolvedor a responsabilidade de controle

É necessário definir um dos modelos

EJB 3.1

Page 55: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

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étodosEspecifica o tempo de bloqueio antes do timeout

EJB 3.1

Page 56: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Singleton

@Singleton

@Lock(READ)

public class SharedBean {

private SharedData shared;

public int getData() {

return shared.data;

}

@Lock(WRITE)

public void update(...) {

// update shared data

}

Singleton com Timeout

@Singleton

public class SharedBean {

private SharedData shared;

@Lock(READ)

@AccessTimeout(value=1, unit=SECONDS)

public int getData() {

return shared.data;

}

public void update(...) {

// update shared data

}

EJB 3.1

Page 57: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Bean Managed ConcurrencyControle 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

} }

EJB 3.1

Page 58: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

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() { }

EJB 3.1

Page 59: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

@DependsOnDefine um grau de dependência para

sequência de inicialização de EJBsExemplo:

@Singleton public class B { ... } @DependsOn(“B”) @Singleton public class A { ... }

Container deve garantir que A é inicializado após B

EJB 3.1

Page 60: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

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.1Automatic timer creation Cron-based scheduling

EJB 3.1 – Timer Service

Page 61: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Calendar-based timeoutSemântica similar ao Cron Criado automaticamente ou por programaçãoNamed attributes

second, minute, hour (default = “0”)

dayOfMonth, month, dayOfWeek, year (default = “*”)

Attribute SyntaxSingle value : minute = “30” Lista : month = “Jan, Jul, Dec” Faixa : dayOfWeek = “Mon-Fri” Wild card : hour = “*” Incremental : minute = “*/10”

EJB 3.1 – Timer Service

Page 62: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

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”)

EJB 3.1 – Timer Service

Page 63: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

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

EJB 3.1 – Timer Service

Page 64: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

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() {

}}

EJB 3.1 – Timer Service

Page 65: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

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

EJB 3.1 – Embeddable API

Page 66: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

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);

}

EJB 3.1 – Embeddable API

Page 67: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Java API for RESTful Web ServicesJSR 311Objetivos:

Suporte a RESTful em JavaProgramação declarativa

Modelo de anotações

Facilitar o desenvolvimentoJSE5 e JEE5 ou superior Integrado ao JEE6 (JSR 313)

JAX-RS

Page 68: Jee6

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

Page 69: Jee6

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

Page 70: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

EJB Session Bean como serviço RESTDisponível no JEE 6Exemplo: @Stateless

@Path("ssb")

public class StatelessSessionRootResource {

@Context private UriInfo ui;

@GET

public String get() {

return "GET: " + ui.getRequestUri().toASCIIString();

}}

JAX-RS - EJB

Page 71: Jee6

Creating Quick and Powerful Web Applications with MySQL, GlassFish, and NetBeans/Eclipse 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

Page 72: Jee6

Creating Quick and Powerful Web Applications with MySQL, GlassFish, and NetBeans/Eclipse 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

Page 73: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

Conclusão

Facilidade de desenvolvimentoCompatibilidade com versões anterioresModelo de anotaçõesAlterações em todas camadasGlassFish v3

Java EE 6 Reference Implementation

Modelo robusto para desenvolvimento de aplicações corporativas

Page 74: Jee6

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/

Page 75: Jee6

FISL10 - Fórum Internacional de Software Livre / JAVALI

ObrigadoFabio Velloso

[email protected]