jcompany Service Capítulo Introdução aos RESTful Services via JAX-RS - Um breve histórico sobre REST - O padrão JAX-RS e o jcompany Service

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

Download "jcompany Service Capítulo Introdução aos RESTful Services via JAX-RS - Um breve histórico sobre REST - O padrão JAX-RS e o jcompany Service"

Transcrição

1 A1RESTful com JAX-RS e jcompany Service Capítulo 26 Introdução aos RESTful Services via JAX-RS - Um breve histórico sobre REST Os RESTful Services, de certa maneira, foram a resposta dos programadores mais pragmáticos ao crescimento da indústria de Web-Services em torno de complexidades questionáveis. O aumento da complexidade a partir da exigência de um envelope SOAP adicional ao HTTP, servidores UDDI para busca de serviço, contratos WSDL, padrões para segurança (WS-Security), dentre outros, levantaram uma questão fundamental: precisamos mesmo de tudo isso para acessar serviços programaticamente via Web? Não seria possível obter os mesmos benefícios, somente a partir do bom uso das práticas HTTP já disponíveis? A esta simplificação, alguns autores inclusive denominaram de arquitetura ROA (RESTful Oriented Architecture) em contraposição ao SOA, bastante associado tecnicamente aos "grandes Web-Services". E este questionamento recebeu bastante receptividade no mercado: uso do SSL simplesmente para criptografia de senhas; uso dos motores de busca (Google, Yahoo!, MSN) para buscar serviços REST em lugar do UDDI; uso mais diligente de métodos (POST, GET, PUT, etc.) e códigos de resposta do HTTP em lugar de extensões SOAP; dentre outros, se mostraram estratégias eficazes para a grande maioria das situações, ao ponto de hoje a maior parte dos sites que disponibilizam serviço fazê-lo nas duas modalidades: em "Web-Services" e "RESTful Services". - REST A Transferência de Estado Representacional (Representational State Transfer) ou somente (REST) são serviços sem estado (stateless) e arquiteturas que fazem uso da semântica e do conteúdo de uma URL ou URI, para identificar um determinado recurso da aplicação. Em sistemas REST, os recursos são manipulados através da troca de representações do recurso. Ex.: "http://localhost:8080/teste/soa/service/funcionariomdt(1)" Neste exemplo, através desta URL estamos definindo padrões que serão utilizados para mapear nossas ações e recursos a serem obtidos. É fácil entender como ela funciona: identificamos nossa chave primária (object-id) com o texto entre parênteses "(1)" ao final da URI e o nome da colaboração como "funcionariomdt". Poderíamos alterar a chamada para um serviço que retorne uma coleção de objetos definidos em "funcionariomdt" simplesmente com a omissão da chave primária. Mais adiante neste capítulo utilizaremos o jcompany Service para demonstrar todas as principais operações possíveis. A URI é uma maneira uniforme de identificar recursos e o HTTP é o meio utilizado para manipular estes recursos. Como as URIs são únicas, ganhamos uma busca otimizada que, de forma simples, nos permite recuperar diversas representações de dados (advindos de agregações de entidades ou JPA-QL sobre elas), em diversos formatos (XML, JSON, etc) parametrizáveis. Grande parte deste mecanismo é suportado pelo padrão Java EE 6 JAX-RS, utilizado pelo jcompany. - O padrão JAX-RS e o jcompany Service O jcompany Developer Suite implementa o padrão JAX-RS reutilizando sua implementação de referência, o jboss RESTEasy. Mas vai além desta especificação ao prover uma API simples para utilização de serviços REST integrados aos seus padrões de caso de uso, que proveem operações de CRUD de forma simples, mesmo para agregações complexas de entidades. Ou seja, além de simplesmente permitir a utilização de um serviço REST através da implementação de referência jboss RESTEasy, o jcompany generaliza diversos serviços ao ponto de dispensar programação do serviço em si para diversos casos em que informações de metadados já definidas em casos de uso padrões existentes são reutilizadas.

