Java EE 6: A Community Update

Documentos relacionados
JPA 2.0 e Servlet 3.0

EJB 3.1: A Community Update

JBoss Seam. Vinicius Senger Co-fundador Globalcode Alberto J Lemos (Dr. Spock) Instrutor Globalcode. Globalcode Open4Education

NOME DA APRESENTAÇÃO

JBoss Seam Um framework para Java EE 5. [ Tiago Motta Jorge ]

Academia Programador de Aplicações JAVA

Academia Programador Especialista JAVA

Aplicações Distribuídas

Capítulo 1 - Java EE 6 por alto - 1

Academia Programação JAVA

JAVA PARA WEB E EJB APLICAÇÕES WEB, SERVIDORES DE APLICAÇÃO, CONTAINERS WEB

Explorando os novos recursos de EJB 3.1. Fabio Velloso

Desenvolvimento para Web em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM Lamarck Heinsch Mestrando PPGI/CT/UFSM

Java EE 6. A revolução do. Um overview sobre as novidades da JSR 316. a r t i g o

Curso: Percurso Programação JAVA

Lidando com Java Obsoleto: Do Struts 1.0 ao CDI. Java na Crista da Onda

UMA EXPERIÊNCIA DE ADOÇÃO DO JAVA 6 WEB PROFILE NO DESENVOLVIMENTO DE UM SISTEMA PARA GERENCIAMENTO DE UMA CLÍNICA DE PSICOLOGIA

Experiência em missão crítica de missão crítica

2 Criar uma Enterprise Application que num módulo EJB irá conter um ou vários Beans.

Academia Programação JAVA

Academia Programação JAVA

Academia Programação JAVA

JPA - Java Persistence API. Entity. Entity Campos e Propriedades Entity Chaves Primárias Entity Associações. Entity Manager

JPA - Java Persistence API. Entity. Entity Campos e Propriedades Entity Chaves Primárias Entity Associações. Entity Manager

Fica expressamente proibido a reprodução ou utilização deste material sem a devida permissão ou consentimento do autor.

Web Services REST JAX-RS

Injeção de Dependências e Spring

Web Services REST. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS

Web Services no JEE 7. Prof. Fellipe Aleixo

Enterprise JavaBeansTM

AULA 07 HIBERNATE. Ao término desse capítulo você terá aprendido: Fundamentos do MVC Estrutura dos pacotes no NetBeans

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo

Engenharia de Aplicações Sistemas Interactivos 2009/10! JAVASERVER FACES 1.2. Mestrado em Informática Universidade do Minho! 31!

JPA Com Hibernate. Paulo Ricardo Lisboa de Almeida. 1 Universidade Positivo

Web Services REST e JSON


JPA: Persistência padronizada em Java

Introdução ao Desenvolvimento de

Aplicações Distribuídas

Mapeamento Lógico/Relacional com JPA

Introdução: EJBs de Sessão. Prof. Fellipe Aleixo

Objetivos. Aprender o que são JavaBeans e como podem ser usados em páginas JSPs Usando ações-padrão ao invés de scripts

Lista de Exercícios Dissertativo

Hibernate Anotations

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Desenvolvimento Web com Java. Sérgio Lopes Caelum -

Spring: Um suite de novas opções para Java EE

2ª Edição Décio Heinzelmann Luckow Alexandre Altair de Melo

REST RESTfulWeb Services JAX-RS

Arquitetura de Aplicações J2EE. Jorge Fernandes Outubro de 2003

JPA Passo a Passo. Henrique Eduardo M. Oliveira henrique@voffice.com.br. Globalcode Open4Education

Escrito por Neri Neitzke Qua, 21 de Dezembro de :34 - Última atualização Dom, 02 de Abril de :04

(UFF) JSF (I) TEPIS II

Java para Web & EJB. Teoria, prática e questões Módulo Introdução e Servlets

Lista de exercícios I - RESPOSTAS Servlets e banco de dados

Java para WEB com Struts 2 e Hibernate

UNIVERSIDADE FEDERAL DO PIAUÍ DEPARTAMENTO DE COMPUTÇÃO DISCIPLINA: ENGENHARIA DE SOFTWARE II PROFESSOR: ARMANDO SOARES

Componentes no Java EE

Tecnologias Web. Java Enterprise Edition

J2EE. Apresentado por Nuno Nunes. 25 de Novembro de 2004 TM 1

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M

Hibernate na sua aplicação JavaWeb

Implementar um exemplo de relacionamento entre classes um para muitos (1:N) e um para um (1:1). Sistema para uma Promotora de Evento Agenda Anual

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sumário. Java 2 Enterprise Edition. J2EE (Java 2 Enterprise Edition)

Prof. Fellipe Araújo Aleixo

