Exercício-Programa 3: Utilização de EJB3 e JPA

Sistemas de Middleware - Primeiro Semestre de 2009

Descrição

Usando a arquitetura EJB3/JPA, desenvolva um protótipo de aplicação Internet voltada para vídeo-locadoras. Essa aplicação deve lidar com três tipos de entidades JPA: O uso de tipos de entidades distintos para Movie e MovieCopy captura a diferença entre um "filme abstrato" e um exemplar (cópia física) de filme, em BD (Blu-ray Disc), DVD ou VHS. O filme é o conteúdo de um BD, DVD ou VHS. O que você aluga e leva para casa é o exemplar, não o filme.

Especificação das Entidades e dos Relacionamentos

Um filme tem os seguintes atributos: Estes são os atributos de um exemplar de filme: Estes são os atributos de um usuário: Há um relacionamento "um para muitos" entre Movie e MovieCopy (pode haver muitos exemplares de um filme). No lado do Movie, esse relacionamento é representado pelo atributo copies. No lado do MovieCopy, ele é representado pelo atributo movie.

Há também um relacionamento "um para muitos" entre Customer e MovieCopy (um usuário pode alugar muitos BDs, DVDs ou fitas VHS). No lado do Customer, esse relacionamento é representado pelo atributo takenMovieCopies. No lado do MovieCopy, ele é representado pelo atributo taker.

Especificação do(s) Componente(s) Session Bean

Entidades JPA não são acessíveis a clientes remotos. Por esse motivo, todo acesso remoto a uma entidade deve ser mediado por algum session bean implantado no mesmo servidor de aplicações. Os session beans recebem chamadas remotas dos clientes e fazem chamadas locais às entidades JPA. Esse arranjo corresponde ao padrão de projeto conhecido como "sessão de fachada" ou "serviço de fachada".

Crie um ou mais componentes de serviço do modelo EJB3 (stateless session beans que ofereçam os seguintes serviços a clientes remotos:

As operações de busca de filme devem devolver um objeto auxiliar com todas as informações relevantes sobre o filme e sobre os exemplares do filme. De modo análogo, as operações de busca de usuário devem devolver um objeto auxiliar com os dados do usuário. Esses objetos auxiliares são denominados data transfer objects (DTOs). O uso de DTOs por uma sessão de fachada ou por um serviço de fachada pode reduzir significativamente o número de chamadas remotas. Esta é uma possível definição das classes dos DTOs correspondentes aos filmes (MovieDTO) e aos usuários (CustomerDTO):
    public class RentedMovieCopyInfo implements java.io.Serializable {
        public long movieCopyId;
        public String customerName;
        public String customerPhone;
        public java.util.Date returnDate;
    }

    public class MovieDTO implements java.io.Serializable {
        public long id;
        public String name;
        public String director;
        public java.util.List<String> genre;
        public java.util.List<String> cast;
        public short year;
        public short duration;
        public java.util.List<Long> inStoreCopies; // ids dos exemplares disponíveis
        public java.util.List<RentedMovieCopyInfo> rentedCopies;
    }

    public class CustomerDTO implements java.io.Serializable {
        public long id;
        public String name;
        public String phone;
    }

Especificação do Cliente

O cliente remoto deve deve ser um cliente Web que expõe ao operador de um browser toda a funcionalidade do sistema. Esse cliente interage com o operador e chama o(s) componente(s) EJB3 que oferece(m) os serviços de cadastramento, busca, locação e devolução. Ele deve ser implementado usando uma ou mais das seguintes tecnologias: servlets, JSP ou JSF. O cliente não precisa autenticar a identidade do operador do browser.

Servidor Java EE

O sistema deve rodar no JBoss Application Server, versão 5.0.1.GA ou 5.1.0.GA.

Observações

Note que o cliente Web se comunica com o(s) componente(s) EJB3 por meio de chamadas remotas. Isso significa que ele pode ser implantado num servidor de aplicações diferente daquele que contém as entidades JPA e o(s) componente(s) EJB3. (Na verdade o cliente Web não precisa rodar num servidor Java EE completo, ele requer apenas um container para servlets, JSP e JSF.) Evidentemente o cliente Web pode também ser implantado no mesmo servidor que contém a camada de entidades e a de serviços (EJB3). Para efeito de testes, esta é a alternativa mais simples.

É interessante pensar nas seguintes questões:

Bom trabalho!

FAQ

Questão 1: Pode fazer em grupo?
Resposta: Este trabalho deve ser feito em grupos de uma ou duas pessoas.

Questão 2: Pode haver grupo com mais de duas pessoas?
Resposta: Não.

Questão 3: O que exatamente deve ser entregue?
Resposta: Veja abaixo o ítem "Entrega".

Entrega

O trabalho deve ser entregue até 12/06, através do sistema Paca/Moodle.

Entregue um arquivo tar.gz ou zip que satisfaça os seguintes requisitos:

Valid CSS! Valid XHTML 1.0! Last modified: Wed May 27 11:42:29 BRT 2009