2 RESTful com JAX-RS e jcompany Service Para estas generalizações, as diferentes operações de CRUD são ativadas em conformidade com comandos do protocolo HTTP, conforme a Figura G26.1 abaixo: Figura G26.1. Métodos HTTP. Serviços adicionais específicos podem também ser criados de forma altamente produtiva e evoluída, através de recomendações de arquitetura pré-implementadas no jcompany Service. * - Configurando o suporte a REST com JAX-RS no jcompany Para começarmos a utilizar o padrão JAX-RS, devemos realizar algumas poucas configurações no arquivo "web.xml", muitas inclusive geradas automaticamente por constarem em templates INI do jcompany. O padrão é para prover a funcionalidade REST em resposta às URLs que tenham o trecho /soa/*. Estas configurações estão detalhadas na Figura G26.2 e na Figura G26.3. Figura G26.2. Configurações para o funcionamento do REST. #1. Configuração necessária para que um Servlet específico nomeado como "Resteasy" intercepte URLs com token "/soa/" presente e as delega para serem atendidas por classes genéricas de controle do jcompany. Figura G26.3. Parâmetros para o funcionamento de RESTServices no web.xml do projeto "rhtutorial". #1. Parâmetro que, ao assumir o valor "true", ativa a funcionalidade de busca automatizada por classes anotadas para atender a serviços RESTFul, estejam elas no projeto ou no jcompany em si (genéricas). #2. Parâmetro que permite a execução de rotinas de segurança na trâmite das informações. #3. Parâmetro que define o prefixo da url de acesso ao serviço RESTFul, por padrão será usado "/soa". * O Java possui uma JSR que define a API para comunicação de aplicações Web através de REST Web Services. Essa API é descrita na JSR 311 (JAX-RS e o jcompany utiliza a implementação RESTEasy da jboss (http://jboss.org/resteasy) para implementá-la.

3 Capítulo G26 Por fim, para induzir o jcompany a empacotar os frameworks de base que implementam os serviços RESTFul, deve-se configurar o arquivo pom.xml do projeto incluindo a dependência do componente (artifactid) "jcompany_service". A Figura G26.4 mostra a dependência inserida no arquivo. Figura G26.4. Tags com as dependências do "jcompany_service" no arquivo "pom.xml" da aplicação. #1. Declaração de "dependency" do Maven, do projeto "rhtutorial" para o framework "jcompany_service", instalado no repositório Maven abaixo de "powerlogic.jcompany". Visão Geral do jcompany Service - Entendendo a demanda de negócio Vamos supor que nossa aplicação "rhtutorial" comece a ser demandada para possibilitar acesso por diversos dispositivos móveis que não necessariamente operam com Browser. E também para que outros sistemas agora possam realizar operações completas de "inclusão, alteração, exclusão e consulta" de funcionários (em uma arquitetura conhecida como B2B), tal como já fazemos em um Browser (arquitetura B2C). Uma alternativa seria expandir o nosso "Web-Service" do capítulo anterior para possibilitar não somente a consulta de algumas informações, mas também a inclusão, alteração e exclusão de todos os funcionários, seus endereços, históricos profissionais e dependentes. Mas isso seria bem mais trabalhoso que a abordagem que iremos utilizar via JAX-RS no jcompany Service. - Entendendo a arquitetura do jcompany Service Para executar as funções CRUD já citadas, necessitamos de uma classe de "Controle" e uma de "Conversor", respectivamente objetos que interceptam/controlam a execução dos métodos recebidos através do REST e formatam os dados para devolvê-los ao requerente (Browser ou Aplicação). Para identificar as classes de Controle e Conversor de uma aplicação, O jcompany Service faz uso do padrão CDI *, tornando a criação dos mesmos mais fácil e padronizada - sem necessitar de nenhuma configuração de XML e fazendo uso de técnicas de "Convenção sobre a Configuração". - Entendendo a implementação de Controle no jcompany Service Consegue-se uma implementação de Controle apenas estendendo a classe base "PlcBaseControle.java" e/ou implementando diretamente a interface "IPlcController.java". A Figura G26.5 mostra a interface "IPlcController.java". Figura G26.5. Interface "IPlcController.java". * Contexts and Dependency Injection, JSR-299.

4 RESTful com JAX-RS e jcompany Service #1. HTTP GET - utiliza-se /soa/service/[controle](identificador) - dispara o método "public void recupera (I identificadorentidade);" e é utilizado para recuperar uma informação de acordo com a URI e o identificador. #2. HTTP POST - utiliza-se /soa/service/[controle] - invoca o método "public void inclui();" e é utilizado para adicionar uma informação. #3. HTTP PUT - utiliza-se /soa/service/[controle](identificador) - invoca o método "public void put();" e é utilizado para alterar uma informação. #4. HTTP DELETE - utiliza-se /soa/service/[controle](identificador) - invoca o método "public void exclui();" e é utilizado para remover logicamente uma entidade. #5. HTTP GET - utiliza-se /soa/service/[controle] - dispara o método "public void recuperacolecao();" e é utilizado para recuperar a coleção de acordo com a URI. A classe de implementação deve possuir a que a qualifica para o CDI como um controlador de serviços REST. Outra anotação associa este controle com a URL que ele atenderá. Ela é informada através da que pode ser vista na Figura G26.6: Figura G26.6. Exemplo da anotação Se nenhum nome for informado, o nome do controle passa a ser o mesmo da classe, sem o prefixo Controle conforme pode ser vista na Figura G26.7: Figura G26.7. Exemplo de classe sem a anotação Para dar mais flexibilidade e possibilitar agrupar controles em um mesmo grupo, existe ainda uma que possibilita a adição de um qualificador ou extensão à URI. Este qualificador pode ser genérico ou específico. A Figura G26.8 mostra a anotação na classe "FuncionarioGridController.java".

5 Capítulo G26 Figura G26.8. Exemplo de classe com a anotação ". É possível definir um qualificador genérico para todas as requisições, informando uma classe que atenda a todas as requisições, apenas adicionando um qualificador com caractere coringa * conforme mostra a Figura G26.9. Figura G26.9. Exemplo de classe com qualificador genérico "*".

6 RESTful com JAX-RS e jcompany Service - Entendendo o Conversor de dados no jcompany Service Após a execução da classe de Controle, o resultado deve ser enviado para a requisição em um formato específico, e este formato é determinado pela própria requisição. O protocolo HTTP define um cabeçalho ACCEPT, para informar qual o retorno esperado da requisição, o que permite que um mesmo controle retorne o resultado em formatos distintos, XML, JSON, ou outro qualquer esperado pelo usuário. A implementação de um conversor pode ser feita através de uma classe simples que estende a classe de base "PlcBaseConversor.java" e/ou que implementa diretamente a interface "IPlcConversor.java". Tal como no caso da classe de Controle, esta classe também deve possuir a que determina o estereótipo de Conversor, de modo que o jcompany possa identificar e disponibilizar essas classes para agir junto às de controle para finalizar a requisição. A Figura G26.10 mostra a interface "IPlcConversor.java". Figura G Interface "IPlcConversor.java". Para especificar o formato de dados que o conversor consome e produz na requisição, deve-se definir na classe a Se não for definida nenhuma anotação, o jcompany assumirá o valor padrão */*, que torna o Conversor em questão genérico para toda requisição com formato não especificado. A Figura G26.11 mostra esta anotação, especificando o consumo de dados genéricos. Figura G Exemplo de especificação de dados consumidos pelo conversor genéricos (*/*). Como funciona a localização de um conversor para atender a uma requisição REST? Para a identificação de um conversor, o jcompany inspeciona a hierarquia de herança do conversor em busca de uma declaração de Generics que determine a quais tipos de Controle o Conversor se aplica. A classe da Figura

7 Capítulo G26 G26.12, por exemplo, mostra um Conversor que responde a requisições para o controlador GridControle, onde para qualquer tipo de retorno */* será gerado um JSON de resposta. A Figura G26.12 mostra a anotação especificando o consumo de dados JSON. Figura G Exemplo de especificação de dados com retorno em JSON. Serviço CRUD/REST genérico com jcompany Service - Entendendo as classes de controle genéricas do jcompany Service O jcompany já disponibiliza classes de Controle genéricas que implementam um serviço REST com todas as operações de CRUD já prontas para uso. Esta classe é parcialmente ilustrada na Figura G26.13, e utiliza conversores que utilizam o formato XML Atom para a transferência de dados. Figura G Implementação de controle genérica disponível para uso no jcompany Service. - Entendendo o protocolo Atom Publishing O protocolo Atom e sua extensão conhecida como Atom Publishing definem um formato bastante popular na Web, utilizado por grandes provedores como Google e Amazon para trabalhar com dados complexos. Ele é assim definido por seus criadores: "O Atom Publishing Protocol é um protocolo de nível de aplicativo para publicar e editar recursos da Web usando HTTP [RFC2616] e XML 1.0 [W3C.REC-xml ]. O protocolo suporta a criação de quaisquer recursos web oferecendo facilidades especialmente refinadas para: * Coleções: conjuntos de recursos que podem ser recuperados no todo ou em parte. * Introspecção: Descobrir e descrever coleções. * Edição: criar, atualizar e excluir recursos."

8 RESTful com JAX-RS e jcompany Service O jcompany também utiliza este formato para trafegar com informações obtidas de Agregações de Entidades, que podem inclusive possuir organizações Mestre-Detalhe como as que vimos neste livro, para Funcionários, Dependentes e Histórico Funcional. No jcompany, os dados das entidades em si são fornecidos como um entry do Atom/Publishing e os demais campos padrões são utilizados conforme requerido pelo protocolo, que não difere de outras Markup Languages tradicionais, contendo cabeçalhos, títulos e corpo. - Configurando o acesso via RESTClient Agora que o projeto rhtutorial está configurado para aceitar RESTful Services, já podemos experimentar a disponibilidade de nossos serviços REST genéricos. Vamos acessar a agregação definida no caso de uso "Manter Funcionário" que construímos em capítulos anteriores. Para tanto, basta dispararmos uma URL com o seguinte padrão: 'http://[endereco do projeto]/soa/service/[nome do caso de uso]'. Para melhorar nosso entendimento das mensagens REST enviadas - principalmente do formato dos dados enviados e recebidos - precisaremos utilizar alguma ferramenta de "cliente" que nos permita realizar simulações de acesso dinamicamente, em mais baixo nível que no Browser. Este tipo de ferramenta conhecido como RESTClient exibe a anatomia completa de mensagens do protocolo Atom, possibilitando ainda fazermos a edição manual de novas mensagens e submissões de PUT, DELETE ou POST que realizam alterações na camada modelo. Note que não conseguiríamos fazer testes no Browser destas operações, sem termos que programar um aplicativo. Portanto usaremos um RESTClient que é um complemento do Firefox, ferramenta que tem alguns destaques com relação a outras disponíveis *. Para obter acesso a esta ferramenta entre na página de complementos do Mozilla e a instale (https://addons.mozilla.org/pt-br/firefox/). A Figura G26.14 nos mostra a ferramenta RESTClient, bem como uma noção de sua usabilidade. Figura G Console do RESTClient #1. O método "HTTP" que será usado. #2. URL de acesso ao serviço. #3. Cabeçalho da requisição. * Para usuários que não utilizam o browser Firefox é recomendado o uso da ferramenta RESTclient desktop que é encontrada na instalação do jcompany. Esta ferramenta pode obtida em: "[diretorio_base]\ferramentas\restclient\restclient.bat"

9 Capítulo G26 #4. Área de input de XML de acordo com o método estabelecido. #5. Área que mostra ao desenvolvedor os dados do serviço estabelecido. #6. Área que retorna o XML requisitado. #7. Área que retorna o XML requisitado, usando a tecnologia Syntax Highlight. Essa tecnologia mostra códigos fontes em cores e fontes diferentes, sendo organizada de acordo com a categoria de cada termo. - Testando os RESTful Services genéricos para CRUD - seleção e edição de funcionários Agora vamos testar o uso de RESTful Services para o caso de uso "Funcionario", utilizando as quatro operações básicas de aplicações Data-Centric (CRUD), com seus comandos HTTP correspondentes: operações de recuperação ou pesquisa/edição (HTTP GET), alteração (HTTP PUT), inclusão (HTTP POST) e exclusão (HTTP DELETE). Vamos começar obtendo uma lista de entidades "Funcionario" do projeto rhtutorial, em XML Atom/Publishing. Para obter uma primeira relação padrão destas entidades, o principal segredo é montar corretamente a URL, no padrão REST e com o identificador da colaboração "funcionariomdt". Esta única informação ao final é suficiente para possibilitar ao jcompany obter as demais informações dos metadados (anotações) deste Caso de Uso Padrão e conceber todo o resto. A URL para a aplicação "rhtutorial" rodando localmente fica assim: 'http://localhost:8080/rhtutorial/soa/service/funcionario'. Após montada devemos digitá-la no RESTClient escolhendo o método GET e submetendo para o servidor. No caso do RESTClient do Firefox, clique no botão "Send". A Figura G26.15 mostra a lista de entidades "Funcionario" em formato XML Atom/Publishing, retornada da submissão. Figura G Retorno das entidades em XML Atom/Publishing através de um método HTTP GET. Obs.: O XML resultante não vem formatado nesta ferramenta de RESTClient. É aconselhável que o desenvolvedor iniciante em Atom/Publishing o edite no Eclipse e utilize "Ctrl+I" para endentar o arquivo e melhor compreendê-lo. Note que, como trabalhamos com reuso de configurações de metadados para caso de uso padrão ("Funcionario"), não tivemos que desenvolver mais nenhuma classe, seja de controle, modelo, persistência (DAO) ou entidades, para obter um resultado de pesquisa REST! Isso porque o jcompany Service é inteligente o suficiente para reutilizar estas configurações e classes para produzir um resultado inicial válido. Caso acessemos o console do Eclipse poderemos notar que o serviço estabelecido acima utiliza a namedquery "querysel" do JPA e/ou Hibernate para estabelecer a recuperação dos dados, sem passar

10 RESTful com JAX-RS e jcompany Service nenhum argumento (pois nenhum foi informado na URL). A Figura G26.16 mostra o SQL resultante da requisição acima. Figura G Query obtida através do método GET. Importante: Note que o jcompany Service reconhece padrões fortes do jcompany como o de "exclusão lógica" implementado pela propriedade "sithistoricoplc". Portanto, o HQL somente traz "funcionários ativos", desprezando os excluídos logicamente (como desejável na maior parte dos casos). Agora que já temos uma relação, vamos recuperar uma entidade específica Fulano de Tal, que aparece em nossa listagem anterior (simulando uma "seleção para edição" de uma ficha de funcionário). Para tanto siga os mesmos passos descritos para o comando anterior, somente acrescentando ao final da URL o Object-Id (valor numérico do "id") da entidade, entre parênteses. A Figura G26.17 mostra o retorno em XML Atom/Publishing, de todos os dados entidade especificamente informada. Figura G Retorno de uma entidade especifica de "Funcionario". O serviço estabelecido acima utilizou a namedquery "queryman" do JPA/Hibernate. Esta Query, além de recuperar os dados do funcionário em si, recupera todos os demais de sua agregação, como os dados dos componentes (Endereco) e de composições (detalhes) que não estejam marcados como "por demanda" na configuração do caso de uso. A Figura G26.18 mostra parte do SQL produzido pela requisição acima.

11 Capítulo G26 Figura G SQL produzido pela edição de uma instância especifica da entidade "Funcionario". - Testando os RESTful Services genéricos para CRUD - inclusão de funcionários Até agora trabalhamos com consultas. O próximo grande passo será a utilização do RESTful Services para incluir um novo registro de "Funcionario" com o nome Adolfo. Para tal monte no campo Request Body do RestClient o XML Atom/Publishing contendo os dados da entidade. O XML retornado na edição ajuda nesta operação. Copie um funcionário aleatório e somente troque seu nome e retire o "id". Abaixo um exemplo do XML no formato Atom, utilizado pelo jcompany_service, na manutenção. O formato do XML segue o padrão Atom, onde o conteúdo do "Entry" é formado pelos dados da entidade. Ele pode ser visto no trecho de Código G26.1: <?xml version="1.0" encoding="utf-8" standalone="yes"?> <entry xmlns="http://www.w3.org/2005/atom"xmlns:plcatom="http://www.powerlogic.com.br/2009/atomplcext"> <content type="application/xml"> <com.empresa.rhtutorial.entidade.funcionario.funcionarioentity xmlns:ns3="http://www.w3.org/2005/atom"> <versao>1</versao>... <unidadeorganizacional> <id>8</id> </unidadeorganizacional>... </com.empresa.rhtutorial.entidade.funcionario.funcionarioentity> </content> </entry> Código G26.1. Formato do XML Atom para envio de dados. Com o XML corretamente montado, selecione o método POST e clique em Send para disparar a requisição de inclusão. A Figura G26.19 mostra o resultado retornado de uma inclusão feita com sucesso.

12 RESTful com JAX-RS e jcompany Service Figura G Inclusão com sucesso de um registro de "Funcionario". Agora vamos acessar o console do Eclipse novamente para verificar o SQL de atualização. Os comandos SQL gerados pelo JPA/Hibernate realizam a verificação de dependências (integridade referencial) e do negócio (integridade de identidade, definida em namedqueries "naodeveexistir) e, por fim, a inclusão de dados da agregação de funcionário. Conforme o SGBD-R em uso podem também surgir comandos SQL voltados para a a obtenção automática do Object-Id (chave primária definida na propriedade "id"). Tudo isso é ilustrado na Figura G Figura G SQL produzidos para inclusão de um "Funcionario". - Testando os RESTful Services genéricos para CRUD - alteração de funcionários Prosseguindo com nossas operações CRUD, iremos agora atualizar o registro inserido acima. Defina no campo "Request Body" o XML Atom/Publishing contendo os dados para atualização, de forma análoga caso de inclusão, porém agora com o cuidado de utilizar o Object-Id (tag "<id>") e também a última versão da entidade (tag "<versao>"), já que o jcompany utiliza o controle de "concorrência otimista" utilizando este atributo, conforme recomendado pelo JPA/Hibernate. A Figura G26.21 mostra o retorno de uma atualização bem sucedida:

13 Capítulo G26 Figura G Resultado da atualização bem-sucedida de um "Funcionario". O comando SQL gerado para atualização de funcionário pode ser vista na Figura G Obs.: Note que, tal como em todos os demais casos, os comandos utilizam "Prepared Statements" devidamente, evitando de misturar argumentos (representados por "?") com comandos SQL. Além disso, todas as atualizações e exclusões são também acompanhadas de um teste de versão, para garantir que o registro não tenha sido alterado por outra pessoa, entre o momento que foi recuperado e o que está sendo atualizado. Estas são algumas das boas práticas de JPA/Hibernate, genericamente estimuladas pelo jcompany. Figura G SQL de atualização de "Funcionario", com teste de identificação e versão (concorrência). - Testando os RESTful Services genéricos para CRUD - exclusão de funcionários O processo de exclusão de entidades é semelhante ao de alteração, porém utilizando o comando DELETE do HTTP. Após montar no Request Body do RESTClient o XML Atom/Publishing contendo Object-Id e versão da entidade na URL, selecione o método DELETE e clique em Send para enviar a requisição de exclusão. A Figura G26.23 mostra um exemplo de Delete.

14 RESTful com JAX-RS e jcompany Service Figura G Remoção de um "Funcionario" via jcompany Service. A console do Tomcat no Eclipse vai nos mostrar agora os SQLs utilizados para exclusão, que englobam também os SQLs de verificação (de toda a agregação). A Figura G26.24 mostra o console. Figura G Query de remoção de um "Funcionario". Importante: note que, muito embora os metadados do caso de uso padrão Funcionário definam o uso de "exclusão lógica" (ou seja, alterar sithistoricoplc para "A", em lugar de excluir fisicamente cada registro), nossa operação REST realizou uma exclusão física. Este comportamento dá mais controle à aplicação de cliente (que neste caso é agnóstica), para que realize exclusões lógicas (com comandos de alteração) e físicas se for preciso.

15 Capítulo G26 Padrões de Programação do jcompany Service - Programações de negócio em serviço REST. Em aplicações reais, apenas as operações de cadastro básico não seriam suficientes para se disponibilizar serviços úteis para os usuários. Felizmente, as regras de negócio programadas nas camadas de modelo para a agregação de funcionário, normalmente codificadas em "FuncionarioRepository" e/ou 'FuncionarioEntity", bem como serviços de DAO complementares em "FuncionarioDAO", serão todas executadas normalmente, tal como ocorrem nas manutenções Web padrões. Alguma variação de comportamento das regras de negócio, portanto, que deva atender somente a serviços REST, deve receber informações adicionais a partir da interceptação da camada de controle, esta sim diferente para cada caso. - Programações de controle e validação variante em serviço REST. A camada controle para serviços REST, como vimos, é inteiramente distinta da camada controle "convencional" do jcompany, baseada em classes de MB e padrão JSF. Não há acoplamento de tecnologia JSF nos controles JAX-RS, o que exatamente lhes tornam flexíveis para funcionar com qualquer cliente desejado. Felizmente, como vimos na introdução (e tal como ocorre no restante do jcompany FS Framework), a arquitetura concebida para o Controle REST permite o reuso total de generalizações mas também permite sua especialização "por exceção", com total flexibilidade para o desenvolvedor. Neste tópico, vamos realizar uma validação variante fictícia apenas para testar o mecanismo de tratamento de exceções via JAX-RS e Atom Publishing. Vamos também incluir algumas mensagens de logging em pontos chave de extensão, para ilustrar outras formas de especializações típicas. Importante: As validações invariantes (definidas nas Entidades, em nível de domínio) são disparadas genericamente pelo jcompany na camada modelo, independentemente da origem da requisição (se for "Web convencional" ou "REST") - e serão melhor discutidas mais abaixo. Nesta seção, vamos ilustrar uma validação "variante", supondo que seja necessária somente nas requisições REST, em um exemplo um tanto forçado mas útil para nosso propósito: "Não é permitido incluir funcionário com curso superior em operações B2B". Para estas validações ou quaisquer outras variações de comportamento específicas para requisições REST, devemos criar uma classe de Controle específica. Em nosso caso, ela deve ser chamada "FuncionarioController" (pode ter qualquer nome, mas as convenções facilitam a manutenção). Conforme explicamos no início do capítulo, deve ainda estender a classe "PlcBaseController" se for preciso implementar apenas códigos complementares. Codifique a regra acima nesta classe, conforme ilustra a Figura G Figura G Classe de controle que implementa a validação descrita acima. As estruturas principais desta classe já foram explicadas no início deste capítulo. Outro ponto de novidade é a obtenção da agregação a partir de sua entidade Raiz, via "getentity()" - Verificando exceções do jcompany Service no RESTClient Sejam exceções disparadas por validações invariantes, sejam programadas como na seção anterior, requisições com método "PUT" ou "POST" no RESTClient serão retornadas de modo homogêneo.

16 RESTful com JAX-RS e jcompany Service Teste o retorno provocando a exceção acima, com a inserção de valores de CPF ou inválidos (invariantes definidas por anotação na entidade Funcionario) ou mesmo burlando uma integridade de dados anotada com namedquery "naodeveexistircpfduplicado". Em quaisquer dos casos, a exceção será retornada de modo similar como apresentado na Figura G26.26, para uma validação de CPF duplicado. Figura G Exceção controlada, provocada por validação a partir de método "POST". Com este padrão homogêneo, uma aplicação de cliente genérica (Swing, Flex,.NET, Mobile, etc.) tem como receber e tratar exceções como desejar, enviando uma mensagem para o usuário ou realizando algum outro procedimento desejado. - Utilizando formato JSON e outros pontos de especialização do jcompany Service Vimos que o jcompany Service preserva as funcionalidades de negócio e validações invariantes e permite programação de regras de validação invariantes. Porém, outras regras de controle são possíveis para cenários diversos. Vamos exemplificá-las simulando a implementação de um serviço REST para funcionamento com um componente de "Grid". Este componente é disponibilizado em Javascript e funciona no padrão RIA, comunicando via REST com o servidor. Ele pode enviar argumentos para filtrar a recuperação da lista de entidades a serem exibidos na tabela do Grid, o que pode exigir outras lógicas de programação complementares de nossa parte, em casos mais complexos. Além disso, este componente envia e recebe dados em formato JSON, e não mais em XML Atom/Publishing, o que exigirá também algumas outras configurações de nossa parte. Para este exemplo, reutilizaremos a mesma classe de controle "FuncionarioController", mas seria possível fazê-lo em outra classe à parte, bastando que anotássemos o qualificador apropriadamente. Implemente os demais códigos conforme a Figura G26.27.

17 Capítulo G26 Figura G Classe "FuncionarioController.java" #1. Anotação de estereótipo informando que a classe é um controle. #2. Anotação de qualificador informando que no nome do controle é "funcionariomdt". #3. A classe criada deve estender "PlcBaseDynamicController". #4. Note que foi utilizado um ponto de especialização padrão que contém a validação de "Não é possível incluir funcionário com curso superior". Com esta demanda implantada já temos um serviços REST servindo JSON, formato que atende aos componentes de Grid' típicos encontrados no mercado, conforme vemos na Figura G26.28: Figura G Retorno de serviço REST em formato JSON. #1. Nome do controle é "funcionariomdt" que corresponde à manutenção de funcionário. #2. Tipo do conversor de dados utilizado pelo controle. #3. A requisição retorna todos os dados das entidades em JSON, formato tipicamente utilizados por componentes de Grid como o "jqgrid" homologado no jcompany. A geração da coleção de entidades no formato JSON para ser consumido pelo componente "Grid", pode ser feita apenas criando um conversor que herda da classe do JCompany que já da suporte a este tipo de geração. A Figura G26.29 mostra a classe "FuncionarioGridConversor" citada acima:

18 RESTful com JAX-RS e jcompany Service Figura G Retorno de serviço REST em formato JSON. Aplicações Cliente para Consumo de Serviços REST - Portando o Web-Services do capítulo anterior para REST Agora que já vimos como é altamente produtivo disponibilizar serviços completos de CRUDS (incluindo Search) no jcompany Service para grafos de entidades padrões, vejamos qual é o esforço para consumirmos estes serviços. Para melhorar nosso entendimento de RESTful Services em comparação com Web Services SOAP, vamos reimplementar exatamente o mesmo serviço do capítulo anterior, para que possa ser servido alternativamente via REST (aliás, prover acesso via ambos os padrões é uma prática muito comum nos provedores atuais). - Testando o novo serviço Note que já inserimos, no exemplo anterior, dois métodos na classe "FuncionarioController" para validar e permitir o uso do campo "CPF" como parâmetro de pesquisa, antecipando a nossa demanda para este tópico. Portanto, para simular a pesquisa basta digitar o CPF na URL, utilizando o RESTClient. A Figura G26.30 mostra a URL e o retorno da pesquisa em formato JSON. Figura G Retorno das entidades através do uso do parâmetro "CPF". #1. URL de requisição "normal". #2. Foi adicionado o parâmetro "?cpf= " para fazer a requisição conforme planejado em nosso serviço.

19 Capítulo G26 #3. A requisição do serviço prestado é retornada em JSON. - Criando a aplicação de consumo Com o serviço devidamente testado, vamos agora à criação em si da aplicação de consumo deste serviço. Note que nada impede que a aplicação cliente seja outra aplicação Java EE, consumindo o serviço em uma anotomia "server-to-server" ou "business-to-business" (B2B). Mas uma das vantagens dos RESTFul Services é a facilidade para se consumir estes serviços diretamente de "clientes finais ou Browsers", via rotinas Javascript bastante simples, como será nosso exemplo. 1. Crie um item de chamada de menu no arquivo "geralmenu.xhtml" e o arquivo XHTML para conter o formulário, com nome "buscafuncionario.xhtml". Obs.: Estes arquivos seguem as práticas semelhantes às que usamos no caso de uso "funcionário" e que, portanto não serão detalhadas nesta documentação. A Figura G26.31 mostra o arquivo "geralmenu.xhtml" enquanto a Figura G26.32 mostra o código do formulário e suas chamadas Javascript/Ajax, no arquivo "buscafuncionario.xhtml". Figura G Arquivo "geralmenu.xhtml" com as configurações de "Busca Funcionário". Figura G Arquivo "buscafuncionario.xhtml". #1. Criação do botão que aciona a busca através do serviço REST. #2. Elemento HTML utilizado para mostrar a resposta do serviço REST. #3. Criação da função JavaScript "buscarcpf". Essa função é disparada ao clicar no botão com o ID "Buscar CPF" #4. Recuperando o valor do campo "CPF" informando o atribuindo a uma variável local. #5. Verificação simples de uma validação de "CPF". #6. Trecho de código responsável por mostrar os dados do "Funcionario" retornado pela chamada Ajax ao serviço REST. #7. Trecho que limpa as mensagens da tela. #8. Caso não tenha encontrado resultado, mostra a seguinte mensagem: "CPF não encontrado".

20 RESTful com JAX-RS e jcompany Service #9. Especifica que a função que trata o retorno do Ajax espera um resultado no formato JSON. 2. Faça uma liberação, entre na aplicação e acesse via menu o caso de uso. A Figura G26.33 mostra o resultado obtido enquanto a Figura G26.34 e a Figura G26.35 mostram o resultado das validações criadas. Figura G Uso do RESTful para retornar um "Funcionario". Figura G Validação de "CPF não encontrado". Figura G Validação de "CPF inválido", disparada quando o campo "CPF" está vazio.

jcompany Service Capítulo Introdução aos RESTful Services via JAX-RS - Um breve histórico sobre REST - O padrão JAX-RS e o jcompany Service

jcompany Service Capítulo Introdução aos RESTful Services via JAX-RS - Um breve histórico sobre REST - O padrão JAX-RS e o jcompany Service A1RESTful com JAX-RS e jcompany Service Capítulo 23 Introdução aos RESTful Services via JAX-RS - Um breve histórico sobre REST Os RESTful Services, de certa maneira, foram a resposta dos programadores

Leia mais

Web-Services com JAX-WS. Capítulo. Introdução aos Web-Services via JAX-WS. - Um breve histórico sobre Web-Services. - SOAP x REST. Provendo um Serviço

Web-Services com JAX-WS. Capítulo. Introdução aos Web-Services via JAX-WS. - Um breve histórico sobre Web-Services. - SOAP x REST. Provendo um Serviço A1Provendo e Consumindo Web-Services com JAX-WS Capítulo 22 Introdução aos Web-Services via JAX-WS - Um breve histórico sobre Web-Services Os Web-Services são uma tecnologia popular para apoiar iniciativas

Leia mais

REST Um Estilo de Arquitetura de Sistemas Distribuídos

REST Um Estilo de Arquitetura de Sistemas Distribuídos REST Um Estilo de Arquitetura de Sistemas Distribuídos Márcio Alves de Araújo¹, Mauro Antônio Correia Júnior¹ 1 Faculdade de Computação Universidade Federal de Uberlândia (UFU) Monte Carmelo MG Brasil

Leia mais

COMPARANDO APLICAÇÃO WEB SERVICE REST E SOAP

COMPARANDO APLICAÇÃO WEB SERVICE REST E SOAP COMPARANDO APLICAÇÃO WEB SERVICE REST E SOAP Cleber de F. Ferreira¹, Roberto Dias Mota¹. ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil cleberferreirasi@hotmail.com, motaroberto@hotmail.com Resumo.

Leia mais

REST. Caio Nakashima caio.nakashima@mds.gov.br caionakashima@gmail.com

REST. Caio Nakashima caio.nakashima@mds.gov.br caionakashima@gmail.com REST Caio Nakashima caio.nakashima@mds.gov.br caionakashima@gmail.com 1 RESTful REpresentation State Transfer Estilo de arquitetura de software para sistemas distribuídos Termo proposto por Roy Fielding

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

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

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

Capítulo 1 - Java EE 6 por alto - 1 Capítulo 1 - Java EE 6 por alto - 1 Um pouquinho de história - 2 Padrões - 4 Arquitetura - 4 Componentes - 5 Contentores - 6 Serviços - 7 Protocolos de rede - 9 Empacotamento - 9 Java Standard Edition

Leia mais

SOA (BPM e WS/RS) Módulo

SOA (BPM e WS/RS) Módulo 1 Módulo G A.RIA, Extensions e SOA (BPM e WS/RS) Este módulo introduz novidades das versões 5.5.x e 6.0.x do jcompany Developer Suite, em áreas de grande impacto no desenvolvimento de sistemas atuais,

Leia mais

Padrão "Arquivo Anexado"

Padrão Arquivo Anexado 6Implementando a Inclusão Padrão "Arquivo Anexado" Capítulo 9 - Prosseguindo na Implementação de UC002 Manter Funcionário! - Introdução No capítulo anterior, implementamos a manutenção de toda a Agregação

Leia mais

Integração de sistemas utilizando Web Services do tipo REST

Integração de sistemas utilizando Web Services do tipo REST Integração de sistemas utilizando Web Services do tipo REST Jhonatan Wilson Aparecido Garbo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí PR Brasil jhowgarbo@gmail.com jaime@unipar.br

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

Ricardo R. Lecheta. Novatec

Ricardo R. Lecheta. Novatec Ricardo R. Lecheta Novatec Copyright 2015 da Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer

Leia mais

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena Tópicos Motivação e Objetivos LP e SOA Processo ADESE

Leia mais

Programando em PHP. Conceitos Básicos

Programando em PHP. Conceitos Básicos Programando em PHP www.guilhermepontes.eti.br lgapontes@gmail.com Conceitos Básicos Todo o escopo deste estudo estará voltado para a criação de sites com o uso dos diversos recursos de programação web

Leia mais

Manual de Consulta Web Service Consulta ao SCR para Instituições Financeiras

Manual de Consulta Web Service Consulta ao SCR para Instituições Financeiras Manual de Consulta Web Service Consulta ao SCR para Instituições Financeiras 1. Introdução O que é a Consulta ao SCR via Web Service? A consulta ao SCR via Web Service permite a consulta da posição consolidada

Leia mais

CURSO DESENVOLVEDOR JAVA Edição 2009

CURSO DESENVOLVEDOR JAVA Edição 2009 CURSO DESENVOLVEDOR JAVA Edição 2009 O curso foi especialmente planejado para os profissionais que desejam trabalhar com desenvolvimento de sistemas seguindo o paradigma Orientado a Objetos e com o uso

Leia mais

ruirossi@ruirossi.pro.br

ruirossi@ruirossi.pro.br Persistência Com JPA & Hibernate Rui Rossi dos Santos ruirossi@ruirossi.pro.br Mediador: Rui Rossi dos Santos Slide 1 Mapeamento Objeto-Relacional Contexto: Linguagem de programação orientada a objetos

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

Figura C13.1. Diagrama de Casos de Uso para UC004 Registrar Proventos e Descontos!.

Figura C13.1. Diagrama de Casos de Uso para UC004 Registrar Proventos e Descontos!. A6Implementando o Padrão "Manter Coleção" Capítulo 13 Implementação o Caso de Uso UC004 Registrar Proventos e Descontos! - Analisando a Especificação Analisando o estereótipo do Caso de Uso da especificação

Leia mais

CURSO DESENVOLVEDOR JAVA Edição Intensiva de Férias

CURSO DESENVOLVEDOR JAVA Edição Intensiva de Férias CURSO DESENVOLVEDOR JAVA Edição Intensiva de Férias O curso foi especialmente planejado para os profissionais que desejam trabalhar com desenvolvimento de sistemas seguindo o paradigma Orientado a Objetos

Leia mais

Consumindo um Web Service através de uma Aplicação Comercial em Android. Alex Malmann Becker www.alex.porthal.com.br alex@porthal.com.

Consumindo um Web Service através de uma Aplicação Comercial em Android. Alex Malmann Becker www.alex.porthal.com.br alex@porthal.com. Consumindo um Web Service através de uma Aplicação Comercial em Android Alex Malmann Becker www.alex.porthal.com.br alex@porthal.com.br 08/2014 Agenda Introdução Conceitos Web Service Por que utilizar

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

CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011

CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011 CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011 O curso foi especialmente planejado para os profissionais que desejam trabalhar com desenvolvimento de sistemas seguindo o paradigma

Leia mais

Desenvolvendo para WEB

Desenvolvendo para WEB Nível - Básico Desenvolvendo para WEB Por: Evandro Silva Neste nosso primeiro artigo vamos revisar alguns conceitos que envolvem a programação de aplicativos WEB. A ideia aqui é explicarmos a arquitetura

Leia mais

Arquiteturas SOA, WOA, e REST

Arquiteturas SOA, WOA, e REST Arquiteturas SOA, WOA, e REST Aplicação de Software Social Fred Figueiredo Luiz Borges Pedro Pires Arquiteturas SOA, WOA e REST Desenvolvimento de aplicações orientadas ao fornecimento de serviços que

Leia mais

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

Powerlogic Agosto / 2011.

Powerlogic Agosto / 2011. Formação de Profissionais para Desenvolvimento Java EE/Web 2.0 Orientações para capacitação de mão de obra especializada para atividades de Especificação, Arquitetura e Implementação de Aplicações Java

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

ProJuris 8: Manual de Integração com Provedores de Recortes

ProJuris 8: Manual de Integração com Provedores de Recortes ProJuris 8: Manual de Integração com Provedores de Recortes Versão 2.0 por Gabriel Cherem agosto/2014 Motivação Pelo menos 50% de todas as sociedades de advogados no Brasil utilizam algum software para

Leia mais

Geração e execução de scripts de teste em aplicações web a partir de casos de uso direcionados por comportamento 64

Geração e execução de scripts de teste em aplicações web a partir de casos de uso direcionados por comportamento 64 direcionados por comportamento 64 5 Estudo de caso Neste capítulo serão apresentadas as aplicações web utilizadas na aplicação da abordagem proposta, bem como a tecnologia em que foram desenvolvidas, o

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 Sistemas Distribuídos Basedos na Web Capítulo 12 Agenda Arquitetura Processos Comunicação Nomeação Sincronização Consistência e Replicação Introdução

Leia mais

ANEXO 05 ARQUITETURAS TECNOLÓGICAS PROCERGS

ANEXO 05 ARQUITETURAS TECNOLÓGICAS PROCERGS ANEXO 05 ARQUITETURAS TECNOLÓGICAS PROCERGS Este anexo apresenta uma visão geral das seguintes plataformas: 1. Plataforma Microsoft.NET - VB.NET e C#; 2. Plataforma JAVA; 3. Plataforma Android, ios e Windows

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

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP Software cliente: browser e outros Protocolo HTTP Infraestrutura de transporte

Leia mais

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider Ferramenta: Spider-CL Manual do Usuário Versão da Ferramenta: 1.1 www.ufpa.br/spider Histórico de Revisões Data Versão Descrição Autor 14/07/2009 1.0 15/07/2009 1.1 16/07/2009 1.2 20/05/2010 1.3 Preenchimento

Leia mais

WOW Mobile Rui Miguel Miranda Ramos

WOW Mobile Rui Miguel Miranda Ramos WOW Mobile Rui Miguel Miranda Ramos Programa 1. Plataforma WOW 2. WOW Mobile 3. API do WOW 4. Clientes 5. Conclusões Plataforma WOW Plataforma WOW Issue tracking system Motor de workflow flexível Plataforma

Leia mais

2 Conceitos relativos a Web services e sua composição

2 Conceitos relativos a Web services e sua composição 15 2 Conceitos relativos a Web services e sua composição A necessidade de flexibilidade na arquitetura das aplicações levou ao modelo orientado a objetos, onde os processos de negócios podem ser representados

Leia mais

Universidade Federal de Goiás Centro de Recursos Computacionais - CERCOMP Divisão de Sistemas. Criação de uma Serviço de Geração de Relatórios

Universidade Federal de Goiás Centro de Recursos Computacionais - CERCOMP Divisão de Sistemas. Criação de uma Serviço de Geração de Relatórios Universidade Federal de Goiás Centro de Recursos Computacionais - CERCOMP Divisão de Sistemas Criação de uma Serviço de Geração de Relatórios Goiânia 12/2011 Versionamento 12/12/2011 Hugo Marciano... 1.0

Leia mais

Como já foi muito bem detalhado no Capítulo IV, o jcompany Developer Suite pode ser

Como já foi muito bem detalhado no Capítulo IV, o jcompany Developer Suite pode ser A1Criando um módulo de negócio Capítulo 27 Aplicação dividida em módulos - Introdução Como já foi muito bem detalhado no Capítulo IV, o jcompany Developer Suite pode ser compreendido como uma solução de

Leia mais

Documento de Arquitetura

Documento de Arquitetura Documento de Arquitetura A2MEPonto - SISTEMA DE PONTO ELETRÔNICO A2MEPonto - SISTEMA DE PONTO ELETRÔNICO #1 Pág. 1 de 11 HISTÓRICO DE REVISÕES Data Versão Descrição Autor 28/10/2010 1 Elaboração do documento

Leia mais

WWW - World Wide Web

WWW - World Wide Web WWW World Wide Web WWW Cap. 9.1 WWW - World Wide Web Idéia básica do WWW: Estratégia de acesso a uma teia (WEB) de documentos referenciados (linked) em computadores na Internet (ou Rede TCP/IP privada)

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

Arquitetura de uma Webapp

Arquitetura de uma Webapp Arquitetura de uma Webapp Arquitetura J2EE Containers e componentes MVC: introdução Frederico Costa Guedes Pereira 2006 fredguedespereira@gmail.com Plataforma J2EE World Wide Web e a Economia da Informação

Leia mais

Serviços Web: Introdução

Serviços Web: Introdução Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Objetivos Nesta aula

Leia mais

Desenvolvendo e Integrando Serviços Multiplataforma de TV Digital Interativa

Desenvolvendo e Integrando Serviços Multiplataforma de TV Digital Interativa Desenvolvendo e Integrando Serviços Multiplataforma de TV Digital Interativa Agenda Introdução Aplicações interativas de TV Digital Desafios de layout e usabilidade Laboratório de usabilidade Desafios

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

PROGRAMAÇÃO PARA INTERNET RICA RICH INTERNET APPLICATIONS

PROGRAMAÇÃO PARA INTERNET RICA RICH INTERNET APPLICATIONS PROGRAMAÇÃO PARA INTERNET RICA RICH INTERNET APPLICATIONS Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o que é uma Aplicação Rica para Internet Contextualizar tais aplicações na Web e os desafios

Leia mais

Parte I. Demoiselle Vaadin

Parte I. Demoiselle Vaadin Parte I. Demoiselle Vaadin O Vaadin é um framework para construção de interfaces web que aplica ideias inovadoras. Apesar de usar o GWT como mecanismo para a exibição de seus componentes, eles tem características

Leia mais

Introdução. Nesta guia você aprenderá:

Introdução. Nesta guia você aprenderá: 1 Introdução A criação de uma lista é a primeira coisa que devemos saber no emailmanager. Portanto, esta guia tem por objetivo disponibilizar as principais informações sobre o gerenciamento de contatos.

Leia mais

Manter Agregação Simples

Manter Agregação Simples 6Implementando o Padrão Manter Agregação Simples Capítulo 7 Implementando UC001.2 Manter Unidade Organizacional- - Analisando a especificação A segunda especificação de Caso de Uso que iremos implementar

Leia mais

3 Serviços na Web (Web services)

3 Serviços na Web (Web services) 3 Serviços na Web (Web services) 3.1. Visão Geral Com base na definição do Word Wide Web Consortium (W3C), web services são aplicações autocontidas, que possuem interface baseadas em XML e que descrevem

Leia mais

Service Oriented Architecture SOA

Service Oriented Architecture SOA Service Oriented Architecture SOA Arquitetura orientada aos serviços Definição: Arquitetura de sistemas distribuídos em que a funcionalidade é disponibilizada sob a forma de serviços (bem definidos e independentes)

Leia mais

Web Services. Autor: Rômulo Rosa Furtado

Web Services. Autor: Rômulo Rosa Furtado Web Services Autor: Rômulo Rosa Furtado Sumário O que é um Web Service. Qual a finalidade de um Web Service. Como funciona o serviço. Motivação para o uso. Como construir um. Referências. Seção: O que

Leia mais

Vamos iniciar a nossa exploração do HTTP baixando um arquivo em HTML simples - bastante pequeno, que não contém objetos incluídos.

Vamos iniciar a nossa exploração do HTTP baixando um arquivo em HTML simples - bastante pequeno, que não contém objetos incluídos. Wireshark Lab: HTTP Versão 1.1 2005 KUROSE, J.F & ROSS, K. W. Todos os direitos reservados 2008 BATISTA, O. M. N. Tradução e adaptação para Wireshark. Tendo molhado os nossos pés com o Wireshark no laboratório

Leia mais

PROGRAMAÇÃO SERVIDOR WEBSERVICES EM SISTEMAS WEB. Prof. Dr. Daniel Caetano 2012-1

PROGRAMAÇÃO SERVIDOR WEBSERVICES EM SISTEMAS WEB. Prof. Dr. Daniel Caetano 2012-1 PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB WEBSERVICES Prof. Dr. Daniel Caetano 2012-1 Objetivos Compreender o que é um WebService e sua utilidade Compreender a lógica de funcionamento de um WebService Capacitar

Leia mais

Testes de Software. Anne Caroline O. Rocha TesterCertified BSTQB NTI UFPB. Anne Caroline O. Rocha Tester Certified BSTQB NTI UFPB

Testes de Software. Anne Caroline O. Rocha TesterCertified BSTQB NTI UFPB. Anne Caroline O. Rocha Tester Certified BSTQB NTI UFPB Testes de Software 1 AULA 04 FERRAMENTAS DE AUTOMAÇÃO DE TESTES FUNCIONAIS Anne Caroline O. Rocha TesterCertified BSTQB NTI UFPB Conteúdo Programático Aula 04 Automação de testes funcionais Ferramentas

Leia mais

Web Services. (Introdução)

Web Services. (Introdução) Web Services (Introdução) Agenda Introdução SOA (Service Oriented Architecture) Web Services Arquitetura XML SOAP WSDL UDDI Conclusão Introdução Comunicação distribuída Estratégias que permitem a comunicação

Leia mais

Sistemas para internet e software livre

Sistemas para internet e software livre Sistemas para internet e software livre Metodologia de modelagem de aplicações WEB Image: FreeDigitalPhotos.net Domínio: Elementos de aplicação WEB Páginas Web Scripts Formulários Applets e ActiveX Motivação

Leia mais

PROCESSO JUDICIAL ELETRÔNICO PJe

PROCESSO JUDICIAL ELETRÔNICO PJe PROCESSO JUDICIAL ELETRÔNICO PJe TRIBUNAL REGIONAL FEDERAL DA 5ª REGIÃO MANUAL DO SERVIDOR 1ºGRAU MÓDULO 1 Sumário 1 Acesso ao Sistema...3 2 Quadro de Aviso...4 3 Menu...8 3.1 Audiência...8 3.1.1 Tempo

Leia mais

Desenvolvendo Aplicações Web com NetBeans

Desenvolvendo Aplicações Web com NetBeans Desenvolvendo Aplicações Web com NetBeans Aula 3 Cap. 4 Trabalhando com Banco de Dados Prof.: Marcelo Ferreira Ortega Introdução O trabalho com banco de dados utilizando o NetBeans se desenvolveu ao longo

Leia mais

Anexo I - DAS (Documento de Arquitetura de Software) Concurso de Desenvolvimento de Jogos SEBRAE

Anexo I - DAS (Documento de Arquitetura de Software) Concurso de Desenvolvimento de Jogos SEBRAE Anexo I - DAS (Documento de Arquitetura de Software) Concurso de Desenvolvimento de Jogos SEBRAE 1 Sumário Sumário... 2 1 INTRODUÇÃO... 3 1.1 Propósito... 3 1.2 Escopo... 3 1.3 Referências... 3 2 DIRETRIZES...

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

ESPECIFICAÇÃO E INTEGRAÇÃO

ESPECIFICAÇÃO E INTEGRAÇÃO \ Sistema Integrado de Gestão de Administrativa - White Paper - ESPECIFICAÇÃO E INTEGRAÇÃO Controle de Versão Versão Responsabilidade Início de elaboração Final de elaboração Atividade 0.01 Renato Crivano

Leia mais

SOA. Service Oriented Architecture. Maxmiliano Franco Braga

SOA. Service Oriented Architecture. Maxmiliano Franco Braga SOA Service Oriented Architecture Maxmiliano Franco Braga Agenda O que é? SOA Glossário de SOA Vantagens e Cuidados Exemplos Viagem Restaurante Processos do MP O que é SOA? [1] Service Oriented Architecture

Leia mais

Desenvolvimento Web. Saymon Yury C. Silva Analista de Sistemas. http://www.saymonyury.com.br

Desenvolvimento Web. Saymon Yury C. Silva Analista de Sistemas. http://www.saymonyury.com.br Desenvolvimento Web Saymon Yury C. Silva Analista de Sistemas http://www.saymonyury.com.br Vantagens Informação em qualquer hora e lugar; Rápidos resultados; Portabilidade absoluta; Manutenção facilitada

Leia mais

7 Utilização do Mobile Social Gateway

7 Utilização do Mobile Social Gateway 7 Utilização do Mobile Social Gateway Existem três atores envolvidos na arquitetura do Mobile Social Gateway: desenvolvedor do framework MoSoGw: é o responsável pelo desenvolvimento de novas features,

Leia mais

Tratamento de Eventos Orientado à Composição de Serviços Web Documento Técnico para Configuração e Validações Práticas (data: 27/02/2012)

Tratamento de Eventos Orientado à Composição de Serviços Web Documento Técnico para Configuração e Validações Práticas (data: 27/02/2012) Tratamento de Eventos Orientado à Composição de Serviços Web Documento Técnico para Configuração e Validações Práticas (data: 27/02/2012) Mauricio Chui Rodrigues (chui@usp.br) Índice 1. Introdução...3

Leia mais

Web Services. Integração de aplicações na Web. Sistemas Distribuídos

Web Services. Integração de aplicações na Web. Sistemas Distribuídos Web Services Integração de aplicações na Web Integração de Aplicações na Web Interoperação entre ambientes heterogêneos desafios diversidade de componentes: EJB, CORBA, DCOM... diversidade de linguagens:

Leia mais

FUNDAÇÃO PARQUE TECNOLÓGICO DE SANTOS

FUNDAÇÃO PARQUE TECNOLÓGICO DE SANTOS Anexo I Modelo para inscrição e apresentação dos projetos EDITAL DE CONVOCAÇÃO PÚBLICA nº 01/2016 1. IDENTIFICAÇÃO 1.1 Nome ou Razão Social 1.2 Ramo de atividade (se empresa) 1.3 Endereço completo 1.4

Leia mais

UNIVERSIDADE. Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira Neto Web Services Web Services Existem diferentes tipos de comunicação em um sistema distribuído: Sockets Invocação

Leia mais

Criando Aplicações PHP com. Zend e Dojo. Flávio Gomes da Silva Lisboa. Novatec

Criando Aplicações PHP com. Zend e Dojo. Flávio Gomes da Silva Lisboa. Novatec Criando Aplicações PHP com Zend e Dojo Flávio Gomes da Silva Lisboa Novatec Copyright 2013 da Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a

Leia mais

BI Citsmart Fornece orientações necessárias para instalação, configuração e utilização do BI Citsmart.

BI Citsmart Fornece orientações necessárias para instalação, configuração e utilização do BI Citsmart. 16/08/2013 BI Citsmart Fornece orientações necessárias para instalação, configuração e utilização do BI Citsmart. Versão 1.0 19/12/2014 Visão Resumida Data Criação 19/12/2014 Versão Documento 1.0 Projeto

Leia mais

Ricardo R. Lecheta. Novatec

Ricardo R. Lecheta. Novatec Ricardo R. Lecheta Novatec Copyright 2015 da Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer

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

DWR DIRECTED WEB REMOTING

DWR DIRECTED WEB REMOTING DWR DIRECTED WEB REMOTING Vamos ver nesse artigo um pouco sobre o Frameworks Ajax para Java, o DWR. Vamos ver seus conceitos, utilidades, vantagens, algumas práticas e fazer o passo a passo para baixar,

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

RestFull WebServices. Rafael Nunes Arquiteto de Software / Instrutor Globalcode. Globalcode Open4Education

RestFull WebServices. Rafael Nunes Arquiteto de Software / Instrutor Globalcode. Globalcode Open4Education RestFull WebServices Rafael Nunes Arquiteto de Software / Instrutor Globalcode 1 REST Integrando aplicações e disponibilizando serviços sem complicar a vida de ninguém. 2 Agenda > Integrando Aplicações

Leia mais

Apostila da Ferramenta AdminWEB

Apostila da Ferramenta AdminWEB Apostila da Ferramenta AdminWEB Apostila AdminWEB SUMÁRIO OBJETIVO DO CURSO... 3 CONTEÚDO DO CURSO... 4 COMO ACESSAR O SISTEMA... 5 CONHEÇA OS COMPONENTES DA PÁGINA... 6 COMO EFETUAR O LOGIN... 9 MANTER

Leia mais

Aula 2: RIA - Aplicações Ricas para Internet Fonte: Plano de Aula Oficial da Disciplina

Aula 2: RIA - Aplicações Ricas para Internet Fonte: Plano de Aula Oficial da Disciplina Programação para Internet Rica 1 Aula 2: RIA - Aplicações Ricas para Internet Fonte: Plano de Aula Oficial da Disciplina Objetivo: Identificar as principais características de uma Aplicação Internet Rica.

Leia mais

Integrated User Verification Guia de Implementação do Cliente 2015-05-04 Confidencial Versão 2.9

Integrated User Verification Guia de Implementação do Cliente 2015-05-04 Confidencial Versão 2.9 Integrated User Verification Guia de Implementação do Cliente 2015-05-04 Confidencial Versão 2.9 SUMÁRIO Introdução... 2 Finalidade e público-alvo... 2 Sobre este documento... 2 Termos mais utilizados...

Leia mais

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Aula 2 Computação em Nuvem Desafios e Oportunidades A Computação em Nuvem

Leia mais

ORDEM DE SERVIÇO OS 003/DINFO/2013 16/09/2013

ORDEM DE SERVIÇO OS 003/DINFO/2013 16/09/2013 A DIRETORIA DE INFORMÁTICA DINFO DA UNIVERSIDADE DO ESTADO DO RIO DE JANEIRO -UERJ, no uso de suas atribuições legais, estabelece: Art. 1º: Para fins de normatização do Desenvolvimento Tecnológico na UERJ

Leia mais

Manual do Instar Mail Sumário

Manual do Instar Mail Sumário Manual do Instar Mail Sumário 1 - Apresentação do sistema... 2 2 - Menu cliente... 2 3 - Menu Importação... 5 4 - Menu Campanhas... 9 5 - Menu banco de arquivos... 16 6 - Menu agendamento... 16 7 - Menu

Leia mais

Service Oriented Architecture (SOA)

Service Oriented Architecture (SOA) São Paulo, 2011 Universidade Paulista (UNIP) Service Oriented Architecture (SOA) Prof. MSc. Vladimir Camelo vladimir.professor@gmail.com 04/09/11 vladimir.professor@gmail.com 1 04/09/11 vladimir.professor@gmail.com

Leia mais

Boas Práticas de Desenvolvimento Seguro

Boas Práticas de Desenvolvimento Seguro Boas Práticas de Desenvolvimento Seguro Julho / 2.012 Histórico de Revisões Data Versão Descrição Autor 29/07/2012 1.0 Versão inicial Ricardo Kiyoshi Página 2 de 11 Conteúdo 1. SEGURANÇA DA INFORMAÇÃO

Leia mais

Millennium ECO 2.0 (beta)

Millennium ECO 2.0 (beta) MILLENNIUM NETWORK Millennium ECO 2.0 (beta) Documentação Técnica (draft) 10/2013 Este documento contém as instruções para a utilização da biblioteca Millenium_Eco que se presta à comunicação de aplicativos

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

AJAX no GASweb. Mas e afinal, para que usamos o AJAX?

AJAX no GASweb. Mas e afinal, para que usamos o AJAX? Nível - Avançado AJAX no GASweb Por: Pablo Hadler AJAX (Asynchronous Javascript and XML) foi criado com o princípio de ser uma maneira rápida e otimizada de podermos fazer requisições Web, sendo esta totalmente

Leia mais

A barra de menu a direita possibilita efetuar login/logout do sistema e também voltar para a página principal.

A barra de menu a direita possibilita efetuar login/logout do sistema e também voltar para a página principal. MANUAL DO SISCOOP Sumário 1 Menu de Navegação... 3 2 Gerenciar País... 5 3- Gerenciamento de Registro... 8 3.1 Adicionar um registro... 8 3.2 Editar um registro... 10 3.3 Excluir um registro... 11 3.4

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 Modelo Cliente- Servidor Modelo de Aplicação Cliente-servidor Os

Leia mais

Anexo V - Planilha de Apuração Aquisição de Solução de Redes Sociais

Anexo V - Planilha de Apuração Aquisição de Solução de Redes Sociais Anexo V - Planilha de Apuração Aquisição de Solução de Redes Sociais Será utilizado o seguinte critério: Atende / Não atende (Atende em parte será considerado Não atende) Item Itens a serem avaliados conforme

Leia mais

Conecta S_Line. 2.2 Downloads Para instalar o Conecta S_Line, basta acessar www.sline.com.br/downloads.aspx

Conecta S_Line. 2.2 Downloads Para instalar o Conecta S_Line, basta acessar www.sline.com.br/downloads.aspx 1 Introdução O Conecta S_Line permite que o laboratório envie à Central S_Line os resultados de exames gerados pelo Sistema de Informação Laboratorial (LIS) em forma de arquivos digitais. Todo o processo

Leia mais

Manual de baixa do Certificado Digital AR SOLUTI. Versão 2.0 de 22 de Maio de 2014. Classificação: Ostensiva

Manual de baixa do Certificado Digital AR SOLUTI. Versão 2.0 de 22 de Maio de 2014. Classificação: Ostensiva Catalogação do Documento Titulo Classificação Versão 2.0 de 22 de Maio de 2014 Autor Raphael Reis Aprovador Bruno Barros Número de páginas 43 Página 2 de 43 Sumário 1 Sistema operacional compatível para

Leia mais

Moodle FTEC Versão 2.0 Manual do Usuário Acesse a área de LOGIN do site da FTEC www.ftec.com.br

Moodle FTEC Versão 2.0 Manual do Usuário Acesse a área de LOGIN do site da FTEC www.ftec.com.br Moodle FTEC Versão 2.0 Manual do Usuário Acesse a área de LOGIN do site da FTEC www.ftec.com.br Índice Como acessar o Moodle Editando seu PERFIL Editando o curso / disciplina no Moodle Incluindo Recursos

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

WEBDESIGN. Professor: Paulo Trentin paulo@paulotrentin.com.br http://www.paulotrentin.com.br Escola CDI de Videira

WEBDESIGN. Professor: Paulo Trentin paulo@paulotrentin.com.br http://www.paulotrentin.com.br Escola CDI de Videira WEBDESIGN Professor: Paulo Trentin paulo@paulotrentin.com.br http://www.paulotrentin.com.br Escola CDI de Videira 1 CDI - Curso de Webdesign - Prof. Paulo Trentin Objetivos para esta aula Debater sobre

Leia mais

www.f2b.com.br 18/04/2006 Micropagamento F2b Web Services Web rev 00

www.f2b.com.br 18/04/2006 Micropagamento F2b Web Services Web rev 00 www.f2b.com.br 18/04/2006 Micropagamento F2b Web Services Web rev 00 Controle de Revisões Micropagamento F2b Web Services/Web 18/04/2006 Revisão Data Descrição 00 17/04/2006 Emissão inicial. www.f2b.com.br

Leia mais