Carlos S. Rodrigues Leonardo Lino Vieira Eric Felipe Barboza Antonio Vasconcellos

Web Technologies. Tópicos da apresentação

Eclipse MicroProfile for the Busy Developer


Enterprise Java Beans

Spring ORM- Object Relational Mapping Utilizando JPA Crislaine da Silva Tripoli

INE 5612 Professor: Frank Siqueira. Leonardo Silva Jean Ercilio Thiago

DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I Criação de Aplicativos Web. Luiz Leão

Java Persistence API. Entity Entity Campos e Propriedades Entity Chaves Primárias Entity Associações

Formação JAVA Web.

TDC2012. EJB simples e descomplicado, na prática. Slide 1

Mapeamento Objeto-Relacional

J820. Testes em J2EE com. Jakarta C A C T U S. argonavis.com.br. Helder da Rocha

Consulplan. Questões de concursos. Série Desenvolvimento de Sistemas. Questões de Desenvolvimento de Sistemas para o concurso do TSE 2012

Agilizando o processo de redeploy de aplicações Java

Desenvolvendo Portlets utilizando JSF, Ajax, Richfaces. Gustavo Lira Consultor 4Linux

DESENVOLVENDO APLICAÇÕES WEB COM JSP E JSTL. Peter Jandl Junior. Novatec

One-to-Many. Many-to-One. Many-to-Many

JPA Java Persistence API. Prof. Ramon Chiara

JPA Com Hibernate. Paulo Ricardo Lisboa de Almeida. Dados Transientes e Relacionamentos. 1 Universidade Positivo

Session Bean Stateful

DESENVOLVIMENTO COM JAVA EE E SUAS ESPECIFICAÇÕES


CONTEÚDO PROGRAMÁTICO

Transcrição:

Java EE 6: A Community Update Reza Rahman Autor, EJB 3 in Action Expert Group Member, Java EE 6 e EJB 3.1 Fundador, Cognicellence Julho de 2008

Java EE 6: Expandindo Horizontes >Java EE 5 > Facilidade de uso, annotations, liberdade do XML, expansão da API > EJB 3.0, JPA 1.0, JSF 1.0, JAX-WS 2.0 > A queda dos EJB 2.x Entity Beans > Java EE 6 > Podando: Uma maturidade saudável > Profiles: Um tamanho não serve para tudo > Estensibilidade: Facilitando para soluções não padronizadas > Inovação: Novas APIs, novas features, mais facilidade de uso > WebBeans, JSF 2.0, EJB 3.1, JPA 2.0, Bean Validation, Servlet 3.0, JAX- RS > Participação do SpringSource em alguns grupos JSR, incluindo Java EE 6 (JSR 317), do qual Rod Johnson é um membro

Podando > Um primeiro passo importante no ciclo de vida de um plataforma madura > A meta é deprecar APIs que estão obsoletas ou que sofreram substituição > Candidatos à poda: > JAX-RPC: Substituída pela popular API JAX-WS > EJB 2.x Entity Beans CMP: Descartada em favor da JPA > APIs serão consideradas opcionais, e posteriormente removidas > Grandes fornecedores podem escolher manter APIs deprecadas por algum tempo

Profiles > Sub-conjuntos específicos das APIs Java EE direcionados para ambientes específicos > Cada Profile é completamente integrado, simplesmente funciona, sem customizações, embora integração com recursos adicionais seja possível > Facilita a criação de servidores de aplicação modulares e lightweight compatíveis com Java EE > Apenas um Profile, o Web Profile foi inicialmente planejado > Porém, já existe amplo suporte a dois Profiles direcionados para desenvolvimento web, um minimal e um intermediate > É necessário seu feedback sobre como estes profiles deveriam ser!

Profiles Sugeridos API Minimal Profile Intermediate Profile Full Profile Servlet 3.0 JSP 2.2 JSTL 1.2 EL 1.2 JSF 2.0 WebBeans 1.0 EJB 3.1 JPA 2.0 JTA 1.1 JMS 1.1 JavaMail 1.4 JAX-WS 2.2 JAX-RS 1.0 JAXR 1.0 JAXB 2.2 JCA 1.6

Extensibility > Se encontra em um estágio muito preliminar > Extensibility e Profiles funcionam integrados > Profiles, particularmente o Web Profile, tornam possível estender a plataforma pela integração de APIs não padronizadas sem um risco sério de perda de compatibilidade, ou de fragmentação > Injeção de dependência transparente e anexação de interceptadores, ajustadas com fornecedores terceiros, podem facilitar a integração de tecnologias não padronizadas sem complicar para os desenvolvedores > Pode ser implementada de forma tão simples quanto acrescentar um JAR e aplicar annotations em classes/interfaces > APIs de provedores de serviços Java EE (SPIs) são um mecanismo de extensão existente, que pode ser impulsionado também > É necessário seu feedback sobre como Java EE Extensibility deveria ser!

