Jee6
-
Upload
fabiovelloso -
Category
Technology
-
view
1.839 -
download
0
Transcript of 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/
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
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
FISL10 - Fórum Internacional de Software Livre / JAVALI
Java Platform
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
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 JEEJSR 128Facilidade de desenvolvimentoSuporte visual de IDE'sModelo de componentes
Várias implementaçõesComunidade Open Source
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
FISL10 - Fórum Internacional de Software Livre / JAVALI
Java EE Timeline
Fonte: TS-5055 (JavaOne 2009)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
FISL10 - Fórum Internacional de Software Livre / JAVALI
JEE 6 - Empacotamento simplificado
Fonte: TS-5055 (JavaOne 2009)
JEE 5 – WEB e EJB JEE 6
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
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
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
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)
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
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”
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
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
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
FISL10 - Fórum Internacional de Software Livre / JAVALI
Exemplo:
package org.soujava;
@Stateless public class HelloBean implements Hello { ... }
EJB 3.1
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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/