Desenvolvimento de Sistemas - Middlewares

514 visualizações

Publicada em

Aula sobre Middlwares da disciplina Desenvolvimento de Sistemas.

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
514
No SlideShare
0
A partir de incorporações
0
Número de incorporações
7
Ações
Compartilhamentos
0
Downloads
13
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Desenvolvimento de Sistemas - Middlewares

  1. 1. Instituto Federal de Educação, Ciência e Tecnologia Triângulo Mineiro – Campus Uberlândia Centro Pós Graduação em Análise e Desenvolvimento de Sistemas Aplicados à Gestão Empresarial 1 Desenvolvimento de Sistemas Prof. Carlos Eduardo de Carvalho Dantas carloseduardodantas@iftm.edu.br
  2. 2. Parte I – Conceitos em Desenvolvimento de Sistemas 2
  3. 3. AGENDA 1. Middlewares • Definições • Especificação Java EE • Servidores de aplicação • Servlet Container • Estudo de caso: Wildfly 3
  4. 4. DEFINIÇÕES - Sites WEB vs Sistemas WEB • Até o final do século XX, páginas HTML com scripts no lado cliente (JavaScript), ou no lado servidor (PHP, ASP, JSP, CGI,etc..) eram utilizados quase que exclusivamente para construção de Sites para a Internet. Sistemas empresariais com suas regras de negócio possuíam a camada view em formato GUI (graphical user interface); • Com o surgimento de tecnologias como AJAX, ADOBE FLEX, JSF e ASP.NET, aliado com as vantagens de centralização que a web oferece, os Sistemas empresariais começaram a migrar a camada view do formato GUI para web. • Com isso, Sistemas empresariais começaram a ser executados a partir de Middlewares, facilitando a criação dos ERPs. 4
  5. 5. DEFINIÇÕES - ERP • ERP é um Software que visa a integração de todos os departamentos e funções de uma empresa, ou seja, do chão de fábrica à logística, em um único sistema. • O objetivo dos ERPs é eliminar o conjunto de sistemas que as organizações possuem para os diversos departamentos, centralizando o controle. • Uma consequência natural nos ERPs é que cada sub-sistema se transforme em um módulo, fornecendo e consumindo serviços de outros sub-sistemas. • Exemplo: Sub-Sistema de Pedidos precisa saber se determinado produto possui estoque. O sub-sistema de Estoque irá fornecer a resposta. • A descentralização de sistemas pode gerar cadastros duplicados, assim como rotinas duplicadas. • Exemplo: Diversos sistemas possuírem a regra de negócio que verifica se determinado produto possui estoque. Caso essa regra sofra mudança, todos os sistemas deverão ser alterados. 5
  6. 6. Sistemas DEFINIÇÕES Sistemas 6 Pedidos Estoque Cadastro Sistema Operacional Arquitetura sem o uso de Middleware Sistema Operacional Arquitetura com o uso de Middleware CadastroEstoque Pedidos Sistemas Middleware Bibliotecas Executáveis
  7. 7. DEFINIÇÕES - Requisitos Funcionais e não-funcionais • Softwares geralmente possuem regras de negócio relativamente complicadas • Estes são os requisitos funcionais • Com o avanço da tecnologia, os Softwares precisam de uma infraestrutura cada vez mais robusta: persistência em banco de dados, transação, acesso remoto, web services, gerenciamento de threads, gerenciamento de conexões HTTP, cache de objetos, gerenciamento da sessão web, balanceamento de carga, entre outros. • Estes são os requisitos não-funcionais. • Implementar código-fonte que trate requisitos não-funcionais é bastante trabalhoso. • Seria interessante possuir uma infraestrutura já pronta, e reutilizá-la em vários sistemas. Desta forma, o Middleware não apenas funcionaria como um centralizador, mas também seria um facilitador, fornecendo recursos complexos que os sistemas necessitam. 7
  8. 8. DEFINIÇÕES - Exemplos de Middlewares para ERPs • Java – Servidores de Aplicação que implementam a Especificação Java EE • .Net – Servidores IIS com suporte para componentes MTS/COM+ 8
  9. 9. ESPECIFICAÇÃO JAVA EE (cont.) - Java EE • Consiste em uma série de especificações (ou APIs) bem detalhadas, dando uma receita de como deve ser implementado um Software que faz cada um dos serviços de infraestrutura. • Softwares poderão consumir esses serviços, sem necessidade de implementar requisitos não-funcionais, consequentemente liberando o desenvolvedor para se concentrar na implementação dos requisitos funcionais. • Contudo é necessário que o desenvolvedor conheça profundamente os conceitos envolvidos nos requisitos não-funcionais, pois precisará parametrizar as diversas variáveis envolvidas nestes serviços, para utilizá-los de maneira correta. • Especificações geralmente não possuem vendor lock-in, permitindo a troca de fornecedores dos serviços sem muitas alterações no código-fonte do Software. 9
  10. 10. ESPECIFICAÇÃO JAVA EE (cont.) - Histórico Java EE 10 J2EE 1.4 – Servlets 2.4 (JSR-154), JSP 2.0 (JSR-152), JSTL 1.1 (JSR-52), JSF 1.1 (JSR-127), EJB 2.1 (JSR- 153), JTA 1.0 (JSR-58),etc.. J2EE 1.3 – JDBC 2.0, JSP 1.2, Servlet 2.3, JSTL 1.0, EJB 2.0, JMS 1.0,JAXP 1.1 J2EE 1.2 – JNDI 1.2, RMI-IIOP 1.1, Servlet 2.2, JSP 1.1, EJB 1.1, JavaMail 1.1
  11. 11. ESPECIFICAÇÃO JAVA EE (cont.) - Histórico Java EE (cont.) 11 Java EE 7 – JSF 2.2 (JSR-344),JPA 2.1 (JSR-338), CDI 1.1 (JSR-346), EJB 3.2 (JSR-345), JAX-RS 2.0 (JSR-339), JMS 2.0 (JSR-343), Bean Validation 1.1 (JSR-349),etc.. Java EE 6 – Servlets 3.0 (JSR-315), JSF 2.0 (JSR-314), Bean Validation 1.0 (JSR-303), JPA 2.0 (JSR-317), JAXB 2.2 (JSR-222), JAX-WS 2.2 (JSR-109), JAX-RS 1.1 (JSR-311), DI 1.0 (JSR-330),etc.. Java EE 5 – JSF 1.2 (JSR-252), EJB 3.0 (JSR-220), JPA 1.0 (JSR-220), Servlets 2.5 (JSR-154), JMS 1.1 (JSR-914),JTA 1.1(JSR-907),etc..
  12. 12. ESPECIFICAÇÃO JAVA EE (cont.) - JCP (Java Community Process) • Grupo responsável por gerir as especificações Java EE • http://www.jcp.org - JSR (Java Specification Request) • São basicamente novos pedidos de bibliotecas e especificações para o Java, seja para o Java SE ou Java EE. • Executive Committee (EC) - Os membros que guiam a evolução das tecnologias Java. O EC representa os maiores interessados e outros membros da comunidade Java. Eles são nomeados em uma eleição anual. • Expert Group (EG) O grupo de Experts que desenvolvem e fazem revisões significativas na especificação. 12
  13. 13. ESPECIFICAÇÃO JAVA EE (cont.) - APIs Java EE - As idéias em torno da criação de cada API surge em função das novas técnicas implementadas em frameworks, especialmente open source - Java EE 5 – JPA 1.0 e EJB 3.0 surgiram como fruto de diversas técnicas implementadas em frameworks como Hibernate (MOR) e Spring (IOC) - Java EE 6 – JPA 2.0 incrementou diversas técnicas já implementadas em frameworks MOR, como a API Criteria. Bean Validation surgiu de idéias como o Hibernate Validator. - Java EE 7 – soluções como Web Sockets e processamento JSON surgiram em função do crescente uso destas soluções no lado front-end. JAX-RS em função da ampla adoção de REST como solução de alta interoperabilidade. - Java EE 8 (previsão 1º semestre 2017) – irá adotar novas APIs como JCache 1.0, inspirado em soluções como EhCache e MVC 1.0, inspirado em soluções como o framework V-Raptor. 13
  14. 14. ESPECIFICAÇÃO JAVA EE (cont.) - Java (ou Java SE) != Java EE • Java é uma plataforma, máquina virtual e linguagem de programação. Java EE é uma especificação onde o código-fonte é escrito em Java; • A cada nova versão do Java, novos recursos são disponibilizados. Consequentemente, a especificação Java EE também avança com uma nova versão, utilizando estes novos recursos. • Exemplo: Com o lançamento do Java 5, recursos como anotações (annotations) foram disponibilizados. Com isso, algum tempo depois a especificação Java EE 5 foi lançada com diversas novas especificações que utilizam anotações. 14
  15. 15. SERVIDORES DE APLICAÇÃO - Introdução • O Java EE é apenas um arquivo em PDF que detalha a especificação, e quais especificações internas fazem parte deste. • Para utilizar o Software, é necessário efetuar o download de uma implementação destas especificações. Estas implementações são chamadas Servidores de Aplicação. • Cada versão da especificação Java EE possui um conjunto de Servidores de Aplicação que implementa seus recursos. 15
  16. 16. SERVIDORES DE APLICAÇÃO (cont.) - Servidores de Aplicação por versão do Java EE 16 J2EE 1.2 J2EE 1.3 J2EE 1.4 Java EE 5 Java EE 6 Java EE 7 WildFly 8.x, Glassfish 4.x, Websphere 8.5.x Jboss 7.x, Glassfish 3.x, Websphere 8.x, Geronimo 3.0, Weblogic 12 Jboss 5.x, Glassfish v2, Websphere 7.x, Geronimo 2.1.4, Weblogic 10g Weblogic 6.1, Websphere 4.0, Sun ONE AS 3 Weblogic 7, Websphere 5.x, Sun ONE AS 5 Weblogic 9.2, Websphere 6.x, Jboss 4.x,Sun ONE AS 8
  17. 17. SERVIDORES DE APLICAÇÃO (cont.) - APIs exclusivas vs não exclusivas • Algumas APIs são exclusivas da especificação Java EE, e somente podem ser utilizadas em Softwares Java que utilizam servidores de aplicação. Outras podem ser utilizadas em Softwares Java que não utilizam servidores de aplicação. • APIs exclusivas de Servidores de Aplicação • JTA, EJB, JMS,etc.. • APIs que podem ser utilizadas sem necessidade de um Servidor de Aplicação • JPA, JSF, Servlet, CDI, etc.. 17
  18. 18. SERVIDORES DE APLICAÇÃO (cont.) - Implementações de APIs • APIs são basicamente um conjunto de interfaces que padronizam determinada funcionalidade. • Exemplo: JDBC é uma API, onde seu código é padronizado independente do banco de dados utilizado. • As APIs da especificação Java EE precisam de uma implementação, ou seja, uma engine que implemente as interfaces definidas na API. • Cada Servidor de Aplicação já possui embutido uma implementação para cada API. 18
  19. 19. SERVIDORES DE APLICAÇÃO (cont.) - Implementações de APIs (cont.) 19 CDI JPA JAX-RS API Implementação
  20. 20. SERVLET CONTAINER - Introdução • Algumas das especificações Java EE são específicas para lidar com o desenvolvimento de aplicações web • Servlet, JSP, JSTL, JSF,etc.. • Um Servlet Container é um servidor que suporta apenas a parte web da especificação Java EE • Mais indicado para aplicações web de pequeno e médio porte -Exemplos • Tomcat • Jetty • Google App Engine • Undertow 20
  21. 21. ESTUDO DE CASO: WILDFLY - Introdução • Servidor de Aplicação criado pela Red Hat, substituindo o antigo JBoss. • Mantido por desenvolvedores no formato código aberto. Boas soluções continuam servindo de base para o pacote pago do JBoss EAP. • O Wildfly é full certified Java EE 7. Versões antigas do Jboss possuem um histórico de dificuldades para possuírem o selo full certified Java EE. • Link: http://wildfly.org . Versão estável mais recente: 8.2.1 21
  22. 22. ESTUDO DE CASO: WILDFLY (cont.) - Wildfly 9 • Versão que também é full certified Java EE 7, contudo possui alguns incrementos em relação à versão 8. • HTTP/2 – nova versão do protocolo HTTP. Reduz a latência em conexões usando multiplexação • Front End Load Balancer Support – consegue balancear requisições para o backend com os protocolos HTTP,HTTP/2, SPDY, mod_cluster • Server suspend Mode / graceful shutdown – reiniciar o servidor sem interromper sua execução • Offline CLI Support – executar comandos adm no servidor sem este estar rodando • New Servlet-Only distribution – versão do wildfly que fornece apenas algumas especificações • Management Console – melhoria no layout, com novas configurações • A versão 8 será adotada por implementar todo o conteúdo necessário da disciplina, além de ter uma base maior de usuários em atividade, com diversos bugs corrigidos. • Link: http://wildfly.org/news/2015/07/02/WildFly9-Final-Released/ 22
  23. 23. ESTUDO DE CASO: WILDFLY (cont.) - Instalação • O arquivo wildfly-8.2.1.Final.zip pode ser baixado e descompactado em qualquer lugar; • Para que o Wildfly funcione juntamente com o Eclipse, é necessário instalar o plugin JBoss Tools no Eclipse. Passos: • Menu Help > Eclipse Marketplace. • No campo Search, digite o texto: “Jboss Tools”. • Na sequência, será mostrado o plugin JBoss Tools (Luna) 4.2.2.Final. Clique então no botão Instalar 23
  24. 24. ESTUDO DE CASO: WILDFLY (cont.) - Instalação (cont.) • O WildFly 8 será incluído entre os servidores mapeados pelo Eclipse • Acessar o menu New > Other > Server • Clicar no link de criar um novo servidor • Selecionar os itens Jboss Community > WildFly 8.x • Adicionar o caminho em Home directory. 24
  25. 25. ESTUDO DE CASO: WILDFLY (cont.) - Instalação (cont.) • Clicar com o botão direito do mouse no servidor, e iniciar. • Comando http://localhost:8080 e o servidor mostrará sua página inicial 25
  26. 26. ESTUDO DE CASO: WILDFLY (cont.) - Recursos • Modos de funcionamento • Standalone – servidor funciona em um único processo da JVM • Domain – baseados em vários processos da JVM, em um ou mais hosts (clusters), utilizando a estrutura mestre-escravo, ou Domain Controller e Host Controller 26
  27. 27. ESTUDO DE CASO: WILDFLY (cont.) - Recursos (cont.) • Portas • O Wildfly moveu todos os protocolos para serem multiplexados em apenas duas portas HTTP • Motivado para se adaptar aos serviços de computação na nuvem, usando o Wildfly em modo cluster, visando alta disponibilidade e elasticidade. 27
  28. 28. ESTUDO DE CASO: WILDFLY (cont.) - Recursos (cont.) • Servidor Web de alta performance • O Tomcat, que era utilizado como servidor web no Jboss, foi substituído pelo Undertow, que é desenvolvido em Java e totalmente baseado na API new I/O. Possui suporte para servlets 3.1 e websockets. • O Undertow possui capacidade de processar milhões de requisições simultaneamente. • O site Tech Empower fez um benchmark completo entre diversos frameworks (micro, web e full-stack), medindo indicadores como serialização JSON, tempo de acesso ao banco de dados, taxa de transferência por segundo, latência, etc.. E o undertow atingiu boa performance em todos os indicadores. • Link: https://www.techempower.com/blog/2015/04/21/framework-benchmarks-round- 10/ 28
  29. 29. ESTUDO DE CASO: WILDFLY (cont.) - Recursos (cont.) • Full Certified Java EE 7 • Suporte a HTML 5 • WebSockets • Processamento JSON (API Jason-P) • Nova versão da API JAX-RS para trabalhar com serviços RESTful • Nova API para executar processos batch (Batch applications) • Atualização das bibliotecas JPA, Bean Validation, JSF, CDI, JMS e JTA. 29
  30. 30. ESTUDO DE CASO: WILDFLY (cont.) - Diretórios 30
  31. 31. ESTUDO DE CASO: WILDFLY (cont.) - Diretórios (cont.) • Diretórios dentro das pastas domain e standalone 31
  32. 32. ESTUDO DE CASO: WILDFLY (cont.) - Adicionando bibliotecas ao servidor • É comum adicionar bibliotecas porque várias aplicações costumam utilizar os mesmos recursos, como banco de dados, biblioteca de relatórios, etc.. • Utilizando este procedimento, evita que as classes sejam carregadas de forma duplicada na memória • O Wildfly é projetado para trabalhar com módulos, e nesta configuração é possível adicionar JARs ao servidor de aplicação • Para adicionar o JAR da API JDBC do mysql, é necessário criar a estrutura de diretórios abaixo, e depois adicionar os arquivos mencionados abaixo. 32
  33. 33. ESTUDO DE CASO: WILDFLY (cont.) - Adicionando bibliotecas ao servidor (cont.) • O arquivo module.xml deve possuir o conteúdo abaixo: 33
  34. 34. ESTUDO DE CASO: WILDFLY (cont.) - Criando o banco de dados • Com o banco de dados Mysql em uso, é necessário possuir um banco de dados. • Na imagem abaixo, foi utilizado o XAMPP e o Mysql Workbench. 34
  35. 35. ESTUDO DE CASO: WILDFLY (cont.) - Adicionando DataSource • Acessando <wildfly_home>/standalone/configuration/standalone.xml, é possível adicionar um datasource para o Mysql, e o driver apontando para o arquivo JAR adicionado. 35
  36. 36. ESTUDO DE CASO: WILDFLY (cont.) - Adicionando DataSource (cont.) • É possível adicionar configurações como tamanho máximo do pool de conexões, que já está embutido automaticamente no servidor de aplicação. 36
  37. 37. ESTUDO DE CASO: WILDFLY (cont.) - Administrando o servidor • Configurando a memória HEAP • Por padrão, o WILDFLY utiliza 64mb de tamanho mínimo e 512mb de tamanho máximo. • É possível editar, acessando o arquivo <wildfly-home>/bin/standalone.conf.bat ou sh, e editando as propriedades -Xms e -Xmx • Também é possível editar a propriedade -XX:MaxPermSize, que envolve as classes, métodos, e demais objetos da aplicação que são alocados uma vez, mas nunca desalocados. 37
  38. 38. ESTUDO DE CASO: WILDFLY (cont.) - Administrando o servidor (cont.) • Opções – editar as configurações do servidor podem ser feitas de 3 formas: • Administrar o servidor via console web: usando a URL http://localhost:9990 • Administrar o servidor via linha de comando: usando o executável <wildfly_home/>bin/jboss-cli.bat ou jboss-cli.sh • Administrar o servidor via arquivos de configuração: editar manualmente os arquivos .xml que configuram o servidor. • <wildfly_home>/domain/configuration/ domain.xml • <wildfly_home>/domain/configuration/host .xml • <wildfly_home>/standalone/configuration/ standalone.xml 38
  39. 39. ESTUDO DE CASO: WILDFLY (cont.) - Administrando o servidor (cont.) • Criação de usuário • Para acessar a área de administração, é necessário criar um usuário no servidor. • Dentro da pasta <wildfly_home>/bin, o executável add-user.bat ou add-user.sh 39
  40. 40. ESTUDO DE CASO: WILDFLY (cont.) - Administrando o servidor (cont.) • Criação de usuário(cont.) • Ao adicionar usuários, os arquivos mgmt-groups.properties e mgmt-users.properties situados em <wildfly_home>/standalone/configuration recebem estes usuários. • Da mesma forma que se fossem criados usuários de aplicação, os arquivos application- roles e application-users receberiam informações semelhantes. 40
  41. 41. ESTUDO DE CASO: WILDFLY (cont.) - Administrando o servidor (cont.) • Acessar tela de administração do servidor • É necessário entrar com a URL http://localhost:9990 e informar o usuário e senha criados 41
  42. 42. ESTUDO DE CASO: WILDFLY (cont.) - Administrando o servidor (cont.) • Testando o DataSource • É possível testar o dataSource criado, clicando em Test Connection 42
  43. 43. ESTUDO DE CASO: WILDFLY (cont.) - Administrando o servidor (cont.) • Efetuando o deploy de uma aplicação • Na aba Deployments, clique em add e adicione um sistema 43
  44. 44. ESTUDO DE CASO: WILDFLY (cont.) - Administrando o servidor (cont.) • Efetuando o deploy de uma aplicação (cont). • Entrar com a URL http://localhost:8080/SistemaAtendimento 44
  45. 45. ESTUDO DE CASO: WILDFLY (cont.) - Utilizando o WildFly a partir do Eclipse • Após importar o projeto no Eclipse, pode-se efetuar o deploy automático da aplicação no Wildfly, clicando em Run As -> Run on Server. 45
  46. 46. ESTUDO DE CASO: WILDFLY (cont.) - Utilizando o WildFly a partir do Eclipse (cont.) • Da mesma forma, é possível debugar uma aplicação dentro do WildFly. 46
  47. 47. EXERCÍCIO - Construir um projeto no Eclipse do tipo Dynamic Web Project, apontando para o servidor de aplicação WildFly - Construir um Servlet chamado ClienteServlet, que irá receber os parâmetros da camada view, e retornar uma página HTML com seus valores. - Construir uma página HTML com formulário POST - Debugar o projeto no Eclipse. 47
  48. 48. LINKS DOS SOFTWARES UTILIZADOS - Jdk 1.8 - http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads- 2133151.html - Eclipse Mars IDE for Java EE Developers 64bit - http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release /mars/R/eclipse-jee-mars-R-win32-x86_64.zip - Wildfly 8.2.1 - http://download.jboss.org/wildfly/8.2.1.Final/wildfly-8.2.1.Final.zip - Xampp - https://www.apachefriends.org/xampp-files/5.6.11/xampp-win32-5.6.11-0-VC11- installer.exe - Mysql Workbench - http://dev.mysql.com/get/Downloads/MySQLGUITools/mysql- workbench-community-6.3.4-winx64-noinstall.zip - Driver JDBC Mysql - https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector- java-5.1.36.zip - Sistema Atendimento (war) – https://mega.nz/#!JJBiQYRR!kWczuoulMV8cqgvavAFGZ1DFWOx8Iqtmz4ajra1WHSQ - Sistema Atendimento (código-fonte) - https://mega.nz/#!cAoWgQ6I!cAa5qlu5pq82wlXlnEL5wQ_LQdef6IGZ_3XhilzylqI 48
  49. 49. REFERÊNCIAS - CAELUM. Curso FJ-21, apostila Java para Desenvolvimento Web, versão 17.0.6. Páginas 31-38 e 259-265. Disponível em http://www.caelum.com.br/apostilas. Acesso em 30/07/2015. - QUERINO FILHO, L.C. Java EE 7: as novidades da plataforma na prática. Revista Java Magazine, edição 125. Disponível em http://www.devmedia.com.br/revista-java-magazine - MOURA NÓBREGA, P.B. Explorando o Wildfly 8. Revista Java Magazine, edição 128. Disponível em http://www.devmedia.com.br/revista-java-magazine - ABRAS, G.E. ERP e Java. Revista Mundo Java, edição 3. - ORACLE, servidores de aplicação certificados para a plataforma Java EE. Disponível em http://www.oracle.com/technetwork/java/javaee/overview/compatibility-jsp-136984.html. Acesso em 30/07/2015. - RED HAT, recursos do WildFly 8.2.1. Disponível em https://issues.jboss.org/secure/ReleaseNote.jspa?projectId=12313721&version=12327667&_sscc=t. Acesso em 30/07/2015. - RED HAT, recursos do WildFly 9.0. Disponível em http://wildfly.org/news/2015/07/02/WildFly9-Final-Released/. Acesso em 30/07/2015. - TECHEMPOWER. Benchmark de servidores web. Disponível em: https://www.techempower.com/blog/2015/04/21/framework-benchmarks-round-10/. Acesso em 30/07/2015. - CAELUM. Conheça as principais novidades do Java EE 7. Disponível em: http://blog.caelum.com.br/novidades-javaee7- 2/. Acesso em 30/07/2015. 49

×