CDI. Injeção de Dependência e Gerenciamento de Contextos no Java EE 6

Tamanho: px
Começar a partir da página:

Download "CDI. Injeção de Dependência e Gerenciamento de Contextos no Java EE 6"

Transcrição

1 artigo CDI Injeção de Dependência e Gerenciamento de Contextos no Java EE 6 Alessandro Lazarotti (alazarot@redhat.com) Instrutor e consultor na divisão JBoss da Red Hat Brasil. Trabalha com Java Corporativo desde 2003 envolvido com arquitetura, análise, P&D de soluções baseadas em open source e lecionando treinamentos e workshops sobre tecnologia em geral. á algum tempo na plataforma Java, a utilização de frameworks que proveem uma implementação do pattern Dependency Injection (DI), ( html#inversionofcontrol) tem sido uma prática comum em vários projetos. Baixo acoplamento entre objetos, facilidade na criação de testes, códigos mais limpos são algumas das muitas vantagens na utilização deste pattern. Porém, por não serem soluções baseadas em especificações, cada framework possui sua maneira própria de trabalhar com DI, sendo muitas vezes incompatíveis entre si. No JavaEE 6, com a padronização da injeção de dependência, seu poder é levado ao extremo podendo ser utilizado de maneira intercambiada entre classes java convencionais (POJOs) e componentes como Servlets, EJBs e Managed Beans. Agora é possível injetar um EJB em uma classe java simples, entre outras funcionalidades. J 0 SFTQPOTÈWFM QPS FTUB OPWJEBEF Ï B +43 i$poufyut BOE %FQFOEFODZ Injection for the JavaTM EE platform, ou simplesmente CDI. Esta nova especificação dita a interação entre os tradicionais componentes JavaEE e POJOs em uma aplicação, além de definir o ciclo de vida de tais instâncias através da declaração de escopos para seus objetos gerenciados. Uma entre as mais aguardadas novidades dentro da nova plataforma JavaEE 6 é a especificação CDI. Trazendo ideias de frameworks, como Google Guice e JBoss Seam, o CDI promete revolucionar o modelo atual de desenvolvimento de sistemas corporativos. Este artigo apresentará, por meio de exemplos, os principais aspectos desta especificação. CDI também é responsável por: t 1FSNJUJS RVF RVBMRVFS VN EF TFVT PCKFUPT HFSFODJBEPT TFKBN BDFTsíveis diretamente por uma interface JSF ou JSP através de Unified Expression Language (EL). t 0GFSFDFS OPWP NFDBOJTNP EF EFDMBSBÎÍP EF JOUFSDFQUBEPSFT GSBDBmente acoplados. t )BCJMJEBEF EF iefdpsbsw PCKFUPT JOKFUBEPT t 6N NPEFMP EF OPUJmDBÎÍP EF FWFOUPT t 6N OPWP DPOUFYUP XFC TPNBOEP BP 3FRVFTU "QQMJDBUJPO F 4FTsion, chamado de Conversation. t 'PSOFDFS VN DPOKVOUP EF 41* 4FSWJDF 1SPWJEFS *OUFSGBDF QBSB QPTsibilitar extensões portáveis. A implementação de referência desta especificação é mantida pela divisão JBoss da Red Hat, sob o nome Weld, e está hospedado no mesmo domínio do Seam Framework (ver em referências). Vamos começar a explorar os aspectos do CDI por sua base, a definição de um objeto gerenciável por esta especificação, o Bean. 35

2 Você precisa de Beans Para habilitar o CDI em uma aplicação ou serviço JEE 6, deve-se inserir no projeto o arquivo: META-INF/beans.xml. Este arquivo, mesmo vazio, é o que será rastreado por um servidor de aplicação para associar os serviços do CDI com o pacote implantado, seja jar, war ou ear. Uma vez tendo uma aplicação CDI, todos os beans do projeto passam a ser gerenciados pelo servidor de aplicação. Mas o que é de fato um bean? O JavaEE 6 define dois tipos de beans passíveis de serem manipulados pelo CDI: Managed Beans e Session Beans. Managed Beans Diferente do que possa parecer pela semelhança na nomenclatura, essa categoria de bean não tem algo haver com JSF. No CDI, um bean do tipo Managed Bean é qualquer classe java que: Como pode ser observado, a maioria dos POJOs podem ser encarados como sendo Managed Beans, sendo que nenhuma anotação extra é necessária para tal. Uma vez encontrado o arquivo beans.xml, qualquer classe java com as características acima passam a ser gerenciadas pelo CDI. A nova especificação define também que qualquer Managed Bean suporta a implementação dos métodos de callback a seu ciclo de vida, (invocado antes da instância do bean ser destruída). Um servlet container, como o Tomcat, não é obrigado por especificação a possuir suporte a CDI, mas implementações desta especificação, como o Weld, possuem extensões que possibilitam o deploy neste tipo de ambiente. A principal diferença de uma aplicação CDI em um servlet container ou em um servidor de aplicação JavaEE 6, é que no último os beans do tipo Managed Beans podem se valer de enquanto nos servlet containers você pode não se valer, por exemplo, de serviços como injeção de contexto de persistência. O novo web profile, exigido pela especificação JavaEE 6 para servidores de aplicações, possui suporte a CDI. Session Beans Session Beans são componentes gerenciados pelo servidor de aplicação definidos pela especificação Enterprise JavaBeans (ver nesta edição o artigo mais seu gerenciamento de estado é sua especificação e não o CDI. Contudo, todas as funcionalidades expostas para um bean do tipo Managed Bean também é válida para o bean do tipo Session Bean, como injeção de dependência, notificação de eventos, CDI Interceptors e CDI Decorators. Uma vez que tanto Managed Beans quanto Session Beans são considerados CDI Beans, um pode ser injetado ou responder a eventos disparados pelo outro, sem qualquer distinção ou restrição. Dependency Injection public class RelatorioGerencial{ RelatorioGerencial relatoriogerencial; public void gerarrelatorio() { Nesta primeira listagem, é injetado o bean RelatorioGerencial no bean foi preciso inserir nenhuma anotação de classe especial, já que por definição ambas as classes obedecem ao padrão managed beans do CDI. Toda DI na especificação é baseada nos tipos dos beans. No exemplo da injetado. Isso é diferente de frameworks como o JBoss Seam até sua ver- também válido para injetar RelatorioGerencial em RelatorioService. public class RelatorioGerencial Nesta listagem, RelatorioGerencial também é injetado em RelatorioService, uma vez que ele implementa a interface Relatório. É correto afirmar que RelatorioGerencial é um tipo de: (a) Object (de maneira implícita, 36

3 Desta forma, ele é elegível para qualquer tentativa de injeção na qual um destes tipos é o alvo a ser injetado. Restrigindo tipos O desenvolvedor pode optar por restringir apenas qual tipo da sua hierarquia poderá ser elegível para alguma injeção. Isso é realizado através Listagem 3. Restringindo o bean ao tipo public class RelatorioGerencial Restringindo o tipo do bean, apenas alvos a serem injetados que correspondem com exatidão aquele tipo receberão sua instância, independentemente de sua classe pai ou interface. Desta forma, o bean Relatorio- Gerencial, como é declarado na Listagem 3, não poderia ser injetado em de deployment. Resolvendo ambiguidades existe mais de um bean que satisfaz um mesmo alvo de injeção, podemos ter outro problema. A Listagem 4 ilustra essa situação. Listagem 4. Tipos ambíguos. public class RelatorioGerencial public class RelatorioFuncional implements Relatorio{ requer algum Relatorio? Na verdade, nenhum, pois um erro em tempo de deployment mencionando: Injection point has ambiguous dependencies será lançado. Para o CDI poder realizar a resolução de qual bean deve ser injetado, o desenvolvedor deve fornecer no momento da injeção uma segunda anotação para desfazer a ambiguidade. A base para essa anotação é uma implementa- para dizer qual o bean correto a ser aplicado em determinada injeção. Na realidade todo bean que não possui um qualificador, ou seja, não - * Criando anotação Gerencial, do tipo Gerencial { * Criando anotação Funcional, do tipo Funcional{ * Definindo um bean como public class RelatorioGerencial * Definindo um bean como public class RelatorioFuncional * Resolvendo Relatorio relatorio; Mais sobre a CDI Dependency Injection Como pode ser observado, a especificação CDI define uma maneira bem controlada de resolução de tipos a serem injetados nas dependências de um bean. O nome ostentado pela especificação quanto ao algoritmo utilizado é Typesafe Resolution. A influência direta por tal mecanismo tipado para DI é o framework Google Guice, e as vantagens são muitas: prevenção contra erros de injeção em tempo de execução, apoio de ferramentas IDE para produtividade, clareza nos códigos, entre outros. De maneira geral, a injeção é realizada de três formas: injeção por atributo, por método set ou por construtor. Em qualquer um dos modos, é possível utilizar qualifiers para resolver ambiguidades na injeção. A Listagem 6 exemplifica os tipos de injeção. 37

4 Listagem 6. Tipos de injeção. //injeção por método public void setrelatorio(relatorio relatorio) { this.relatorio = relatorio; //injeção por public RelatorioService(Relatorio relatorio) { this.relatorio = relatorio; //injeção por construtor usando public RelatorioService(@Gerencial Relatorio Relatorio relatoriofuncional) { this.relatoriogerencial = relatoriogerencial; this.relatoriofuncional = relatoriofuncional; Beans contextuais O desenvolvedor de aplicações web está acostumado a lidar com escopos request, session ou application. Chamamos o conjunto de objetos associados a estes escopos de contexto ou, em inglês, Context. No CDI, todo bean está necessariamente dentro de algum contexto, que delimita sua visibilidade para o resto da aplicação (incluindo os aspectos relacionados à DI). A Listagem 7 exibe um bean em escopo de sessão. Listagem 7. Bean no escopo de private Relatorio relatorio; Sempre que ocorrer a alteração de estado de um bean, isso se reflete em seu contexto. Todos que possuírem uma referência a este mesmo bean através de DI pelo seu escopo, terá este seu novo estado na instância. O CDI especifica quatro tipos de escopos: ser ela: invocações ao método service() de qualquer Servlet ou dofil- - Listagem 8. Bean no de mensagens para algum EJB MDB. É de visibilidade exclusiva a cada cliente do contexto, não podendo, portanto, compartilhar o estado de suas instâncias com múltiplos clientes. A duração do contexto atrelado a este escopo é de apenas uma requisição. método service() de qualquer Servlet ou dofilter() de qualquer servlet tlistener ou AsyncListener. Assim como RequestScoped, tem visibilidade exclusiva a cada cliente. A duração do contexto atrelado a este escopo é a mesma da sessão web de um usuário, podendo ser destruída por seu timeout ou por chamada a httpsession.invalidate(). de web service, invocações remotas e assíncronas de EJB, execução de EJB timeouts, entregas de mensagens JMS e execução de listeners como ServletContextListener, HttpSessionListener, AsyncListener ou ServletRequestListener. Este escopo é compartilhado por todas as threads de uma aplicação, ou seja, todos os usuários têm a mesma visibilidade do estado de objetos sobre este escopo. O contexto para este escopo é destruído quando a aplicação se encontra em estado indisponível. quer request JSF, porém pode ser extendido através da CDI SPI (Service Provider Interface) para outros frameworks web. O contexto Conversation geralmente é encarado como um meio-termo entre Session e Request, podendo armazenar o estado dos beans entre múltiplas requisições, exclusiva ao cliente, mas por um período menor do que a sessão. Tal período pode ser definido por timeout ou por demarcação programática da vida útil deste contexto, através da invocação dos métodos conversation.begin() e conversation.end(). A Listagem 8 exibe um bean em escopo de conversação com estas Relatorio relatorio; Conversation conversation; // outros atributos public void gerarrelatorio(.. ){ conversation.begin(); public void downloadrelatorio(.. ){ public void destroy() { 38

5 No exemplo da Listagem 8, um bean do tipo Stateful SessionBean foi utilizado com o escopo Conversation. Quando for executado o método gerarrelatorio(), o estado deste bean será mantido no contexto de conversação independentemente do número de requisições posteriores. Ao executar downloadrelatorio(), o estado do objeto será descartado, então o próprio CDI irá invocar nitivamente a instância do Session Bean. O nome dado na especificação para este tipo de comportamento em uma conversação, demarcado pelas fronteiras conversation.begin() e conversation.end() é Long-Running Conversation. Esta é uma rara situação na qual o desenvolvedor é capaz de controlar o ciclo de vida de um bean. Nos outros contextos, a gerência do estado de uma instância e sua destruição é dada sempre pelo container. Embora um Session Bean seja utilizado nesta listagem, também poderia ser ve (mas lembre-se, o desenvolvedor não poderá se valer de serviços exclusivos a EJBs como thread pooling, chamada assíncrona, passivação gerenciada por um servidor de aplicação etc. ). Se a demarcação conversation.begin() não for definida em algum método, como em gerarrelatorio() da Listagem 8, a conversação será do tipo transiente e irá durar o ciclo de apenas um request. O pseudo escopo Dependent Como já mencionado, todo bean CDI é contextual. Mesmo se não for definido explicitamente um escopo para o objeto, ele receberá de forma implícita o cha- ciclo de vida dependente do escopo do objeto a qual ele é injetado, quando do CDI, é correto afirmar que um objeto do tipo RelatorioGerencial é um mana- Porém, mesmo se um bean possuir um escopo definido, ainda sim é possível injetá-lo de forma dependente ao contexto de outro bean, através public class private Relatorio @Gerencial Relatorio novorelatorio; latoriogerencial, um no contexto session e outro (novorelatorio) no contexto request, por possuir escopo dependente. Produzindo Beans class Configuracao { private TipoDeRelatorio Relatorio obtemrelatorio(){ switch (tipoderelatorio) { case GERENCIAL: return new RelatorioGerencial(); case FUNCIONAL: return new RelatorioFuncional(); default: return private Relatorio relatorio; class Configuracao { private TipoDeRelatorio Relatorio obtemrelatorio( RelatorioGerencial gerencial, RelatorioFuncional funcional){ switch (tipoderelatorio) { case GERENCIAL: return gerencial; case FUNCIONAL: return funcional; default: return null; Como já descrito, chamamos de bean no CDI classes Java simples, com as restrições definidas no começo deste artigo, além dos Session Beans. Entidades JPA que possuem ciclo de vida gerenciado por um contexto de persistência ou classes da própria API da linguagem Java, como coleções, não são por natureza beans. Contudo, é possível expormos qualquer tipo de classe como beans con- 39

6 ferramenta poderosa de polimorfismo, mudando o comportamento de sua como um método fábrica. Um detalhe nesta listagem é que as implementações de Relatório são geradas a partir do operador java new, e não pelo CDI. Desta forma, no momento que são instanciados não é possível utilizar interceptadores CDI ou realizar algum tipo de injeção em seus construtores. Para driblar isso, podemos utilizar injeção Outra forma de expor rapidamente um objeto como managed bean, é - class Configuracao @Desenvolvedor static String dev = Lazarotti ; Destruindo Beans public class RelatorioEntityManager RelatorioDataBase ) EntityManagerFactory emf; Nesta listagem, o método encerrar é chamado automaticamente pelo CDI quando a conversação associada ao bean EntityManager com quali- public class LoggerInterceptor { Logger logger = Interceptors Interceptors são classes que disponibilizam um pré-processamento que anteveem a execução de um método de um bean, de forma automática. Geralmente estes pré-processamentos (ou pós) são comuns a várias instâncias, o que chamamos de interesses transversais de comportamento. O maior dos problemas nas aplicações não-cdi é que o modelo de Interceptor padrão na plataforma Java EE 5 é intrusivo. Veja um public Object logar(invocationcontext context) { logger.debug( Executando o metodo + context.getmethod()); @RelatorioDataBase public EntityManager criar() { return emf.createentitymanager(); public void EntityManager entitymanager) { return emf.createentitymanager(); Um bean sempre é destruído pelo CDI. Quando um contexto se encerra, como um final de request ou de sessão, por exemplo, os bens são finalizados apropriadamente pelo ciclo de vida CDI. Contudo, quando um bean é inicializado momento em que o bean é destruído, assim recursos alocados na criação da instância podem ser encerrados de maneira correta nestes. Nesta listagem todos os métodos de RelatorioService serão interceptados por LoggerInterceptor, incluindo gerarrelatorios(). Um problema visível nesta tradicional implementação é que a classe RelatorioService está atrelada de forma muito forte a LoggerInterceptor, o que pode dificultar tarefas como codificação de testes. Inspirado no modelo de interceptadores presentes no framework JBoss Seam, o CDI traz em sua especificação um modelo menos acoplado para a codificação, chamado de Interceptor Bindings, além de fornecer um modo Note que em nenhum momento é colocado de forma explícita a utilização de LoggerInterceptor para RelatorioService. Todos interceptors no CDI são por padrão desabilitados. Para habilitar um interceptor é necessário incluir a classe Interceptor dentro do arquivo beans. 40

7 A ordem em que os interceptors aparecem no arquivo beans.xml é a ordem de execução dos mesmos. Para remover a execução de um interceptador para determinado ambiente (de testes, por exemplo), basta removê-lo do arquivo. * Criando anotação Logged, do tipo class LoggerInterceptor { Logger logger public Object logar(invocationcontext context) { logger.debug( Executando o metodo + context.getmethod()); <beans xmlns= xmlns:xsi= xsi:schemalocation= com/xml/ns/javaee/beans_1_0.xsd > <interceptors> <class>br.com.mundoj.cdiapp.securityinterceptor</class> <class>br.com.mundoj.cdiapp.loggerinterceptor</class> </interceptors> </beans> Decorators Decorator é um padrão de projeto catalogado no livro Design Pattern: Elements of Reusable Object-Oriented Software, de quatro conhecidos autores quase sempre referenciados como Gang Of Four, ou simplesmente GoF (veja na edição anterior uma excelente entrevista com esta gangue ). Como objetivo deste padrão, está descrito: Atribuir responsabilidade adicionais a um objeto dinamicamente, é exatamente isso que o CDI proporciona ao desenvolvedor, com sua implementação de Decorator. A diferença entre um Decorator e um Interceptor é que os interceptadores são para regras comuns a vários objetos da aplicação, como: segurança, transação, log e demais serviços de infraestrutura não dependentes de regras de negócio de um objeto específico. Diferente deste aspecto, um Decorator conhece detalhes do objeto a ser interceptado (decorado) e sua implementação é dependente dos dados em tempo de execução deste objeto, podendo, com base nisso, lhe dar novas características de forma dinâmica. No CDI, a especificação dá um nome para o alvo a ser interceptado por um Decorator: Delegate Injection Point. Para melhor entender public class RelatorioServiceDecorator RelatorioService relatorioservice; service correio; if(!ehumdiautil(relatorioservice.getrelatorio().getdata()) ){ correio.enviarmensagem( Relatorio + relatorioservice.getrelatorio().getnome() + sendo gerado fora do expediente ).para(admin); // continuar com a execução relatorioservice.gerarrelatorio(); Neste exemplo, RelatorioService está sendo decorado por RelatorioService- relatório seja feita fora de um dia útil, uma mensagem é enviada para algum administrador do sistema. Veja que um objeto Decorator, assim como os Interceptors, são beans CDIs comuns, logo podem usufruir de qualquer tipo de injeção, assim como podem ser definidos um contexto para si. Se nenhum for definido, ele terá escopo dependente do escopo do bean a ser decorado. Uma das injeções em um Decorator é obrigatória, é o que se trata de Delegate Delegate em RelatorioService, define que ele é o bean a ser interceptado. em um Decorator. Um Decorator deve ter a assinatura de método idêntica ao método que se de- pode opcionalmente se valer de implementar a mesma interface do objeto decorado, ou na falta de uma interface, estender o bean e sobrescrever o método a interceptar. Pode ser processado qualquer trecho de código no método veja que o código comentado com //continuar a execução faz uma chamada explícita ao método do bean decorado, isso garante que o fluxo da execução no Decorator continue para aquela instância de bean. Com sua omissão, quando invocado o método gerarrelatorio(), sua execução iria até o Decorator e nunca seria chamado de fato o método que está no bean. 41

8 Diferente dos Interceptors, um Decorator é definido para tipos não-ambíguos. Quando é definido um Delegate Injection Point, este terá que possuir todos os Qualifiers necessários para resolver as possíveis ambiguidades e caso isso não ocorra uma exception será lançada informando ambiguidade. Se for preciso interceptar chamadas generalizadas a tipos de beans, utilize os Interceptors. Assim como os Interceptors, os Decorators precisam ser declarados em beans. <beans xmlns= xmlns:xsi= xsi:schemalocation= com/xml/ns/javaee/beans_1_0.xsd > <decorators> <class>br.com.mundoj.cdiapp.relatorioservicedecorator</class> </decorators> </beans> Eventos Embora a DI permita um código com baixo acoplamento, sem o instanciamento explícito de um objeto no código, às vezes ainda acabamos por ter que compor um objeto com outro, sem que na modelagem este relacionamento RepositorioDeRelatorios repositorio; correio;... repositorio.adicionar(relatorio); correio.enviarmesagem( O relatorio requisitado esta concluído e disponível no ftp ).para(relatorio.getusuario().get ()); Na listagem, RelatorioService possui um repositório de relatórios que pode armazenar o relatório gerado em um ftp, e então mandar um mensagem de notificando o usuário que seu relatório está disponível. Porém, para alguns arquitetos, a dependência do bean RepositorioDeRelatorios e pode não parecer o melhor dos designs para este código, isso poderia ser evitado. Outro ponto é que o método gerarrelatorio() da classe RelatorioService está com responsabilidades demais. Uma solução elegante neste caso seria aplicar um evento dizendo que o relatório está pronto, e fazer com que observadores a este evento realizem suas ações específicas de forma automática. PARAMETER) Pronto { public class RepositorioDeRelatorios { public void public class Service implements public void Relatorio relatorio){ enviar( O relatorio requisitado esta concluído e disponível no Event<Relatorio> relatorioevent;... relatorioevent.fire(relatorio); Pronto. Tanto RepositorioDeRelatorios como Service possuem observadores de eventos, para quando um relatório atingir o estado de pronto realizar Deve-se injetar a interface javax.enterprise.event.event, seguida de um qualifer do evento na classe responsável por executar a ação a ser capturada fire(event) que de fato irá disparar o evento. Acessando beans em páginas web É possível acessar beans CDI de qualquer meio que suporte a notação Java de Expression Language (EL), como JSP e JSF. Em aplicações JavaServer Faces, mesmo os beans do tipo EJB Session Beans podem ser acessados diretamente pelas páginas, sem ter a necessidade da criação de classes Para acessar qualquer bean CDI em uma página, é necessário anotá-la o bean acessível por EL, todas demais features da especificação, como DI, 42

9 contextos, interceptors, decorators e outros, continuam existindo mesmo via EL será o mesmo nome do bean, porém iniciando com a primeira uma página JSF. Se não fosse definida a String gerenciadorrelatorio gerenciadorrelatorio ) <h:commandbutton action= #{gerenciadorrelatorio.gerarrelatorio value= Gerar Relatorio immediate= @Target(TYPE) DAO public class RelatorioDao extends BaseDao { Agrupando características de um public void salvar(relatorio relatorio){ Facilmente pode ser identificado em sistemas de 'n' camadas, tipos de objetos que apresentam características semelhantes. Geralmente essas características são associadas a responsabilidades comuns a objetos da mesma camada. Alguns exemplos disso são beans que atuam nas páginas JSF, que sempre pos- possuem seus métodos transacionais se valendo de Interceptors Bindings além de poderem conter segurança associada a sua execução, entre muitos outros exemplos. O CDI oferece em sua especificação a possibilidade de unir as características comuns dos beans, através da definição de Stereotypes. Um Stereotype pode conter vários Interceptors, um escopo padrão, nomeação para acesso via EL, a definição se o bean a qual é aplicado possui implementa- é criado um Stereotype DAO e aplicado a um bean. A especificação traz por padrão uma implementação de Stereotype chamado Model para ser utilizado em web frameworks MVC. A METHOD, FIEL) Model { Deployments alternativos O CDI permite que o desenvolvedor trabalhe com implementações alternativas de seus beans, podendo selecionar as versões apropriadas no momento de deployment. Isso pode ser útil em ambientes de desenvolvimento nos quais nem todos os recursos podem estar disponíveis ao sistema, como integração a serviços de terceiros, ou mesmo para realizar tarefas associadas a testes. Para construir uma versão alternativa de um objeto, você deve: estender a implementação original do bean, sobreescrever os métodos a serem reim- Porém, se o bean a ser substituído no deployment da aplicação possuir instância do bean em todo o sistema. Isso acontece porque um bean alternativo não herda todos os metadados de sua classe pai. Para que um segundo bean substitua completamente outro bean, além de estendê-lo ele tem que possuir suas anotações. Uma maneira simples de fazer isso é através da ano- pai. Outro ponto que pode ser incômodo na definição de Alternatives, é a declaração de cada um em beans.xml. Esta tarefa pode ser simplificada com a criação de Stereotypes, assim pode-se habilitar ou desabilitar um grupo que utiliza Stereotype e Specializes. Considerações finais Como pode ser notado, as novidades são muitas e afetam diretamente o design e comportamento das aplicações como: aumento da testabilidade de sistemas ou serviços, diminuição do acoplamento entre soluções, aumento da expressividade do código, simplificação da comunicação entre componentes da plataforma JavaEE, diminuição de problemas em runtime através da Typesafe Resolution etc. De modo geral, da persistência à apresentação, toda a plataforma JEE 6 é afetada diretamente por esta especificação. Cada um dos tópicos da especificação apresentados neste artigo podem ser explorados com mais profundidade pelo desenvolvedor que deseja trabalhar com cobrindo todos os aspectos da tecnologia. Além desta leitura, recomendo o download da implementação de referência Weld, que possui aplicações-exemplos que podem ser utilizadas como ponto de partida para um projeto CDI. Ainda sobre Weld, sua documentação é bem completa e pode ser uma excelente fonte de consulta para o desenvolvedor. Alguns Maven Archetypes para iniciar um 43

10 @Alternative public class RelatorioServiceMock extends RelatorioService System.out.println( Sendo executado RelatorioService alternativo, + nenhum relatorio sendo gerado ) beans.xml <beans xmlns= xmlns:xsi= w3.org/2001/xmlschema-instance xsi:schemalocation= com/xml/ns/javaee > <alternatives> <class>br.com.mundoj.cdiapp.relatorioservicemock</class> <class>br.com.mundoj.cdiapp. servicemock</class> <class>br.com.mundoj.cdiapp.contaswebservicemock</class>... @Target(TYPE) public class RelatorioServiceMock extends RelatorioService System.out.println( Sendo executado RelatorioService alternativo, + nenhum relatorio sendo gerado ) beans.xml <beans xmlns= xmlns:xsi= w3.org/2001/xmlschema-instance xsi:schemalocation= com/xml/ns/javaee > <!-- somente e necessario indicar o stereotype, nao as classes --> <alternatives> <class>br.com.mundoj.cdiapp.mock</class> </alternatives> </beans> Da costura a solda do Seam ao Weld Alguns frameworks se destacaram na comunidade Java na implementação de DI como, por exemplo: PicoContainer picocontainer.org/, Spring Google Guice entre outros. Com a grande aceitação destes frameworks e do emprego de injeção de dependência, o JCP resolveu incorporar no JavaEE 5 estas mesmas ideias em seu modelo de componentes gerenciados por um servidor de aplicação (Servlets, EJBs, JSF Managed Beans, DataSources etc.). Desta forma, através da especificação, ficou possível injetar qualquer componente gerenciado, em outro componente gerenciado através de anotações. Embora tenha sido um grande avanço na especificação, isso ainda não solucionava o problema de quem trabalha com classes simples, POJOs, que não eram EJBs, e ainda assim precisavam de um recurso como injeção de dependência. Estes desenvolvedores teriam que recorrer a frameworks de terceiros para obter essa funcionalidade. Outro agravante é que mesmo utilizando estes frameworks, a integração entre seus POJOs e modelos de componentes JavaEE 5 não eram possíveis de se beneficiarem mutuamente de injeção de dependência, ou seja, não era possível injetar um componente EJB em uma classe simples e vice-versa de maneira natural. Visto este gap entre a especificação e aplicações do dia-a-dia desenvolvidas por milhares de pessoas, Gavin King, criador do popular Hibernate e desenvolvedor na JBoss, divisão da Red Hat, começou o desenvolvimento de um framework onde os seus componentes pudessem interagir tanto com componentes gerenciados pelo contêiner (como, por exemplo, os EJBs), quanto componentes de classes java convencionais. Além disso, tal framework também integraria qualquer um de seus componentes (sejam POJOs simples ou não) com o modelo padrão da especificação para desenvolvimento de aplicações web, o JavaServer Faces, dispensando a criação e declaração de JSF Managed Beans. A este framework, Gavin King lhe deu o nome de Seam, que significa costura que é justamente o que o framework se propõe a fazer integrando os mais diversos aspectos da especificação com facilidades necessárias para o desenvolvimento de softwares em Java. relacionado à DI para quase todos tipos de objeto, assim como ser pioneiro na ideia de modelagem de instâncias contextuais. No mesmo mês da liberação do Seam, Gavin King alavanca uma nova JSR junto ao JCP a fim de trazer os benefícios do framework para a especificação JavaEE. A requisição de Gavin foi catalogada mudanças até sua versão final hoje chamada oficialmente de Contexts and Dependency Injection for the JavaTM EE platform, o que de fato faz mais sentido uma vez que é possível a utilização de seus componentes mesmo sem a aplicação interagir com a web. Em paralelo a sua aprovação no JCP, a JBoss trabalhou em 44

11 "SUJHP t $%* o *OKFÎÍP EF %FQFOEÐODJB F (FSFODJBNFOUP EF $POUFYUPT OP +BWB && uma implementação para a especificação, também iniciada sobre o nome WebBeans, mas hoje chamada de Weld (solda). Após uma série de discussões sobre possíveis conflitos entre a +43 $%* F B +43 %* WFS NBJT EFUBMIFT TPCSF B +43 OP RVBESP i3fmbîíp FOUSF B +43 F +43 w B FTQFDJmDBÎÍP GPJ aprovada e hoje é parte integrante da plataforma JavaEE 6. Weld, por sua vez, é a implementação de referência desta especificação. Além de implementar o CDI como um todo, Weld também traz extensões portáveis construídas sob a SPI da especificação, como suporte a Wicket para estrutura MVC web, possibilidade de executar em ambientes JavaSE puros como aplicações Desktop, assim como em simples containers servlets. Pelo fato do Weld implementar várias ideias presentes no Seam Framework, e ambos serem mantidos pelo time JBoss da Red Hat, alguns desenvolvedores podem estar em dúvida sobre a continuidade ou futuro dos projetos, mas o fato é que os dois projetos coexistirão. Seam 3 irá possuir como mecanismo de DI e gerenciamento de contextos o Weld, porém manterá seus aspectos de integração com as ferramentas não-standards da plataforma JavaEE, como geração de PDFs, geração de planilhas, escopo baseado em jbpm, Identity Management, envio de via facelet, integração com GWT, integração com Drools, apoio de ferramentas de desenvolvimento (seam-gen, jboss tools), integração com Hibernate, componentes JSFs customizados e qualquer outra adição não-padrão da plataforma. Para migração do Seam e seu mecanismo atual de DI e componenuft DPOUFYUVBJT 4FBN Y QBSB B OPWB JNQMFNFOUBÎÍP CBTFBEB no Weld e suas anotações (Seam 3.x), existe um projeto chamado Seam Bridge que permitirá a utilização de beans CDI juntamente com o antigo modelo de componentes do framework, garantindo a portabilidade entre as soluções. Referências t +43 $%* IUUQ KDQ PSH FO KTS EFUBJM JE t +43 %* IUUQ KDQ PSH FO KTS EFUBJM JE t +43 WFSTVT +43 IUUQ SFMBUJPO UP #MPHHFST CommentsOnAnnotationsForDependencyInjection t $%* 3FGDBSE IUUQ SFGDBSE[ E[POF DPN SFGDBSE[ DPOUFYUT BOE EFQFODFODZ t 8FME P $%* 3* IUUQ TFBNGSBNFXPSL PSH 8FME t 8FME o.bwfo "SDIFUZQFT IUUQ TFBNGSBNFXPSL PSH %PDVNFOUBUJPO 8FME2VJDLTUBSU'PS.BWFO6TFST t 4FBN 'SBNFXPSL IUUQ TFBNGSBNFXPSL PSH t (PPHMF (VJDF IUUQ DPEF HPPHMF DPN Q HPPHMF HVJDF 3FMBÎÍP FOUSF B +43 F +43 " QPMÐNJDB +43 %FQFOEFODZ *OKFDUJPO GPS +BWB GPJ FTDSJUB por Bob Lee (criador do Google Guice) e Rod Johnson (criador do Spring Framework) com o propósito: Propomos esta JSR para maximizar a reutilização, testabilidade e manutenção do código Java padronizando um extensível API para injeção de dependência. A questão é que tal JSR não padroniza absolutamente nenhum aspecto comportamental ou qualquer menção de como seria o ciclo de vida em uma implementação baseada nesta especificação. Os únicos pontos realmente especificados na JSR são algumas BOPUBÎÜFT!*OKFDU!/BNFE!1SPWJEFS!2VBMJmFS!4DPQF F! Singleton. Qualquer framework que utilize essas anotações pode dizer que implementa a especificação. Isso é muito vago e não garante qualquer tipo de comportamento em aplicações que compartilhem de mesmas anotações, mas com implementações diferentes, ou seja, QPVDB DPJTB Ï QPSUÈWFM " +43 o $%* QFMP DPOUSÈSJP QPTTVJ VN comportamento bem definido para todos os aspetos referentes à DI e contextos, o que deixou muita gente no JCP sem saber a real necessidade de uma segunda especificação. A SpringSource, agora sob o nome de VmWare no JCP, se ausentou de todas as WPUBÎÜFT QBSB B +43 P RVF JNQFEJV EF BKVEBS RVF P JNQBTTF sobre a necessidade ou não desta segunda especificação fosse SFTPMWJEP $PNP USÏHVB B +43 BDBCPV QPS VUJMJ[BS BT BOPUBÎÜFT EFmOJEBT OB +43 BDBMNBOEP PT ÉOJNPT OP DPNJUÐ $PN tudo, a controvérsia sobre as duas especificações ainda é motivo de grande discussão. Empresas como IBM, Red Hat e Sun fizeram TFWFSBT DSÓUJDBT F PCTFSWBÎÜFT OPT WPUPT QBSB +43 F +43 Para o leitor poder saber sobre o impacto das divergências entre BT EVBT FTQFDJmDBÎÜFT VN FYFNQMP B!/BNFE QBSB +43 TPbretudo, define uma nomeação para um bean ser acessado por EL em uma página JSP ou JSF (leia neste artigo a sessão Acessando CFBOT FN QÈHJOBT XFCw 1BSB B +43!/BNFE EJ[ BQFOBT TF tratar de um critério para injetar um objeto em outro baseado em VNB 4USJOH DPNP i!*okfdu!/bnfe QBTTFOHFS 4FBU QBTTFOHFS4FBU w "HPSB VNB QFSHVOUB TF P EFTFOWPMWFEPS TJNQMFTNFOUF FODPOUSBS VNB DMBTTF BOPUBEB DPN!/BNFE TFSÈ RVF FMF QPEF acessar diretamente aquela classe de uma página? A resposta será: depende de quem implementa a anotação se for o Weld RVF TFHVF B +43 QPEF NBT TF OÍP GPS 45

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE Amarildo Aparecido Ferreira Junior 1, Ricardo Ribeiro Rufino 1 ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil aapfjr@gmail.com

Leia mais

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira ENTERPRISE JAVABEANS 3 Msc. Daniele Carvalho Oliveira Apostila Servlets e JSP www.argonavis.com.br/cursos/java/j550/index.html INTRODUÇÃO Introdução Enterprise JavaBeans é um padrão de modelo de componentes

Leia mais

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

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse Como criar um EJB Criando um projeto EJB com um cliente WEB no Eclipse Gabriel Novais Amorim Abril/2014 Este tutorial apresenta o passo a passo para se criar um projeto EJB no Eclipse com um cliente web

Leia mais

EJB ainda tem vez no Java EE 6? Fernando Lozano Consultor 4Linux lozano@4linux.com.br

EJB ainda tem vez no Java EE 6? Fernando Lozano Consultor 4Linux lozano@4linux.com.br EJB ainda tem vez no Java EE 6? Fernando Lozano Consultor 4Linux lozano@4linux.com.br Você Gosta do EJB? O EJB esteve por muito tempo na berlinda do mundo Java É pesado... É complicado... Código muito

Leia mais

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br)

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Fundamentos da Plataforma Java EE Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Como a plataforma Java EE trata o SERVIÇO DE NOMES Serviço de Nomes Num sistema distribuído os componentes necessitam

Leia mais

Enterprise Java Beans

Enterprise Java Beans Enterprise Java Beans Prof. Pasteur Ottoni de Miranda Junior DCC PUC Minas Disponível em www.pasteurjr.blogspot.com 1-O que é um Enterprise Java Bean? O Entertprise Java Bean (EJB) é um componente server-side

Leia mais

Parte I. Demoiselle Mail

Parte I. Demoiselle Mail Parte I. Demoiselle Mail Para o envio e recebimento de e-s em aplicativos Java, a solução mais natural é usar a API JavaMail [http:// www.oracle.com/technetwork/java/java/index.html]. Ela provê um framework

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 10 Persistência de Dados

Leia mais

JSF e PrimeFaces. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul

JSF e PrimeFaces. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul JSF e PrimeFaces Professor: Ricardo Luis dos Santos IFSUL 2015 Agenda Introdução Desenvolvimento Web Java Server Faces Exercício 2 Introdução Ao longo dos anos diversas linguagens de programação foram

Leia mais

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva 1. O que são Serviços Web (Web Services)? Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva A ideia central dos Web Services parte da antiga necessidade

Leia mais

4 O Workflow e a Máquina de Regras

4 O Workflow e a Máquina de Regras 4 O Workflow e a Máquina de Regras O objetivo do workflow e da máquina de regras é definir um conjunto de passos e regras configuráveis. Ao longo de sua execução, um usuário consegue simplificar o seu

Leia mais

Java para Desenvolvimento Web

Java para Desenvolvimento Web Java para Desenvolvimento Web Servlets A tecnologia Servlet foi introduzida pela Sun Microsystems em 1996, aprimorando e estendendo a funcionalidade e capacidade de servidores Web. Servlets é uma API para

Leia mais

Curso de Aprendizado Industrial Desenvolvedor WEB

Curso de Aprendizado Industrial Desenvolvedor WEB Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos II Professor: Cheli dos S. Mendes da Costa Servidor de Aplicações WEB Tomcat Servidor Tomcat Foi desenvolvido

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 6 EJB Enterprise Java

Leia mais

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

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M JAVA Marcio de Carvalho Victorino 1 Servlets 2 1 Plataforma WEB Baseada em HTTP (RFC 2068): Protocolo simples de transferência de arquivos Sem estado (não mantém sessão aberta) Funcionamento (simplificado):

Leia mais

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES Alexandre Egleilton Araújo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí PR Brasil araujo.ale01@gmail.com, jaime@unipar.br Resumo.

Leia mais

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

Java EE 6. A revolução do. Um overview sobre as novidades da JSR 316. a r t i g o a r t i g o Pedro Henrique S. Mariano (pedro.mariano@caelum.com.br) técnologo em Análise e Desenvolvimento de Sofware pela FIAP, possui as certificações SCJP 6 e SCRUM master.trabalha como consultor e

Leia mais

PROJETO PEDAGÓGICO DE CURSOS

PROJETO PEDAGÓGICO DE CURSOS 1 de 6 PROJETO PEDAGÓGICO DE CURSOS BURITREINAMENTOS MANAUS-AM MARÇO / 2015 2 de 6 PACOTES DE TREINAMENTOS BURITECH A Buritech desenvolveu um grupo de pacotes de treinamentos, aqui chamados de BuriPacks,

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Apesar de existirem diversas implementações de MVC, em linhas gerais, o fluxo funciona geralmente da seguinte forma:

Apesar de existirem diversas implementações de MVC, em linhas gerais, o fluxo funciona geralmente da seguinte forma: 1 Introdução A utilização de frameworks como base para a construção de aplicativos tem sido adotada pelos desenvolvedores com três objetivos básicos. Primeiramente para adotar um padrão de projeto que

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 5 Servidores de Aplicação

Leia mais

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio 32 3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio Este capítulo apresenta o framework orientado a aspectos para monitoramento e análise de processos de negócio

Leia mais

HIBERNATE EM APLICAÇÃO JAVA WEB

HIBERNATE EM APLICAÇÃO JAVA WEB HIBERNATE EM APLICAÇÃO JAVA WEB Raul Victtor Barbosa Claudino¹, Ricardo Ribeiro Rufino¹ ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil victtor.claudino@gmail.com, ricardo@unipar.br Resumo: Este

Leia mais

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS Campus Cachoeiro de Itapemirim Curso Técnico em Informática Disciplina: Análise e Projeto de Sistemas Professor: Rafael Vargas Mesquita Este exercício deve ser manuscrito e entregue na próxima aula; Valor

Leia mais

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

TDC2012. EJB simples e descomplicado, na prática. Slide 1 TDC2012 EJB simples e descomplicado, na prática Slide 1 Palestrantes Kleber Xavier Arquiteto Senior / Globalcode kleber@globalcode.com.br Vinicius Senger Arquiteto Senior / Globalcode vinicius@globalcode.com.br

Leia mais

Guia de utilização da notação BPMN

Guia de utilização da notação BPMN 1 Guia de utilização da notação BPMN Agosto 2011 2 Sumário de Informações do Documento Documento: Guia_de_utilização_da_notação_BPMN.odt Número de páginas: 31 Versão Data Mudanças Autor 1.0 15/09/11 Criação

Leia mais

Engenharia de Software III

Engenharia de Software III Engenharia de Software III Casos de uso http://dl.dropbox.com/u/3025380/es3/aula6.pdf (flavio.ceci@unisul.br) 09/09/2010 O que são casos de uso? Um caso de uso procura documentar as ações necessárias,

Leia mais

Aula 03 - Projeto Java Web

Aula 03 - Projeto Java Web Aula 03 - Projeto Java Web Para criação de um projeto java web, vá em File/New. Escolha o projeto: Em seguida, na caixa Categorias selecione Java Web. Feito isso, na caixa à direita selecione Aplicação

Leia mais

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

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sumário. Java 2 Enterprise Edition. J2EE (Java 2 Enterprise Edition) Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) J2EE () Sumário Introdução J2EE () APIs J2EE Web Container: Servlets e JSP Padrão XML 2 J2EE é Uma especificação para servidores

Leia mais

Manual SAGe Versão 1.2 (a partir da versão 12.08.01)

Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Submissão de Relatórios Científicos Sumário Introdução... 2 Elaboração do Relatório Científico... 3 Submissão do Relatório Científico... 14 Operação

Leia mais

3 SCS: Sistema de Componentes de Software

3 SCS: Sistema de Componentes de Software 3 SCS: Sistema de Componentes de Software O mecanismo para acompanhamento das chamadas remotas se baseia em informações coletadas durante a execução da aplicação. Para a coleta dessas informações é necessário

Leia mais

Prototype, um Design Patterns de Criação

Prototype, um Design Patterns de Criação Prototype, um Design Patterns de Criação José Anízio Pantoja Maia Este artigo tem como finalidade compreender o funcionamento do padrão de projeto prototype, serão abordados os participantes que compõe

Leia mais

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br SCE-557 Técnicas de Programação para WEB Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br 1 Cronograma Fundamentos sobre servidores e clientes Linguagens Server e Client side

Leia mais

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Prof. MSc. Hugo Souza Iniciando nossas aulas sobre

Leia mais

Programação e Configuração de Aplicações JEE. Edilmar Alves

Programação e Configuração de Aplicações JEE. Edilmar Alves Programação e Configuração de Aplicações JEE Edilmar Alves Palestrante Sócio da InterSite Informática Professor Universitário Coordenador do JUGMS e membro do BrazilJUGs Fã de Linux, Java e outros softwares

Leia mais

Engenharia de Requisitos Estudo de Caso

Engenharia de Requisitos Estudo de Caso Engenharia de Requisitos Estudo de Caso Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 1 Engenharia de Requisitos Exemplo 1 Reserva de Hotel 1. INTRODUÇÃO Este

Leia mais

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano Programação Servidor para Sistemas Web 1 Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano Objetivo: Apresentar a teoria por trás dos padrões na construção de aplicações Web. INTRODUÇÃO Nas aulas anteriores

Leia mais

Arquiteturas de Aplicações Web. Leonardo Gresta Paulino Murta leomurta@ic.uff.br

Arquiteturas de Aplicações Web. Leonardo Gresta Paulino Murta leomurta@ic.uff.br Arquiteturas de Aplicações Web Leonardo Gresta Paulino Murta leomurta@ic.uff.br Aplicações Convencionais vs. Web Aplicações convencionais Escritas usando uma linguagem de programação (ex.: Java) Sites de

Leia mais

EJB 3.1: A Community Update

EJB 3.1: A Community Update EJB 3.1: A Community Update Reza Rahman Autor, EJB 3 in Action Expert Group Member, Java EE 6 and EJB 3.1 Fundador, Cognicellence Julho de 2008 1 EJB 3.0: Revisão Breve > As grandes mudanças > EJB simplificado

Leia mais

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE Aluno: Roberto Reinert Orientador: Everaldo A. Grahl Roteiro de apresentação Introdução Objetivos Fundamentação Teórica Workflow Processo

Leia mais

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

5 Mecanismo de seleção de componentes

5 Mecanismo de seleção de componentes Mecanismo de seleção de componentes 50 5 Mecanismo de seleção de componentes O Kaluana Original, apresentado em detalhes no capítulo 3 deste trabalho, é um middleware que facilita a construção de aplicações

Leia mais

Como sobreviver com Java 2? Saulo Arruda

Como sobreviver com Java 2? Saulo Arruda Como sobreviver com Java 2? Saulo Arruda Agenda Apresentação Contexto do mercado Soluções para Java 5+ Soluções para Java 2 Conclusões Apresentação Saulo Arruda (http://sauloarruda.eti.br) Trabalha com

Leia mais

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas Linguagem de Programação JAVA Professora Michelle Nery Nomeclaturas Conteúdo Programático Nomeclaturas JDK JRE JEE JSE JME JVM Toolkits Swing AWT/SWT JDBC EJB JNI JSP Conteúdo Programático Nomenclatures

Leia mais

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha Desenvolvimento WEB II Professora: Kelly de Paula Cunha O Java EE (Java Enterprise Edition): série de especificações detalhadas, dando uma receita de como deve ser implementado um software que utiliza

Leia mais

PROGRAMAÇÃO SERVIDOR PADRÕES MVC E DAO EM SISTEMAS WEB. Prof. Dr. Daniel Caetano 2012-1

PROGRAMAÇÃO SERVIDOR PADRÕES MVC E DAO EM SISTEMAS WEB. Prof. Dr. Daniel Caetano 2012-1 PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB PADRÕES MVC E DAO Prof. Dr. Daniel Caetano 2012-1 Objetivos Compreender o conceito de Padrões de Projeto Compreender o Padrão MVC Conhecer o princípio de alguns dos

Leia mais

UTILIZAÇÃO DA TECNOLOGIA ENTERPRISE JAVABEANS NO DESENVOLVIMENTO DE APLICAÇÕES DISTRÍBUIDAS

UTILIZAÇÃO DA TECNOLOGIA ENTERPRISE JAVABEANS NO DESENVOLVIMENTO DE APLICAÇÕES DISTRÍBUIDAS UTILIZAÇÃO DA TECNOLOGIA ENTERPRISE JAVABEANS NO DESENVOLVIMENTO DE APLICAÇÕES DISTRÍBUIDAS ¹Lucas Martins de Andrade, ¹Jaime William Dias ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil lucasm748@gmail.com

Leia mais

SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS

SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS Pablo dos Santos Alves Alexander Roberto Valdameri - Orientador Roteiro da apresentação Introdução Objetivos Motivação Revisão bibliográfica

Leia mais

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC .business @BusinessController TurmaBC TurmaBC TurmaBC

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC .business @BusinessController TurmaBC TurmaBC TurmaBC Módulo 5 No módulo anterior adaptamos nosso projeto para persistir as informações no banco de dados utilizando as facilidades da extensão demoiselle-jpa. Experimentamos o controle transacional do Framework

Leia mais

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

Experiência em missão crítica de missão crítica 2 / 17 Experiência em missão crítica de missão crítica Pioneira no ensino de Linux à distância Parceira de treinamento IBM Primeira com LPI no Brasil + de 30.000 alunos satisfeitos Reconhecimento internacional

Leia mais

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate Tiago Peres Souza 1, Jaime Willian Dias 1,2 ¹Universidade paranaense (Unipar) Paranavaí PR Brasil tiagop_ti@hotmail.com 2 Universidade

Leia mais

Universidade da Beira Interior

Universidade da Beira Interior Universidade da Beira Interior Relatório Apresentação Java Server Pages Adolfo Peixinho nº4067 Nuno Reis nº 3955 Índice O que é uma aplicação Web?... 3 Tecnologia Java EE... 4 Ciclo de Vida de uma Aplicação

Leia mais

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP AULA 4 VISÃO BÁSICA DE CLASSES EM PHP Antes de mais nada, vamos conhecer alguns conceitos, que serão importantes para o entendimento mais efetivos dos assuntos que trataremos durante a leitura desta apostila.

Leia mais

NOME DA APRESENTAÇÃO

NOME DA APRESENTAÇÃO 25 DE MAIO @MICROSOFT Novidades de Java EE 7 Ernest Duarte NOME DA APRESENTAÇÃO Nome (Nick no Fórum) About me! Nickname na Comunidade Ernest Duarte Profissão Instrutor em Ciências e Tecnologias Numéricas

Leia mais

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

Spring: Um suite de novas opções para Java EE Spring: Um suite de novas opções para Java EE Alberto J Lemos (Dr. Spock) Instrutor Globalcode Ricardo Jun Taniguchi Instrutor Globalcode 1 Agenda > Sobre o Spring Framework > Escopo de integração com

Leia mais

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

JPA Passo a Passo. Henrique Eduardo M. Oliveira henrique@voffice.com.br. Globalcode Open4Education JPA Passo a Passo Henrique Eduardo M. Oliveira henrique@voffice.com.br 1 Palestrante Henrique Eduardo M. Oliveira (henrique@voffice.com.br) > Trabalha: Arquiteto JEE / Instrutor Java > Formação: Ciências

Leia mais

LINGUAGEM DE BANCO DE DADOS

LINGUAGEM DE BANCO DE DADOS LINGUAGEM DE BANCO DE DADOS Gabriela Trevisan Bacharel em Sistemas de Informação Universidade Federal do Rio Grande Pós-Graduanda Formação Pedagógica de Professores (FAQI) Conceito de BD Um banco de dados

Leia mais

Feature-Driven Development

Feature-Driven Development FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por

Leia mais

Argo Navis J931 - Padrões de Design J2EE. Introdução. Objetivos de aprender padrões J2EE. Conhecer padrões para uso na plataforma J2EE

Argo Navis J931 - Padrões de Design J2EE. Introdução. Objetivos de aprender padrões J2EE. Conhecer padrões para uso na plataforma J2EE Padrões de Projeto J2EE J931 Introdução Helder da Rocha (helder@acm.org) argonavis.com.br Objetivos de aprender padrões J2EE Conhecer padrões para uso na plataforma J2EE Padrões permitem maior reuso, menos

Leia mais

2 Diagrama de Caso de Uso

2 Diagrama de Caso de Uso Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Caso de Uso (Use Case) Autoria:Aristófanes Corrêa

Leia mais

UM ESTUDO SOBRE OS FRAMEWORKS JSF E PRIMEFACES NO DESENVOLVIMENTO DE SOFTWARE WEB

UM ESTUDO SOBRE OS FRAMEWORKS JSF E PRIMEFACES NO DESENVOLVIMENTO DE SOFTWARE WEB UM ESTUDO SOBRE OS FRAMEWORKS JSF E PRIMEFACES NO DESENVOLVIMENTO DE SOFTWARE WEB Adriano Schulter Moenster 1, Tiago Piperno Bonetti 1 ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil adrmoenster@gmail.com,

Leia mais

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Disciplina: INF 02810 Prof.: (monalessa@inf.ufes.br) Conteúdo 1. Introdução 2. Processo de Software 3. Gerência de

Leia mais

Noções de. Microsoft SQL Server. Microsoft SQL Server

Noções de. Microsoft SQL Server. Microsoft SQL Server Noções de 1 Considerações Iniciais Basicamente existem dois tipos de usuários do SQL Server: Implementadores Administradores 2 1 Implementadores Utilizam o SQL Server para criar e alterar base de dados

Leia mais

UM ESTUDO SOBRE ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB UTILIZANDO NOVAS TECNOLOGIAS

UM ESTUDO SOBRE ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB UTILIZANDO NOVAS TECNOLOGIAS UM ESTUDO SOBRE ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB UTILIZANDO NOVAS TECNOLOGIAS Edi Carlos Siniciato ¹, William Magalhães¹ ¹ Universidade Paranaense (Unipar) Paranavaí PR Brasil edysiniciato@gmail.com,

Leia mais

SUMÁRIO Acesso ao sistema... 2 Atendente... 3

SUMÁRIO Acesso ao sistema... 2 Atendente... 3 SUMÁRIO Acesso ao sistema... 2 1. Login no sistema... 2 Atendente... 3 1. Abrindo uma nova Solicitação... 3 1. Consultando Solicitações... 5 2. Fazendo uma Consulta Avançada... 6 3. Alterando dados da

Leia mais

Programação para Web Artefato 01. AT5 Conceitos da Internet

Programação para Web Artefato 01. AT5 Conceitos da Internet Programação para Web Artefato 01 AT5 Conceitos da Internet Histórico de revisões Data Versão Descrição Autor 24/10/2014 1.0 Criação da primeira versão HEngholmJr Instrutor Hélio Engholm Jr Livros publicados

Leia mais

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem

Leia mais

GUIA DE ORIENTAÇÕES ROTEIRO DE CONFIGURAÇÃO DO SOFTWARE CRM PROFESSIONAL ANEXO III ROTEIRO DE CONFIGURAÇÃO - CRM PROFESSIONAL

GUIA DE ORIENTAÇÕES ROTEIRO DE CONFIGURAÇÃO DO SOFTWARE CRM PROFESSIONAL ANEXO III ROTEIRO DE CONFIGURAÇÃO - CRM PROFESSIONAL ANEXO III ROTEIRO DE CONFIGURAÇÃO - CRM PROFESSIONAL GUIA DE ORIENTAÇÕES ROTEIRO DE CONFIGURAÇÃO DO SOFTWARE CRM PROFESSIONAL ANEXO III ROTEIRO DE CONFIGURAÇÃO E INSTALAÇÃO DO CRM PROFESSIONAL SUMÁRIO

Leia mais

Resolução da lista de exercícios de casos de uso

Resolução da lista de exercícios de casos de uso Resolução da lista de exercícios de casos de uso 1. Explique quando são criados e utilizados os diagramas de casos de uso no processo de desenvolvimento incremental e iterativo. Na fase de concepção se

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Gerência de processos Controle e descrição de processos Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Representação e controle de processos pelo SO Estrutura

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Processos- Clientes, Servidores, Migração Capítulo 3 Agenda Clientes Interfaces de usuário em rede Sistema X Window Software do lado cliente para

Leia mais

ARQUITETURA DO SISTEMA ERP PEGASUS

ARQUITETURA DO SISTEMA ERP PEGASUS ARQUITETURA DO SISTEMA ERP PEGASUS Elaborado por: Bruno Duarte Nogueira Arquiteto de Software Data: 05/03/2012 1 Sumário 1. Introdução... 3 2. Tecnologias... 3 2.1. Web Tier... 3 2.1.1. Facelets 1.1.14...

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel Ambiente de Desenvolvimento Orientação a Objetos É uma técnica de desenvolvimento de softwares que consiste em representar os elementos do mundo

Leia mais

Grails: o que isso quer dizer? Gilliard Cordeiro http://gilliard.eti.br

Grails: o que isso quer dizer? Gilliard Cordeiro http://gilliard.eti.br Grails: o que isso quer dizer? Gilliard Cordeiro http://gilliard.eti.br Sobre mim Formado em análise de sistemas pela UFMS Trabalho há 5 anos com desenvolvimento Web Minha principal área de atuação é P&D

Leia mais

Associação Carioca de Ensino Superior Centro Universitário Carioca

Associação Carioca de Ensino Superior Centro Universitário Carioca Desenvolvimento de Aplicações Web Lista de Exercícios Métodos HTTP 1. No tocante ao protocolo de transferência de hipertexto (HTTP), esse protocolo da categoria "solicitação e resposta" possui três métodos

Leia mais

SISTEMA TYR DIAGRAMAS DE CLASSE E SEQUÊNCIA Empresa: Academia Universitária

SISTEMA TYR DIAGRAMAS DE CLASSE E SEQUÊNCIA Empresa: Academia Universitária SISTEMA TYR DIAGRAMAS DE CLASSE E SEQUÊNCIA Empresa: Academia Universitária Cascavel Novembro de 2009 Pedro Patitucci Finamore Daniel Bordignon Cassanelli Marco Antonio da Rosa DIAGRAMAS DE CLASSE E SEQUÊNCIA

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 01 Orientação a Objetos Edirlei Soares de Lima Paradigmas de Programação Um paradigma de programação consiste na filosofia adotada na

Leia mais

Introdução a listas - Windows SharePoint Services - Microsoft Office Online

Introdução a listas - Windows SharePoint Services - Microsoft Office Online Page 1 of 5 Windows SharePoint Services Introdução a listas Ocultar tudo Uma lista é um conjunto de informações que você compartilha com membros da equipe. Por exemplo, você pode criar uma folha de inscrição

Leia mais

INTRODUÇÃO À TECNOLOGIA SERVLETS

INTRODUÇÃO À TECNOLOGIA SERVLETS PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB INTRODUÇÃO À TECNOLOGIA SERVLETS Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o conceito aplicações orientada a serviços via web Apresentar o papel dos contentores

Leia mais

Padrões de Projeto WEB e o MVC

Padrões de Projeto WEB e o MVC Padrões de Projeto WEB e o MVC Padrões de Projeto WEB e o MVC O que são padrões? "Cada padrão descreve um problema que ocorre freqüentemente em seu ambiente, e então descreve o cerne da solução para aquele

Leia mais

Documento de Análise e Projeto VideoSystem

Documento de Análise e Projeto VideoSystem Documento de Análise e Projeto VideoSystem Versão Data Versão Descrição Autor 20/10/2009 1.0 21/10/2009 1.0 05/11/2009 1.1 Definição inicial do documento de análise e projeto Revisão do documento

Leia mais

Histórico da Revisão. Versão Descrição Autor. 1.0 Versão Inicial

Histórico da Revisão. Versão Descrição Autor. 1.0 Versão Inicial 1 of 14 27/01/2014 17:33 Sistema de Paginação de Esportes Universitários Documento de Arquitetura de Software Versão 1.0 Histórico da Revisão Data 30 de novembro de 1999 Versão Descrição Autor 1.0 Versão

Leia mais

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA RESUMO Ricardo Della Libera Marzochi A introdução ao Service Component Architecture (SCA) diz respeito ao estudo dos principais fundamentos

Leia mais

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

Leia mais

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural Resumo: Perguntas a fazer ao elaborar um projeto arquitetural Sobre entidades externas ao sistema Quais sistemas externos devem ser acessados? Como serão acessados? Há integração com o legado a ser feita?

Leia mais

Acessando um Banco de Dados

Acessando um Banco de Dados Acessando um Banco de Dados Introdução Agora que você já está craque em JSP e já instalou seu servidor, vamos direto para a parte prática! Neste tutorial vamos aprender a acessar um banco de dados. Para

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor

Leia mais

Guia do Demoiselle Audit Demoiselle Audit Paulo Gladson Ximenes Pinheiro Clóvis Lemes Ferreira Júnior

Guia do Demoiselle Audit Demoiselle Audit Paulo Gladson Ximenes Pinheiro Clóvis Lemes Ferreira Júnior Guia do Demoiselle Audit Demoiselle Audit Paulo Gladson Ximenes Pinheiro Clóvis Lemes Ferreira Júnior Demoiselle Audit... v 1. Auditor... 1 1.1. Auditor de Persistência... 1 1.2. Auditor de Visão... 1

Leia mais

3 SERVIÇOS IP. 3.1 Serviços IP e alguns aspectos de segurança

3 SERVIÇOS IP. 3.1 Serviços IP e alguns aspectos de segurança 3 SERVIÇOS IP 3.1 Serviços IP e alguns aspectos de segurança Os serviços IP's são suscetíveis a uma variedade de possíveis ataques, desde ataques passivos (como espionagem) até ataques ativos (como a impossibilidade

Leia mais

Reuso com Herança a e Composiçã

Reuso com Herança a e Composiçã Java 2 Standard Edition Reuso com Herança a e Composiçã ção Helder da Rocha www.argonavis.com.br 1 Como aumentar as chances de reuso Separar as partes que podem mudar das partes que não mudam. Exemplo:

Leia mais

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição? Prova de 2011-02 1. Descreva duas maneiras de estabelecer uma conexão entre processos na camada de transporte sem o conhecimento da porta (TSAP) ao qual o servidor remoto esteja associado. 2. Estabelecer

Leia mais

Satélite. Manual de instalação e configuração. CENPECT Informática www.cenpect.com.br cenpect@cenpect.com.br

Satélite. Manual de instalação e configuração. CENPECT Informática www.cenpect.com.br cenpect@cenpect.com.br Satélite Manual de instalação e configuração CENPECT Informática www.cenpect.com.br cenpect@cenpect.com.br Índice Índice 1.Informações gerais 1.1.Sobre este manual 1.2.Visão geral do sistema 1.3.História

Leia mais

5 Estudo de caso: utilizando o sistema para requisição de material

5 Estudo de caso: utilizando o sistema para requisição de material 61 5 Estudo de caso: utilizando o sistema para requisição de material A fim de avaliar as características da arquitetura proposta e a corretude da implementação, realizamos experiências com cenários de

Leia mais

Eduardo Bezerra. Editora Campus/Elsevier

Eduardo Bezerra. Editora Campus/Elsevier Princípios de Análise e Projeto de Sistemas com UML 2ª edição Eduardo Bezerra Editora Campus/Elsevier Capítulo 11 Arquitetura do sistema Nada que é visto, é visto de uma vez e por completo. --EUCLIDES

Leia mais

JSF - Controle de Acesso FERNANDO FREITAS COSTA

JSF - Controle de Acesso FERNANDO FREITAS COSTA JSF - Controle de Acesso FERNANDO FREITAS COSTA ESPECIALISTA EM GESTÃO E DOCÊNCIA UNIVERSITÁRIA JSF Controle de Acesso Antes de iniciarmos este assunto, é importante conhecermos a definição de autenticação

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 5. Tratamento de Exceções Introdução e conceitos Capturando exceção usando

Leia mais

Projeto Demoiselle. Para perguntas e respostas, utilizem a lista de discussões de usuários da comunidade: demoiselle-users@lists.sourceforge.

Projeto Demoiselle. Para perguntas e respostas, utilizem a lista de discussões de usuários da comunidade: demoiselle-users@lists.sourceforge. Projeto Demoiselle Para perguntas e respostas, utilizem a lista de discussões de usuários da comunidade: demoiselle-users@lists.sourceforge.net Palestrantes: Antônio Carlos Tiboni Luciana Campos Mota 20/07/2009

Leia mais