Exemplo de Java EE Extensibility @Stateless public class PlaceBidBean implements PlaceBid { @SqlMapClientBuilder(configuration= sql-map-config.xml ) private SqlMapClient sqlmapclient; public void placebid(bid bid) { sqlmapclient.insert("insertbid", bid); @Local public interface PlaceBid { public void placebid (Bid bid);

Maiores Mudanças na API Java EE 6 > WebBeans 1.0 > Integração JSF/EJB 3/JPA > Java Server Faces (JSF) 2.0 > Facilidade de uso, adoção da tecnologia, novas features > Enterprise Java Beans (EJB) 3.1 > Facilidade de uso, novas features > Java Persistence API (JPA) 2.0 > Novas features > Bean Validation > Definição unificada de constraints de dados por aplicação > Servlet 3.0 > Facilidade de uso, novas features > Java API for RESTful Web Services (JAX-RS) 1.0 > API para desenvolvimento de web services REST, em adição ao suporte a SOAP do JAX-WS

WebBeans 1.0 (JSR 299) > Unifica modelos de programação JSF, JPA e EJB 3 > desenvolvimento web stateful, contextual > Conversações > Injeção de dependência robusta, type-safe > Melhorias no modelo de interceptadores > Meta-programação por Annotations

JSF Page com WebBeans <h:form> <table> <tr> <td>bidder</td> <td><h:inputtext value="#{bid.bidder"/></td> </tr> <tr> <td>item</td> <td><h:inputtext value="#{bid.item"/></td> </tr> <tr> <td>bid Amount</td> <td><h:inputtext value="#{bid.bidprice"/></td> </tr> </table> <h:commandbutton type="submit" value="add Bid" action="#{placebid.addbid"/> </h:form>

JPA Entity WebBeans Component @Entity @Component @Named("bid") @Table(name= BIDS ) public class Bid { @Id @GeneratedValue @Column(name= BID_ID ) public Long bidid; public String bidder; public String item; @Column(name= BID_PRICE ) public Double bidprice;

EJB 3.1 Session Bean WebBeans Component @Stateful @RequestScoped @Component @Named("placeBid") public class PlaceBidBean { @PersistenceContext private EntityManager entitymanager; @Current private Bid bid; public void addbid() { entitymanager.persist(bid);

Java Server Faces 2.0 (JSR 314) > Componentes customizados simplificados > Ótimo suporte a Facelets > Ótimo suporte a Ajax > Configurações por Annotations > Convenção sobre configuração > faces-config.xml opcional > Estágios de desenvolvimento estilo RAILS_ENV > Resources > Data Validation (JSR 303) > Melhorias de performance > Suporte a REST (JSR 311) > Vários outros

JSF Project Stages <context-param> <param-name>javax.faces.project_stage</param-name> <param-value>development</param-value> </context-param> javax.faces.application.projectstage Production Development UnitTest SystemTest Extension

JSF Resources Resource path: [/META-INF]/resources/ [localeprefix/][libraryname/][libraryversion/] resourcename[/resourceversion] Resource resource = FacesContext.getApplication().getResourceHandler().createResource(resourceName[,libraryName]); #{resource['<libraryname>:<resourcename>'] @ResourceDependency(name="style.css",library= actionbazaar") public class HeaderTabs extends UIComponentBase {...

Enterprise Java Beans 3.1 (JSR 318) > Interfaces opcionais para Session Bean > Singleton Beans com controle de concorrência > Timers declarativos e progrmáticos, estilo Cron > Invocações Assíncronas > Empacotamento WAR simplificado > Suporte Java SE > Nomes Globais JNDI Global JNDI padronizados > EJB Lite

Timers Declarativos Estilo Cron @Stateless public class NewsLetterGeneratorBean { @Resource private Session mailsession; @Schedule(second="0", minute="0", hour="0", dayofmonth="1", month="*", year="*") public void generatemonthlynewsletter() {...

Session Bean Assíncrono @Stateless public class OrderBillingBean {... @Asynchronous public Future<BillingStatus> billorder(order order) { try { bill(order); return new AsyncResult<BillingStatus>( BillingStatus.COMPLETE); catch (BillingException be) { return new AsyncResult<BilllingStatus>( BillingStatus.BILLING_FAILED);...

Invocação Cliente Assíncrona @EJB private OrderBillingBean orderbilling;... Order order = new Order();... Future<BillingStatus> future = orderbilling.billorder(order);... BillingStatus status = future.get();... if (status == BillingStatus.COMPLETE) { notifybillingsuccess(order); else if (status == BillingStatus.BILLING_FAILED) { notifybillingfailure(order);

Java Persistence API 2.0 (JSR 317) > Melhorias no mapeamento Objeto-Relacional > Collections, maps e listas ordenadas > Mapeamento one-to-many unidirecional > Tabelas de junção para one-to-one, many-to-one > Criteria API > Bean validation (JSR 303) > Adições na API EntityManager e na API de Query > Locking, loading Entity, clearing Entity, max results, first result > Cache de segundo nível > Mais propriedades e hints padronizados > JDBC, locking, caching

Mapeando Collections @Entity @Table(name= USERS ) public class User { @Id @GeneratedValue @Column(name= USER_ID ) public long userid; public String username; @Column(name= BIRTH_DATE ) public Date birthdate;... @ElementCollection @CollectionTable(name= ALIASES ) @Column(name= ALIAS ) public Set<String> aliases; @ElementCollection public Map<String, String> photos;

Relacionamento One-to-Many Unidirecional @Entity public class User { @Id @GeneratedValue public long id; public String username;... @OneToMany @JoinColumn(name= USER_ID ) public Set<Phone> phones; @Entity public class Phone { @Id @GeneratedValue public long id; public String type; public String number;...

Bean Validation (JSR 303) > Especifique constraints apenas uma vez através das camadas de aplicação > Constraint > Restrição em um bean, campo ou propriedade > Not null, between 10 and 45, email válido, etc > Avaliadas automaticamente por um framework > Útil em outras APIs Java SE/Java EE > JSF 2.0 > JPA 2.0 > EJB 3.1 > WebBeans

JPA Entity with Bean Validation @Entity @Table(name= BIDS ) public class Bid { @Id @GeneratedValue @Column(name= BID_ID ) public Long bidid; @NotNull @Length(max=30) public String bidder; @NotNull @Length(max=200) public String item; @Column(name= BID_PRICE ) @NotNull @Min(value=0.0, message= price negative ) public Double bidprice;

Servlet 3.0 (JSR 315) > Annotations desde o começo > web.xml opcional > Defaults inteligentes > Fragmentos web.xml modulares em jars > Adição programática de Servlets, Filters and Listeners através do ServletContext > Suporte a processamento assíncrono em Servlets > Suspende e retoma requests

Exemplo Servlet Annotations @Servlet(name= PlaceBidServlet urlmapping={ /bid, /place-bid ) public class PlaceBidServlet { @EJB private PlaceBid placebid; @GET public void onget(httpservletrequest request, HttpServletResponse response) { Bid bid = new Bid();... placebid.placebid(bid);...

Adição Programática de Servlet @ServletContextListener public class ActionBazaarListener { public void contextinitialized( ServletContextEvent event) { ServletContext context = event.getservletcontext(); context.addservlet( PlaceBidServlet", Place bid servlet", actionbazaar.placebidservlet", null, -1); context.addservletmapping( PlaceBidServlet", new String[]{"/place-bid");

Java API para RESTful Web Services (JSR 311) > Web services via REST, em vez de SOAP > Contrapartida REST do JAX-WS > Liberação da codificação de baixo nível você pode se focar na lógica central > Annotations desde o começo > Pode se integrar com WebBeans, EJB and JPA

Session Bean com JAX-RS @Stateless @Path("/webservices") public class PlaceBidBean { @PersistenceContext private EntityManager entitymanager; @PUT @Path("/bid/{bidder") public void placebid( @PathParam( bidder") String bidder, @QueryParam( item") String item, @QueryParam( bid_price") Double bidprice) { entitymanager.persist( new Bid(bidder, item, bidprice));

Resumo > Podando > JAX-RPC, EJB 2.x Entity Beans CMP > Profiles > Minimal e intermediate Web Profiles? > Extensibility > Injeção de dependência generalizada e anexação de interceptadores? > SPIs adicionais? > Inovação > WebBeans, JSF 2.0, EJB 3.1, JPA 2.0, Bean Validation, Servlet 3.0, JAX-RS > Sua ajuda é necessária > Envie comentários para jsr-316-comments@jcp.org!

Referências > Profiles in the Java EE 6 Platform, http://weblogs.java.net/blog/robc/archive/2008/02/profiles_in_the_1.html > Java EE 6, http://jcp.org/en/jsr/detail?id=316 > WebBeans, http://jcp.org/en/jsr/detail?id=299 > JSF 2.0, http://jcp.org/en/jsr/detail?id=314 > EJB 3.1, http://jcp.org/en/jsr/detail?id=318 > JPA 2.0, http://jcp.org/en/jsr/detail?id=317 > Bean Validation, http://jcp.org/en/jsr/detail?id=303 > Servlet 3.0, http://jcp.org/en/jsr/detail?id=315 > JAX-RS, http://jcp.org/en/jsr/detail?id=311