63484436 apostila jboss avancado rev2 08122010

Upload: doiddao

Post on 28-Oct-2015

302 views

Category:

Documents


1 download

TRANSCRIPT

  • JBoss AS Performance e Alta Disponibilidade

    2 Reviso

    Copyright 2009,2010Fernando Lozano e 4Linux www.4linux.com.br

  • Sumrio0. Sobre Este Curso..............................................................................................................................9

    0.1. Objetivo deste Curso...............................................................................................................100.2. Quem deve fazer.....................................................................................................................100.3. Pr-Requisitos.........................................................................................................................100.4. Agenda....................................................................................................................................110.5. Ambiente de Sala de Aula......................................................................................................120.6. Perfil do Administrador de JBoss AS....................................................................................12

    1. Reviso de Servidores de Aplicao Java EE................................................................................14

    1.1. Conceitos essenciais do Java EE............................................................................................151.2. Espaos de nomes JNDI.........................................................................................................201.3. O Servidor de Aplicaes JBoss AS.......................................................................................211.4. Arquitetura do JBoss AS.........................................................................................................221.5. Estrutura de diretrios do JBoss AS.......................................................................................241.6. Ferramentas Administrativos do JBoss AS............................................................................261.7. Configurao do JBoss AS para produo.............................................................................281.8. Modelo de performance para um Servidor de Aplicaes Java EE........................................291.9. Exerccios................................................................................................................................32Laboratrio 1.1. Ambiente Java.....................................................................................................33Laboratrio 1.2. Monitorao via JMX Console e Twiddle..........................................................34Laboratrio 1.3. Explorando o Diretrio do Servidor de Aplicaes............................................35Laboratrio 1.4. Instalao para produo.....................................................................................361.10. Concluso..............................................................................................................................37Questes de Reviso......................................................................................................................38

    2. Consoles Administrativos: JOPR e Zabbix....................................................................................39

    2.1. Ecossistemas Open Source.....................................................................................................402.2. Introduo ao JOPR................................................................................................................40

    2.2.1. O Embebed JOPR...........................................................................................................412.2.2. Instalao e Operao do Embebed JOPR......................................................................412.2.3. Limitaes do JOPR........................................................................................................432.2.4. Deployment de componentes de aplicao.....................................................................432.2.5. Criando um DataSource via JOPR..................................................................................442.2.6. Monitorao do funil: Memria e Conexes...............................................................442.2.7. Estatsticas de desempenho de Aplicaes.....................................................................45

    2.3. Monitorao continuada com Zabbix.....................................................................................452.3.1. O Zapcat..........................................................................................................................452.3.2. Conceitos do Zabbix.......................................................................................................472.3.3. Itens do Zapcat................................................................................................................482.3.4. Configurando Hosts e Items............................................................................................48

    2.4. Exerccios................................................................................................................................49Laboratrio 2.1. Instalao do Embedded JOPR ..........................................................................50Laboratrio 2.2. Deployment via Embedded JOPR .....................................................................51Laboratrio 2.3. Instalao do Zapcat...........................................................................................52Laboratrio 2.4. Monitorao via Zabbix......................................................................................54

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 2

  • 2.5. Concluso................................................................................................................................55Questes de Reviso......................................................................................................................56

    3. Administrao de EJB....................................................................................................................57

    3.1. O Que So Componentes EJB................................................................................................583.1.1. Tipos de EJBs..................................................................................................................603.1.2. Ciclo de vida de EJBs.....................................................................................................613.1.3. Acesso a Session Beans..................................................................................................633.1.4. EJB 2 x EJB 3 e JPA.......................................................................................................64

    3.2. EJB no JBoss AS....................................................................................................................643.2.1. Configurao de Invocadores e Interceptadores para EJB 2...........................................673.2.2. Vinculando um EJB 2 a uma configurao de container................................................71

    3.3. Configuraes de Rede para Acesso a um EJB......................................................................753.3.1. Theads para chamadas remotas.......................................................................................763.3.2. Monitorao do Invocador Unificado.............................................................................78

    3.4. Exerccios................................................................................................................................79Laboratrio 3.1. Acesso a EJBs via RMI.......................................................................................80Laboratrio 3.2. Limitando threads para chamadas remotas.........................................................823.5. Concluso................................................................................................................................83Questes de Reviso......................................................................................................................84

    4. Tuning de Session Beans................................................................................................................85

    4.1. Tuning das configuraes para um EJB 2..............................................................................864.1.1. Pool de Instncias de EJBs..............................................................................................864.1.2. Monitorao do Pool de Instncias de um EJB...............................................................87

    4.2. Passivao e Ativao de SFSB..............................................................................................884.2.1. SFSBs x HTTP Session...................................................................................................894.2.2. Cache de SFSBs no JBoss AS.........................................................................................904.2.3. Monitorando o Cache de SFSBs.....................................................................................924.2.4. Onde os SFSBs so salvos em disco...............................................................................93

    4.3. Monitorao de chamadas via JSR-77....................................................................................934.4. Exerccios................................................................................................................................94Laboratrio 4.1. Limitando instncias de um SLSB......................................................................95Laboratrio 4.2. Cache de SFSB...................................................................................................96Laboratrio 4.3. SFSB sem passivao.........................................................................................97Laboratrio 4.4. Estatsticas de invocao de EJBs.......................................................................984.5. Concluso..............................................................................................................................100Questes de Reviso....................................................................................................................101

    5. Hibernate com JBoss AS..............................................................................................................103

    5.1. E quanto aos Entity Beans?..................................................................................................1045.2. O Que o Hibernate.............................................................................................................1045.3. Hibernate no Java SE x Java EE...........................................................................................1055.4. MBeans para o Hibernate.....................................................................................................108

    5.4.1. Monitorando e Modificando um SessionFactory Dinamicamente................................1105.4.2. Gerao de Estatsticas do Hibernate............................................................................110

    5.5. Habilitando o Cache de Segundo Nvel ...............................................................................1115.5.1. Arquitetura de Cache do Hibernate...............................................................................1125.5.2. Usando o JBoss Cache com o Hibernate......................................................................113

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 3

  • 5.6. Exerccios..............................................................................................................................116Laboratrio 5.1. Aplicao Hibernate estilo Java SE..................................................................117Laboratrio 5.2. Aplicao Hibernate estilo Java EE..................................................................118Laboratrio 5.3. Deploy do Servio Hibernate no JBoss AS......................................................119Laboratrio 5.4. Cache de Segundo Nvel...................................................................................120Laboratrio 5.5. JBoss Cache com Hibernate..............................................................................1225.7. Concluso..............................................................................................................................123Questes de Reviso....................................................................................................................124

    6. Tuning de MDBs..........................................................................................................................125

    6.1. O Que So JMS e MDBs......................................................................................................1266.1.1. Tipos de filas.................................................................................................................1276.1.2. Tipos de Mensagens......................................................................................................127

    6.2. O JBossMQ...........................................................................................................................1276.2.1. MBeans de filas.............................................................................................................128

    6.3. Configurao de MDBs........................................................................................................1296.3.1. Configuraes de conexo de um MBD.......................................................................1296.3.2. Recebimento (consumo) concorrente de mensagens....................................................1326.3.3. MDBs Singleton............................................................................................................1336.3.4. O Dead Letter Queue....................................................................................................133

    6.4. Monitorando e Suspendendo MDBs.....................................................................................1366.5. Exerccios..............................................................................................................................137Laboratrio 6.1. Publicando mensagens no JBoss MQ...............................................................138Laboratrio 6.2. Consumindo mensagens no JBoss MQ.............................................................139Laboratrio 6.3. Diferena entre Queues e Topics......................................................................140Laboratrio 6.4. Mltiplas instncias do mesmo MDB...............................................................141Laboratrio 6.5. MDB com DLQ................................................................................................1426.6. Concluso..............................................................................................................................143Questes de Reviso....................................................................................................................144

    7. Administrao do JBoss MQ........................................................................................................145

    7.1. Sobre o JBoss MQ................................................................................................................1467.1.1. JBoss Messaging, AQMP e HornetQ............................................................................146

    7.2. Arquitetura do JBossMQ......................................................................................................1477.2.1. Acesso remoto ao JBoss MQ........................................................................................1477.2.2. JBoss MQ x JNDI.........................................................................................................1487.2.3. JBoss MQ x Java EE.....................................................................................................1497.2.4. Acessando MOMs que no o JBoss MQ......................................................................1497.2.5. Armazenamento persistente das mensagens.................................................................150

    7.3. Segurana do JBoss MQ.......................................................................................................1517.3.1. Autenticao de Clientes Java EE ao JBoss MQ..........................................................152

    7.4. Tuning e Monitorao do JBoss MQ....................................................................................1547.4.1. Threads para conexo ao JBossMQ..............................................................................1547.4.2. Cache de Mensagens.....................................................................................................155

    7.5. Servidores JBoss MQ dedicados...........................................................................................1557.6. Exerccios..............................................................................................................................155Laboratrio 7.1. Monitorao do JBoss MQ...............................................................................156Laboratrio 7.2. Servidor JBossMQ dedicado.............................................................................157Laboratrio 7.3. Publicando no Servidor JBoss MQ dedicado....................................................158

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 4

  • Laboratrio 7.4. Servidor JBoss AS sem JMS.............................................................................159Laboratrio 7.5. MDB consumindo de um JMS remoto.............................................................160Laboratrio 7.6. Utilizando um BD externo................................................................................1617.7. Concluso..............................................................................................................................162Questes de Reviso....................................................................................................................163

    8. Introduo aos Clusters JBoss AS................................................................................................164

    8.1. Aplicaes Distribudas Java EE..........................................................................................1658.2. Conceitos Gerais de Cluster..................................................................................................1658.3. Arquitetura de Cluster do JBoss AS: JGroups e JBoss Cache..............................................166

    8.3.1. Cluster para Clientes Java EE.......................................................................................1678.3.2. Cluster para Clientes Web.............................................................................................1698.3.3. Cluster do JBoss MQ....................................................................................................170

    8.4. Configuraes de rede do JGroups.......................................................................................1728.4.1. Dificuldades com Multicast IP......................................................................................1738.4.2. Threads do JGroups......................................................................................................1748.4.3. Configurao alternativa modelo TCP..........................................................................1748.4.4. Testes de conectividade do JGroups.............................................................................176

    8.5. Instalao e Incio de um Cluster JBoss AS.........................................................................1778.6. Monitorao de canais JGroups no JBoss AS......................................................................178Laboratrio 8. 1: Configuraes de Rede JGroups......................................................................179Laboratrio 8. 2: Instalao de Cluster Local..........................................................................1808.7. Concluso..............................................................................................................................182Questes de Reviso....................................................................................................................183

    9. Cluster para Servios Java EE......................................................................................................185

    9.1. Servios Essenciais do Cluster JBoss AS.............................................................................1869.1.1. Invocadores cluserizados..............................................................................................1869.1.2. Clientes (Java) do Cluster.............................................................................................1869.1.3. Singleton de cluster.......................................................................................................1879.1.4. Caches Clusterizados para EJB, Hibernate e Web........................................................188

    9.2. Cluster para Session EJBs.....................................................................................................1889.3. Cache de Segundo Nvel clusterizado..................................................................................1899.4. Cluster do JBoss MQ e MDBs..............................................................................................1899.5. Concluso..............................................................................................................................190Laboratrio 9. 1: Cluster para EJB..............................................................................................191Laboratrio 9. 2: Cluster para Hibernate.....................................................................................193Laboratrio 9. 3: Cluster para JBoss MQ....................................................................................1949.6. Concluso..............................................................................................................................195Questes de Reviso....................................................................................................................196

    10. Cluster Web do JBoss AS...........................................................................................................197

    10.1. Conceitos de clusters Web Java EE....................................................................................19810.2. Aplicaes Web Clusterizadas............................................................................................19910.3. Clusters Web do JBoss AS ................................................................................................20010.4. Sobre o mod_jk...................................................................................................................20010.5. Instalao do mod_jk..........................................................................................................20210.6. Configurao do mod_jk....................................................................................................20310.7. Configurando o Conector AJP para Cluster.......................................................................205

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 5

  • 10.8. Exerccios............................................................................................................................206Laboratrio 10.1. Integrao Apache com JBoss AS..................................................................207Laboratrio 10.2. Um cluster para escalabilidade.......................................................................208Laboratrio 10.3. Cluster com HA..............................................................................................20910.9. Concluso............................................................................................................................210Questes de Reviso....................................................................................................................211

    11. Bibliografia.................................................................................................................................212

    12. Respostas dos Questionrios de Reviso....................................................................................213

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 6

  • ndice de Listagens, Tabelas e Figuras0. Sobre Este Curso..............................................................................................................................9

    1. Reviso de Servidores de Aplicao Java EE................................................................................14

    Figura 1.1 Aplicao x Java EE x Java SE.................................................................................16Figura 1.2 Aplicao x Container x SO em tempo de execuo................................................17Tabela 1. 1 Principais JSRs do Java EE......................................................................................18Figura 1.3 Aplicao Java EE tpica...........................................................................................20Figura 1.4 Blocos funcionais do JBoss AS 4.x...........................................................................22Tabela 1. 1 Estrutura de diretrios do JBoss AS........................................................................24Tabela 1. 2 Estrutura de um diretrio de configurao do JBoss AS.........................................25Tabela 1. 3 Comparao entre o Embedded JOPR, JOPR Full e Zabbix...................................27Figura 1.5 Modelo bsico de performance do Servidor de Aplicaes Java EE........................31

    2. Consoles Administrativos: JOPR e Zabbix....................................................................................39

    Figura 2.1. Embebed JOPR............................................................................................................42Figura 2.2. Interface Web do Zabbix.............................................................................................47

    3. Administrao de EJB....................................................................................................................57

    Figura 3.1 Ciclo de Vida de um SLSB, que basicamente o mesmo para um MDB................62Figura 3.2 Ciclo de Vida de um SFSB........................................................................................63Figura 3.3 Cadeia de interceptadores para um EJB....................................................................65Figura 3.4 Invocadores para EJBs..............................................................................................66Figura 3.5 EJB -> Container -> Invocador.................................................................................67Listagem 3.1 Invoker proxy binding padro um SLSB..............................................................68Listagem 3.2 Cadeia de interceptadores padro para um SLSB (standardjboss.xml)................69Listagem 3.3 Determinando a configurao de container para um Session Bean (jboss.xml)...71Listagem 3.4 Modificando o invocador para um Session Bean (Jboss.xml)..............................71Figura 3.6 Sobrepondo o invocador de uma configurao de container....................................73Listagem 3.5 Estendendo a configurao de container para um Session Bean (jboss.xml).......73Figura 3.7 Estendendo uma configurao de container..............................................................74Tabela 3. 1 Invocadores do JBoss AS 4......................................................................................75Listagem 3.6 Configurao do Unified Invoker do JBoss AS (standardjboss.xml)...................77Listagem 3.7 Configurao do Conector do JBoss Remoting no JBoss AS (standardjboss.xml).......................................................................................................................................................77

    4. Tuning de Session Beans................................................................................................................85

    Figura 4.1 asddas........................................................................................................................88Listagem 4.1 Configurao padro de cache para SFSBs..........................................................90

    5. Hibernate com JBoss AS..............................................................................................................103

    Listagem 5.1 Configurao do Hibernate para uma aplicao Java SE...................................105Listagem 5.2 Configurao do Hibernate para uma aplicao Java EE...................................106Listagem 5.3 Configurao do MBean Hibernate fornecido com o JBoss AS.........................108Listagem 5.4 Habilitando o Mbean de estatsticas do Hibernate..............................................111Listagem 5.5 Tornando uma classe cachevel..........................................................................112Listagem 5.6 Configurando o Hibernate para usar o JBoss Cache...........................................114

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 7

  • Listagem 5.7 Tornando uma classe cachevel pelo JBoss Cache.............................................115

    6. Tuning de MDBs..........................................................................................................................125

    Listagem 6.1 Exemplo de MBean para definio de fila no JBoss MQ...................................128Listagem 6.2 Descritor proprietrio ejb-jar.xml para um MDB...............................................130Listagem 6.3 Configurao de container padro para MDB....................................................130Listagem 6.4 Configurao de invocador padro para MDBs..................................................131Listagem 6.5 Configurao de invocador para MDB limitando a quantidade de threads para processar mensagens concorrentemente .....................................................................................134Listagem 6.6 Configurao de DLQ no invocador de um MDB..............................................135

    7. Administrao do JBoss MQ........................................................................................................145

    Listagem 7.1 Configurao de BD do PersistenceManager do JBoss MQ..............................150Listagem 7.2 Configurao de BD do StateManager do JBoss MQ........................................151Listagem 7.3 Configurao inicial do SecurityManager do JBoss MQ...................................151Listagem 7.4 Security Domain / Application Policy do JBoss MQ.........................................152Listagem 7.5 Credencias para acesso de um MDB a uma fila JMS.........................................153Listagem 7.6 Security Domain para autenticao de acesso ao JBossMQ via JCA.................153Listagem 7.7 Application Policy que fornece as credenciais de acesso ao JBoss MQ.............154

    8. Introduo aos Clusters JBoss AS................................................................................................164

    Figura 8.1 Arquitetura geral de cluster JBoss AS para clientes Java EE..................................168Figura 8.2 Arquitetura geral de cluster JBoss AS baseada em JBoss Cache............................169Figura 8.3 Arquitetura de cluster Web do JBoss AS................................................................170Figura 8.4 Arquitetura de cluster do JBoss MQ.......................................................................171Listagem 8.1 configuraes de rede de um canal JGroups.......................................................172Listagem 8.2 configuraes alternativas (TCP) para um canal JGroups..................................175Listagem 8.3 Mensagens de log indicativas da formao do cluster........................................177

    9. Cluster para Servios Java EE......................................................................................................185

    10. Cluster Web do JBoss AS...........................................................................................................197

    Figura 10.1 arquitetura de um cluster web Java EE................................................................198Figura 10.2 fluxo de processamento de uma requisio HTTP pelo Tomcat...........................201Listagem 10.1 exemplo de configurao do mod_jk em /etc/httpd/conf.d/mod_jk.conf:...........203Listagem 10.2 exemplo de configurao de workers em /etc/httpd/conf.d/workers.properties. .204Listagem 10.3 configurando o nome do n (worker) no server.xml........................................205Listagem 10.4 configurando o uso do mod_jk no jboss-service.xml.......................................205

    11. Bibliografia.................................................................................................................................212

    12. Respostas dos Questionrios de Reviso....................................................................................213

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 8

  • 0. Sobre Este CursoEste captulo apresenta o curso JBoss AS Performance e Alta Disponibilida-de

    Objetivo Pblico-Alvo Pr-Requisitos Ambiente para Laboratrios Perfil do Administrador JBoss AS

  • 0.1. Objetivo deste Curso

    0.1. Objetivo deste CursoCapacitar profissionais na administrao e gerenciamento de servidores de aplicao JBoss AS, tanto em ambiente de desenvolvimento quanto em ambi-ente de produo.Este o segundo curso da 4Linux focado na administrao do JBoss AS. O pri-meiro curso, JBoss AS Para Administradores foca nos servios essenciais e comuns aos vrios mdulos do servidor de aplicaes: deployment de aplica-es, conectividade de redes e segurana. J este curso foca na integrao com ferramentas de administrao e monitorao de redes, tunning dos servi-os EJB e JMS, e nos recursos de clusterizao do servidor de aplicaes.

    0.2. Quem deve fazer Administradores de rede responsveis por manter um servidor JBoss AS

    como parte de um Portal, Intranet ou Extranet; Programadores, Analistas de Sistemas e Arquitetos de Software respon-

    sveis pelo desenvolvimento de aplicaes utilizando a plataforma Java EE;

    Administradores de rede e desenvolvedores interessados em obter co-nhecimentos sobre como construir, manter e otimizar uma infra-estrutu-ra de produo baseada em servidores de aplicao Java EE.

    0.3. Pr-RequisitosEstes conhecimentos so indispensveis ao futuro administrador de servidores JBoss AS:

    Leitura bsica em Ingls Tcnico; Conhecimentos bsicos de HTML e HTTP (navegadores e servidores

    Web); Conhecimentos bsicos de TCP/IP.

    J estes conhecimentos so especficos do JBoss AS, e teriam sido aprendidos pelo aluno no curso JBoss AS para Administradores de Sistemas ou por auto-estudo e experincia de trabalho:

    Instalao, start e stop do JBoss AS; Utilizao dos consoles administrativos; Deploy de aplicaes; Configurao de Datasources e filas JMS; Configuraes de rede, incluindo Invocadores, Conectores e SSL Configuraes de application policies baseadas em login modules JAAS

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 10

  • 0.3. Pr-Requisitos

    Tambm desejvel, embora no seja esperado para este curso, que o profis-sional adquira os seguintes conhecimentos:

    Administrao do sistema operacional utilizado para o servidor; Programao na linguagem Java; Compilao de programas na linha de comando utilizando o JDK; Acesso a bancos de dados utilizando JDBC; Construo de Servlets e pginas JSP; Construo de aplicaes utilizando EJB e JPA; Programao para a API JMS.

    A falta destes conhecimentos no ir prejudicar o aproveitamento do aluno neste curso, mas ir afetar seu desempenho profissional na rea.

    0.4. AgendaO curso organizado em uma sucesso de tpicos conceituais e prticos que refletem na medida do possvel a ordem com que um administrador tpico ir encontrar cada tarefa dentro de um ambiente real de trabalho.

    1 Reviso da arquitetura de servidores de aplicao Java EE e do JBoss AS;

    Configurao de um servidor JBoss AS em ambiente de produo; 2 Administrao do JBoss AS usando o JOPR e Zabbix; 3 Administrao de EJBs

    Ciclo de Vida de EJBs Configurao de Invocadores e Interceptadores

    4 Tunning de Session Beans Configurao de pools de instncias para EJBs; Passivao e Cache para SFSBs

    5 Hibernate com JBoss AS Hibernate no Java EE MBeans do Hibernate Cache de Segundo nvel

    6 Tunig de MDBs Conexo a filas JMS Processamento Concorrente de mensagens DLQ

    7 Administrao do Servidor de Mensagens (JMS);

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 11

  • 0.4. Agenda

    Arquitetura do JBoss MQ; Utilizando um BD externo com o JBoss MQ; Romo rodar um JBossMQ dedicado

    8 Clustering com JBoss AS; Arquitetura de cluster do JBoss AS Configuraes de rede do JGroups

    9 Cluster para servios Java EE Invocadores, Singleton e JBossCache (TreeCache) Cluster para EJB Cluster para Cache de Segundo Nvel Cluster para MDBs e JBoss MQ

    10 Cluster Web Balanceamento de carga com mod_jk Replicao de seso HTTP

    0.5. Ambiente de Sala de AulaOs laboratrios deste curso sero realizados em Linux, mais precisamente no Fedora, que uma distribuio livre que h vrios anos incorpora no suporte a aplicaes Java como o IDE Eclipse. Hoje outras distribuies populares como o Debian suportam aplicaes Java como parte integrante da distribuio, mas o Fedora foi o pioneiro na incluso de software Java.Ento sero vistos tpicos especficos do SO Linux e da distribuio como a configurao de variveis de ambiente e permisses de arquivos. Tambm se-ro vistos tpicos especficos para o Fedora, como a instalao de pacotes RPM, que seriam facilmente adaptados para outras distribuies por usurios com os conhecimentos necessrios de sysadmin.Apesar disso, o JBoss AS e as aplicaes de exemplo deste curso so 100% Java, de modo que possvel realizar a maior parte dos laboratrios em Win-dows ou Mac. A administrao do JBoss AS em si no depende do SO subja-cente, mas algumas caractersticas de tuning, segurana e cluster dependem da interao do JBoss AS com este SO. Portanto no possvel oferecer um curso realista de administrao do JBoss AS totalmente indiferente ao SO do servidor.

    0.6. Perfil do Administrador de JBoss ASO papel do Administrador de um Servidor de Aplicaes Java EE, ou ASA (Ap-plication Server Administrator) como o JBoss AS manter o ambiente de pro-duo para aplicaes. A performance e estabilidade deste ambiente depende da qualidade e outras especificidades destas aplicaes

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 12

  • 0.6. Perfil do Administrador de JBoss AS

    algo bem diferente da administrao de um servio de rede tpico, por ex-emplo um proxy web, servidor de e-mail ou arquivos, que depende apenas do cdigo do prprio servio.Ento o ASA necessita conhecimentos tanto de infra-estrutura quanto de de-senvolvimento, pois ele est na interseo entre estes dois universos. Ele pre-cisa ser capaz de diferenciar problemas de configurao do servidor de aplica-es de problemas de projeto ou codificao das aplicaes hospedadas pelo servidor. O ASA tambm deve orientar os desenvolvedores no melhor aprovei-tamento das caractersticas do JBoss AS em si e do ambiente Java EE em ge-ral.Na verdade, o ASA tem um perfil bastante semelhante ao de um Administra-dor de Banco de Dados ou DBA (DataBase Administrador) em relao ao co-nhecimento exigido e interao tanto com equipes de desenvolvimento quanto de infra-estrutura de SO e redes. Alguns at arriscam o prognstico de que em um futuro prximo o ASA ocupar o lugar do DBA como profissional mais valo-rizado dentro do ambiente de TI.

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 13

  • 1. Reviso de Servidores de Aplicao Java EENeste captulo so revisados os conceitos essenciais sobre servidores de apli-cao Java EE e sobre a arquitetura do JBoss AS.Tpicos:

    Conceitos do Java EE Arquitetura do JBoss AS Recomendaes para o ambiente de produo

  • 1.1. Conceitos essenciais do Java EE

    1.1. Conceitos essenciais do Java EEO Enterprise Java, tambm chamado Java Enterprise Edition, Java EE ou sim-plesmente JEE1, um conjunto de especificaes criados pelo JCP, o Java Com-munity Process, com o objetivo de garantir a portabilidade e interoperabilida-de entre ferramentas de desenvolvimento, middleware, componentes e aplica-es desenvolvidas por diferentes fornecedores. A verso corrente do Java EE, o JEE 5, definida pela JSR-2442 e a verso anterior, J2EE 1.4, definida pela JSR-1513.

    a verdade j foi aprovado po JCP o Java EE 6 (JSR-316) mas como ele no suportado pela verso do JBoss AS focada neste curso, e ainda tem pouca adoo concreta no mercado, no iremos consider-lo.N

    O Java EE foca aplicaes centradas em servidores, o que inclui aplicaes com interface Web, aplicaes distribudas baseadas em EJB, os Enterprise Java Beans, aplicaes baseadas em MOM, ou Message-Oriented Middelware, alm de aplicaes baseadas em Web Services SOAP (Simple Object Access Protocol) As tecnologias do Java EE so hoje a implementao preferencial para arquiteturas como SOA (Servoce-Oriented Architecture) e infra-estrutu-ras baseadas em ESB (Enterprise Service Bus).

    1 Os termos Java2 EE e J2EE foram depreciados na verso 5 do padro, mas ainda comum encontrar muita literatura utilizando os termos antigos.

    2 http://www.jcp.org/en/jsr/detail?id=2443 http://www.jcp.org/en/jsr/detail?id=151

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 15

  • 1.1. Conceitos essenciais do Java EE

    AdministraoAvanadadoJBossASSlide14 2009FernandoLozano&4LinuxLtda.

    Java SE x Java EE

    Aplicao Java EEAplicao Java EE

    APIs do Java EE

    Bibliotecas(ex: Jakarta Commons)

    APIs de extenso(ex: JAF)

    APIs do Java SEAPIs do Java SE

    JVMJVM

    Sistema OperacionalSistema Operacional

    Figura 1.1 Aplicao x Java EE x Java SE

    A figura 1.1 ilustra o relacionamento entre uma aplicao Java EE, o prprio Java EE e o Java SE.Para desenvolver ou executar aplicaes Java EE necessrio ter primeiro uma instalao do Java SE. As instalaes do Java SE so fornecidas em duas modalidades: O Java RE (Run-Time Environment) que fornece a JVM (Java Vir-tual Machine, isto , Mquina Virtual Java) junto com a biblioteca de classes padro, e o JDK (Java Development Kit, ou kit de desenvolvimento Java), que fornece o compilador javac, o gerador de pacotes jar e outros utilitrios para o desenvolvedor.Aplicaes Java EE so executadas dentro de um Servidor de Aplicaes. Um servidor de aplicaes o responsvel pela interao com o SO e com ou-tros servidores externos, oferecendo vrios servios para simplificar o desen-volvimento e gerenciamento de aplicaes. importante notar que nada obriga um desenvolvedor e suas aplicaes a uti-lizarem os servios oferecidos pelo servidor de aplicaes. Na verdade, esta uma das maiores causas de problemas de estabilidade e performance em am-bientes de produo, pois quando a aplicao no delega o gerenciamento de recursos para o servidor de aplicaes no possvel monitorar nem otimizar a utilizao destes recursos.As aplicaes em si acessam os servios oferecidos pelo Servidor de Aplica-es por meio das APIs definidas por dois containers:

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 16

  • 1.1. Conceitos essenciais do Java EE

    Container Web: hospeda aplicaes web, acessadas por meio de um na-vegador padro. Estas aplicaes so definidas por containers conheci-dos como Servlets;

    Container EJB: hospeda objetos distribudos construdos como compo-nentes EJB e compatveis com padres CORBA;

    Cada container fornece a interface entre os componentes de aplicao instala-dos ou hospedados dentro dele e os servios do servidor de aplicaes, como ilustra a figura 1.2. Muitas vezes confunde-se o container com o prprio ser-vidor de aplicaes, pois para o desenvolvedor de aplicaes no h diferena concreta.Para o administrador importante lembrar que o container apenas parte de um servidor de aplicao e que sua atuao na configurao e tuning do ambi-ente poder envolver outras partes do servidor.

    AdministraoAvanadadoJBossASSlide15 2009FernandoLozano&4LinuxLtda.

    Componentes e Containers Java EE

    Servidor de Aplicaes Java EEServidor de Aplicaes Java EE

    Transaes (JTA)

    Conectores (JCA)

    Mensagens (JMS)

    Segurana (JAAS, JAAC)

    Nomes(JNDI)

    Gerenciamento (JMX)

    Container EJB

    EJB

    Container Web

    Servlet JSP

    EJB

    Figura 1.2 Aplicao x Container x SO em tempo de execuo

    Os vrios servios fornecidos pelo servidor de aplicaes e seus containers so especificados por documentos chamados JSR (Java Specification Requests). Uma JSR pode definir apenas uma API, como a API de Servlets, ou pode at definir a plataforma inteira, referenciando outras JSRs. importante que o administrador de um servidor de aplicaes conhea essas JSRs, por isso a Tabela 1. 1 relaciona as principais JSRs que compoem o J2EE 1.4 e o Java EE 5.

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 17

  • 1.1. Conceitos essenciais do Java EE

    Tabela 1. 1 Principais JSRs do Java EE

    Padro JSR (verso) Descrio

    Java EE 151 (1.4), 244 (5) JSR guarda-chuva que define a plataforma e demais JSRs que fazem parte do padro

    Servlets 154 (2.4/2.5) API essencial para aplicaes Web, permite programar componentes que respondem a requisies HTTP

    JSP(Java Server Pages)

    152 (2.0), 245 (2.1) Desenvolvimento Web em Java no estilo PHP ou ASP

    JSTL(JSP Standard Tag Library)

    52 (1.1) Biblioteca de tags para pginas JSP

    JSF(Java Server Faces)

    127 (1.0/1.1), 252 (1.2) Framework de componentes para desenvolvimento Web baseado em eventos

    EJB(Enterprise Java Beans)JPA(Java Persistence Architecture)

    153 (2.1) 220 (3.0) Objetos remotos para a camada de negcios de uma aplicao (EJB) e objetos persistentes para acesso a BDs relacionais via ORM (Objec-t-Relational Mapping)

    JCA(Java Connector Architecture)

    112 (1.5), 322 (1.6) Gerenciamento de conexes e threads para acesso a recursos ex-ternos ao servidor de aplicaes, integrados ao gerenciamento de segurana e transaes do servidor

    JTA(Java Transaction Architec-ture)

    907 (1.0.1) Gerenciamento de transaes dis-tribudas compatvel com o padro XA do X/Open

    JDBC(Java DataBase Connectivity)

    53 (3.0), 221 (4.0) Acesso a Bancos de Dados rela-cionais

    JMS(Java Messaging System)

    914 (1.1) Acesso a MOM (Message-Oriented Middleware) que so servidores es-pecializados no gerenciamento de filas de mensagens entre apli-caes.

    JavaMail 904 (1.2), 919 (JAF) Acesso a servidores de e-mail SMTP, POP3 e IMAP

    JNDI(Java Naming and Directory Interface)

    59 (JSE 1.4)4 Localizao de componentes de aplicao por nomes lgicos e acesso a servios de diretrio, por exemplo DNS e LDAP

    4 O JNDI, embora esteja presente no Java SE e seja pouco utilizado pelo desenvolvedor desktop, um componente central para o Java EE mesmo em ambientes que no utilizam LDAP

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 18

  • 1.1. Conceitos essenciais do Java EE

    Padro JSR (verso) Descrio

    JAAS(Java Autorization and Au-thentication System)

    59 (JSE 1.4)5 72 (GSS-API), 196 (Container SPI)

    Mdulos plugveis de autenticao inspirados no PAM do Unix

    JACC(Java Authorization Contract for Containers)

    115 Autenticao contextualizada no servidor de aplicaes

    JAXP(Java API for XML Processing)

    63 (1.0/1.1/1.2), 206 (1.3)

    Processamento e transformao de documentos XML

    JAX-RPC(Java API for XML Remote Procedure Call)

    101, 109, 921 Primeira gerao da API para Web Services (Servios Web) baseados em SOAP e WSDL

    JAX-WS (Java API for XML Web Services)

    224 (JAX-WS 2.0), 220 (JAXB 2.0)

    Segunda gerao da API para Web Services (Servios Web) baseados em SOAP e WSDL

    JMX (Java Management Exten-sions)

    3, 77, 174 Gerenciamento e monitorao de JVMs, servidores de aplicaes e das prprias aplicaes

    Logging 47 Gerao de registros de auditoria (logs)

    O acesso a recursos externos ao servidor de aplicaes realizado por meio de componentes chamados Conectores. Eles implementam os protocolos e se-mntica especficos para vrios tipos de servidores externos, como servidores de e-mail, bancos de dados, ou servidores de mensagens.O que o desenvolvedor ou usurio enxerga como uma aplicao Java EE na verdade um conjunto de componentes Servlet, EJB e Conectores interconecta-dos por meio do servio de diretrios interno do servidor de aplicaes, que acessado por meio da API JNDI (Java Naming and Directory Interface).O uso do JNDI permite que cada componente possa ser programado e executa-do sem conhecimento direto de que classes fornecem os demais componentes, formando o que se chama de arquitetura fracamente acoplada, onde em teoria fcil trocar um componente por outro que realize funo similar.

    5 O JAAS era originalmente um componente no-padro fornecido pela Sun, mas que foi posteriormente integrado ao padro do Java SE.

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 19

  • 1.1. Conceitos essenciais do Java EE

    AdministraoAvanadadoJBossASSlide1 122009FernandoLozano&4LinuxLtda.

    Aplicao Java EE Tpica

    ClienteCliente

    JBoss ASJBoss AS

    Servlet

    EJB

    Conector Banco deDados

    Banco deDados

    JBoss ASJBoss AS

    EJB

    EIS(CICS, SAP)

    EIS(CICS, SAP)

    Figura 1.3 Aplicao Java EE tpica

    Para o administrador, o Java EE fornece o JMX (Java Management Extensions). Ele expe objetos gerenciveis chamados MBeans, atravs dos quais poss-vel obter informaes de configurao e performance das aplicaes, do pr-prio servidor de aplicaes ou da JVM subjacente.Graas ao JMX, vrios produtos de terceiros, os Consoles JMX, esto dispon-veis para a administrao e monitorao de qualquer servidor de aplicaes Java EE do mercado.

    1.2. Espaos de nomes JNDIComponentes e servios Java EE so localizados por meio de buscas dentro do diretrio interno do servidor de aplicaes. Estas buscas podem ser realizadas explicitamente por chamadas JNDI ou ento implicitamente por anotaes do Java EE 5.Todos os componentes Java EE tem nomes JNDI. A nica exceo so compo-nentes Web, que so identificados por URLs, mapeadas dentro de um contexto que equivale a um pacote WAR.O espao de nomes JNDI de um servidor de aplicaes Java EE dividido em trs reas:

    Global, indicada por nomes sem nenhum dos prefixos que identificam as duas outras reas, permite acesso a componentes por outro servidores de aplicaes ou clientes Java SE. Componentes de aplicao como EJBs e filas JMS m geral so identificados por nomes Globais;

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 20

  • 1.2. Espaos de nomes JNDI

    JVM, indicada pelo prefixo java:, que permite o acesso por qualquer outro componente dentro da mesma JVM, ou seja, dentro da mesma ins-tncia do servidor de aplicaes. Componentes que no podem ser com-partilhados com clientes remotos, por exemplo conexes a bancos de da-dos, so colocadas no espao restrito JVM;

    Local, indicado pelo prefixo java:comp/env, que visvel apenas den-tro de um mesmo componente ou deployment (na verdade, dentro de um mesmo pacote deployado). Em geral os nomes locais so links para no-mes Globais ou da JVM.

    Esta separao permite controlar a visibilidade entre componentes e aplica-es, evitando colises de nomes e permitindo ao administrador grande flexi-bilidade na configurao das dependncias entre os componentes.Por exemplo, um administrador pode decidir compartilhar o mesmo DataSour-ce entre vrias aplicaes, para diminuir o consumo de recursos do banco, ou ento isolar uma aplicao em especial para evitar que um leak de conexes esgote o pool, impedindo o funcionamento de outras aplicaes.Ou ento, o administrador pode trocar um EJB desenvolvido internamente por um EJB adquirido no mercado. Um exemplo adicional seria mover um compo-nente EJB para um servidor de aplicaes diferente, de modo a desafogar um servidor sobrecarregado.A configurao dos nomes locais e globais para componentes de aplicao foi apresentada no curso 436 JBoss AS para Administradores de Sistemas e no ser portanto revista aqui.

    1.3. O Servidor de Aplicaes JBoss ASO JBoss AS nasceu como EJBOSS, de EJB Open Source System, criado por Marc Fleury. O objetivo inicial era fornecer apenas o componente que era a novidade do ento nascente padro Java EE 1.2: o Container EJB.O EJBOSS teve que mudar de nome para JBoss, porque EJB era uma marca registrada e s poderia ser usada por produtos certificados no padro Java EE. Com o tempo, o JBoss se tornou um servidor Java EE completo e a verso 4.0 foi a primeira a ser certificada pelo JCP mas bem antes o JBoss j era reco-nhecido pelo mercado como um servidor confivel e performtico.

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 21

  • 1.3. O Servidor de Aplicaes JBoss AS

    AdministraoAvanadadoJBossASSlide1 102009FernandoLozano&4LinuxLtda.

    Blocos Funcionais do JBoss AS

    Transaes (JTA)

    Conectores (JCA)

    Servidor de MensagensJMS (JBoss MQ)

    Segurana (JAAS, JAAC) Servio de NomesJNDI

    Container EJB

    EJB

    Container Web (Tomcat)

    Servlet JSP

    EJB

    Invocadores Deployers

    Micro-kernelJMX

    Figura 1.4 Blocos funcionais do JBoss AS 4.x

    Outro desenvolvimento foi o crescimento do ecossistema e da comunidade JBoss, com vrios componentes o servidor promovidos a projetos independen-tes e outros projetos open source sendo incorporados ao servidor. Para evitar a confuso com outros projetos JBoss o servidor de aplicaes foi novamente renomeado para JBoss AS, onde o as vem de Application Server.O JBoss AS tem como grande diferencial o fato de ser escrito inteiramente em Java, enquanto que produtos da IBM, BEA e outros concorrentes proprietrios foram em sua maioria construdos sobre produtos pr-Java, que forneciam in-fra-estrutura para aplicaes CORBA e monitores de transaes X/Open.Este legado de cdigo nativo torna os competidores proprietrios do JBoss mais pesados, menos flexveis em termos da evoluo dos prprios produtos para novos padres do JCP. Tambm complica a vida do desenvolvedor, pois o ciclo de desenvolvimento e testes das aplicaes alongado pela necessidade de se gerar e compilar stubs e squeletons para componentes remotos.

    1.4. Arquitetura do JBoss ASEste curso focado na verso 4.2.x do JBoss AS, que certificada para o J2EE 1.4, embora fornea alguns componentes (no-certificados) Java EE 5, por ex-emplo EJB 3, JPA e JSF. O motivo que esta a verso normalmente encontra-da em ambientes de misso-crtica.J est disponvel o JBoss AS 5.1, s que esta verso ainda no tem histrico de uso em misso crtica, e muda totalmente sua arquitetura em relao s

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 22

  • 1.4. Arquitetura do JBoss AS

    verses anteriores. Graas aos padres do Java EE, usar o JBoss AS 4 ou 5 de-veria ser algo mais ou menos transparente para o desenvolvedor, mas para o administrador so produtos totalmente diferentes. E, devido s mudanas pro-fundas na arquitetura do servidor, no se pode assumir o mesmo nvel de con-fiabilidade j comprovado para o JBoss AS 4.No final de 2010, est em vias de ser liberada pela comunidade a verso 6.0 do JBoss AS, que segue a mesma arquitetura do JBoss AS 5, mas atualiza as APIs de aplicao para o Java EE 6. Ento para o administrador o JBoss AS 6 dever ser equivalente ao JBoss AS 5.Servidores de aplicaes Java EE no so servidores monolticos com uma ni-ca funo, como seria um servidor de e-mail ou banco de dados. Por isso o JBoss AS foi construdo como uma srie de componentes relativamente inde-pendentes entre si interligados por um microkernel baseado na API JMX. En-quanto outros servidores de aplicao usam o JMX apenas como viso exter-na do servidor, no JBoss AS o JMX o corao da sua arquitetura interna.O Microcontainer JMX do JBoss AS cumpre o papel de MBean Server do pa-dro JMX, e os servios do JBoss AS so implementados como MBeans JMX. Os MBeans no falam diretamente entre si, mas sim indiretamente por meio do MBean Server. Assim possvel acrescentar, remover ou atualizar MBeans sem reiniciar todo o JBoss AS, ou seja, o servidor de aplicaes pode ser re-configurado quente.Entretanto o padro JMX no define um ciclo de vida para os MBeans: no so definidas operaes de incio e trmino, nem dependncias entre os MBeans. Para compensar estas deficincias o JBoss AS define um tipo especializado de Mbean, o Service MBean (Servio MBean).Componentes MBean so identificados por um nome textual na forma:domnio:nome=valor[,nome=valor]MBeans so agrupados em domnios e cada MBean nomeado conforme um conjunto de atributos. Sendo um conjunto, a ordem em que os atributos so relacionadas no faz diferena.Administrar o servidor de aplicaes JBoss AS consiste basicamente em confi-gurar, acessar propriedades ou invocar mtodos do MBean apropriado. Toda a estrutura interna do servidor exposta pelos Mbeans.Dentro os vrios servios MBean fornecidos com o JBoss AS, existem dois ti-pos com papel importante: os deployers, que cuidam de ativar outros compo-nentes para o microkernel (fabricando MBeans dinamicamente caso necess-rio) e os invocadores, que permitem acesso remoto a MBeans usando proto-colos padronizados como RMI ou proprietrios do JBoss AS como o JBoss Re-moting (utilizado pelo Unified Invoker, o padro para acesso a EJB no JBoss AS 4.x).Mesmo os componentes de aplicaes so executados como MBeans, de modo que o microkernel d um tratamento uniforme para os servios do prprio ser-vidor de aplicaes e para as aplicaes hospedadas nele.

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 23

  • 1.4. Arquitetura do JBoss AS

    JBoss AS 5 e 6 so baseados em tcnicas de AOP, trocando o microkernel por um microcontainer. Ento neles no existem os servios JMX, mas con-tinuam sendo fornecidos MBeans para monitorao e administrao do ser-

    vidor de aplicaes. Os arquivos de configurao do servidor passam a seguir a sintaxe do framework JBoss AOP.

    O

    1.5. Estrutura de diretrios do JBoss ASUma instalao do JBoss AS tem estrutura semelhante mostrada na tabela 1.1:

    Tabela 1. 1 Estrutura de diretrios do JBoss AS

    jboss-4.2.3.GA Diretrio de instalao do JBoss AS

    bin Scripts para incio (run) e trmino (shutdown) do servidor de aplicaes, alm de scripts para desenvolvimento de Web Ser-vices e o Twiddle;

    client Bibliotecas Java (arquivos *.jar) para a compilao de compo-nentes a serem hospedados pelo JBoss AS e para a execuo de clientes remotos que falem com estes componentes;

    docs Exemplos de documentos XML para configurao de Servios MBean;

    lib Classes Java que foram o Microkernel JMX e permitem a inicial-izao do JBoss AS;

    server Cada subdiretrio desta pasta forma uma configurao distinta do JBoss AS, isto , um conjunto de Servios MBean e seus di-retrios de trabalho. O nome do diretrio o argumento passa-do para a opo -c do script run.

    all Contm todos os Servios MBean fornecidos pela distribuio padro do JBoss AS, incluindo os recursos de cluster e o agente SNMP;

    default Fornece todos os servios previstos pelo Java EE, porm sem a capacidade de operar em cluster;

    minimal Inicia o conjunto mnimo de Servios MBean que permite a con-figurao a quente de novos servios e a administrao do prprio servidor de aplicaes.

    Sugere-se que, em vez de modificar diretamente uma das configuraes forne-cidas (normalmente a default ou ento a all) que o administrador crie sob a

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 24

  • 1.5. Estrutura de diretrios do JBoss AS

    pasta server uma nova configurao e realize suas customizaes sobre a c-pia.Cada configurao abaixo da pasta server segue a estrutura apresentada na tabela tabela 1.2:

    Tabela 1. 2 Estrutura de um diretrio de configurao do JBoss AS

    jboss-4.2.3.GA Diretrio de instalao do JBoss AS;

    server Diretrio de configuraes;

    default Configurao padro para servios Java EE;

    conf Configuraes dos primeiros MBeans configurveis pelo admin-istrador, alm de configuraes globais de segurana, invo-cadores e logging;

    data Arquivos de dados dos servios, por exemplo logs de transaes JTA e bancos de dados HSQLDB;

    deploy Pacotes Java EE e SAR, que contm respectivamente compo-nentes de aplicaes e Servios MBean hospedados pelo JBoss AS. Os componentes neste diretrio podem ser atualizados a quente;

    lib Bibliotecas Java utilizadas pelos Servios MBean ou pelos compo-nentes Java EE;

    log Arquivos de log do Log4J;

    tmp Arquivos temporrios dos servios do JBoss AS;

    work Arquivos temporrios do Tomcat, por exemplo sesses HTTP seri-alizadas e Servlets gerados pela compilao de pginas JSP.

    Dentre os diretrios de uma configurao, os diretrios log, tmp e work so volteis e sero criados somente na primeira inicializao do JBoss AS com esta configurao.De modo semelhante, o diretrio data tambm ser criado no primeiro start, mas seu contedo inclui dados persistentes como mensgens em filas JMS, logs de transaes distribuda e dados no banco de dados HSQLDB interno do ser-vidor de aplicaes.Os demais diretrios (conf, deploy e lib) so onde o administrador do servi-dor ir realizar customizaes.Em caso de parada inesperada no servidor, o contedo das pastas tmp e work pode ficar corrompido, por isso recomenda-se que elas sejam removidas sem-pre que o servidor for finalizado por um mtodo que no o script shutdown. Tambm possvel remover os diretrios data e log, retornando o servidor ao

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 25

  • 1.5. Estrutura de diretrios do JBoss AS

    estado inicial, mas deve-se considerar se as informaes perdidas no iro fazer falta.J as pastas lib e deploy tendem a ficar com uma mistura de componentes fornecidos de fbrica pelo JBoss AS e componentes das aplicaes instala-das no servidor, por isso recomenda-se configurar o servidor para reconhecer pastas adicionais com os mesmos papis.

    1.6. Ferramentas Administrativos do JBoss ASO JBoss AS fornece em sua distribuio padro trs consoles JMX. Todos eles permitem enxergar e atuar sobre quaisquer componentes (MBeans) do JBoss AS, mas cada um tem um estilo diferente de interface com o usurio, que os torna mais indicados para tarefas distintas:

    JMX Console fornece uma interface web simples para busca e visualiza-o de MBeans do JBoss AS. Ao ser selecionado um MBean, possvel consultar e modificar o valor de propriedades, ou invocar (executar) operaes fornecidas pelo MBean.

    Web Console utiliza um Applet Java para facilitar a navegao pela es-trutura de MBeans do JBoss AS. Ao ser selecionado um MBean no Ap-plet, exibida a pgina de visualizao e modificao do MBean forneci-da pelo JMX Console. O Web Console tambm fornece recursos para li-dar com indicadores de performance previstos pela JSR-77, alm de tra-tamento diferenciado para MBeans de Monitor e Snapshot;

    Twiddle uma ferramenta de linha de comando que fornece basicamen-te as mesmas capacidades do JMX Console, porm mais conveniente para execuo em scripts do Sistema Operacional.

    O JMX Console e Web Console so aplicaes web padres do Java EE que j vm pr-instaladas no JBoss AS e so acessveis respectivamente pelas URLs http://127.0.0.1:8080/jmx-console e http://127.0.0.1:8080/web-con-sole.J o Twiddle o script twiddle.sh (ou twiddle.bat) na pasta bin da instala-o do JBoss AS. Se for executado com as opes -h ou --help-commands ser exibida a sua sintaxe de linha de comando.Outros consoles JMX podem ser utilizados para a administrao e monitorao do JBossAS, por exemplo o JConsole do JDK 5+, o MC4J ou o Tomcat Probe.Est em desenvolvimento de um super console para o JBoss AS, baseado no projeto de Software Livre RHQ (http://www.rhq-project.org/), que por sua vez um derivado do Hyperic. Este produto fornecido com o nome JOPR, e possui duas verses:

    O Embedded JOPR, que ser parte da instalao padro de futuras ver-ses do JBoss AS, e fornece administrao e monitorao bsicos para uma instncia isolada do servidor;

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 26

  • 1.6. Ferramentas Administrativos do JBoss AS

    O JOPR full que roda em uma instncia dedicada do JBoss AS e pode monitorar e gerenciar vrios servidores JBoss AS isolados ou em cluster, alm de servidores Apache Httpd, Tomcat e PostgreSQL.

    Nenhuma das duas verses do JOPR fornece gerenciamento abrangente do servidor de aplicaes, isto , mesmo que se utilize o JOPR full ainda ser necessrio editar manualmente os arquivos XML de configurao dos MBeans, que so os descritores de deployment dos pacotes SAR.Da mesma forma, o JOPR no fornece acesso a todas as informaes de confi-gurao e performance do JBoss, de modo que ele no substitui inteiramente a monitorao por meio ferramentas JMX mais genricas como o JMX Console e o twiddle.

    a verdade o JOPR full seria equivalente a ferramentas de monitorao de redes como o MRTG, BigBrother, Nagios ou Zabbix, pois seu ponto forte a capacidade de armazenar dados histricos de performance e disponibi-

    lidade para servidores de rede, e gerar grficos, relatrios ou alertas a partir des-tes dados. Ento, se sua organizao j possui know-how em alguma dessas fer-ramentas, pode ser melhor utiliza-la para monitorar servidores JBoss AS do que utilizar o JOPR.

    N

    Para os interessados, a tabela 1.3 apresenta uma breve comparao entre o Embedded JOPR, o full JOPR e o Zabbix, como representante de ferramentas de monitorao no exclusivamente Java EE:

    Tabela 1. 3 Comparao entre o Embedded JOPR, JOPR Full e Zabbix

    Feature Embedded JOPR Full JOPR Zabbix

    Interface com o usurio Fixa, baseada em JSF e JBoss Seam

    Portal-like, bas-tante configurvel, baseada em Struts Tiles

    Bastante configurvel, baseada em PHP

    Tecnologia Java EE Java EE C + PHP

    Agente para coleta de in-formaes

    N/A Agente Java stand-alone com bibliote-cas nativas para in-formaes do SO

    Agente nativo, agente Java JMX (zapcat) e/ou nenhum agente utilizan-do SNMP ou WBEM

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 27

  • 1.6. Ferramentas Administrativos do JBoss AS

    Servios monitorveis Apenas o prprio JBoss AS onde foi instalado

    JBoss AS, Tomcat, Apache Httpd, PostgreSQL, Oracle, alm de SOs Unix e Win-dows

    Qualquer servidor de aplicaes Java EE, vrios bancos de dados, servios Internet (e-mail, web), SOs Unix e Windows, dispositivos de rede como roteadores e switches

    Modo de coleta Pull Pull Pull ou Push

    Armazena dados histricos No Sim Sim

    BD para dados histricos N/A PostgreSQL, Oracle PostgreSQL, MySQL, SQLLite

    Grficos e relatrios cus-tomizveis

    No Sim Sim

    Alertas No Sim Sim

    Escalar alertas No No Sim

    Execuo de comandos re-motos (em resposta a aler-tas e filtros)

    No Sim Sim

    Monitorao de logs No Sim Sim

    Dashboards No Sim Sim

    Mapas de rede No No Sim

    Auto-descoberta de recur-sos monitorveis

    Sim Sim Sim

    Deploy de componentes Java EE, Datasources e Fi-las JMS

    Sim Sim No

    Extensibilidade No Plug-ins para o agente

    Shell scripts, templates, agentes customizados

    Acesso direto a MBeans No No Sim

    Monitorao distribuda No No Sim

    Clusterizvel No Sim (recursos do JBoss AS)

    Sim (Heartbeat, RHCS)

    1.7. Configurao do JBoss AS para produoA instalao padro do JBoss AS vem configurada para comodidade do desen-volvedor, e contm uma srie de defaults que um administrador provavelmen-te achar inadequados em ambiente de produo. Entre eles:

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 28

  • 1.7. Configurao do JBoss AS para produo

    As ferramentas administrativas esto abertas para acesso annimo, in-cluindo a administrao remota via JMX sobre RMI;

    No existem pastas separadas para instalao de bibliotecas e aplica-es, sendo reaproveitadas as j utilizadas pelos componentes do pr-prio servidor de aplicaes. Em caso de atualizao ou customizao, os arquivos do prprio servidor e os acrescentados pelo administrador ou desenvolvedor esto misturados;

    O log bastante verboso, exibindo mensagens INFO e at mesmo DE-BUG de vrios componentes e frameworks.

    Alm disso, normalmente necessrio inserir uma srie de opes para a JVM que executa o JBoss AS:

    Tamanho do Heap, Stack e PermGen; Ativar acesso JMX (para o jconsole); Inserir opes especficas para o SO, como o suporte a HugePages ou o

    modo headless do AWT em Unix.

    embrando, propriedades de sistema (System Properties da JVM) que sejam necessrias para aplicaes especficas so melhor configuradas utilizando o SystemProperty MBean do JBoss AS em vez das opes de linha de coman-

    do da JVM.L

    Como este um curso avanado, assume-se que os alunos j sabem como rea-lizar estes ajustes, e que tambm j sabem como modificar o comportamento do JBoss AS em relao a classloaders, chamadas por valor ou referncia, por-tas TCP, segurana e opes para a JVM. Outros conhecimentos assumidos como pr-requisitos envolvem como remover servios desnecessrios, por ex-emplo os invocadores HTTP e o BeanDeployer.Em caso de dvidas, consulte sua apostila do curso 436 - JBoss para Adminis-tradores, o Guia de Administrao em jboss.org e a Wiki do JBoss AS. claro, tambm fique vontade para perguntar ao instrutor. Mas tenha em mente que este um curso avanado, portanto tem vrios pr-requisitos quan-to ao conhecimento do aluno em relao ao prprio JBoss AS.

    1.8. Modelo de performance para um Servidor de Aplicaes Java EE

    Um bom modelo para entender a performance e o consumo de recursos de um servidor de aplicaes Java EE um pipeline, onde as entradas so as requisi-es remotas enviadas por navegadores Web ou clientes Java remotos, incluin-do a outros servidores de aplicao.

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 29

  • 1.8. Modelo de performance para um Servidor de Aplicaes Java EE

    O pipeline inicia com os componentes que tratam as requisies e protocolos de rede, no caso os Conectores do Tomcat, Invocadores para Servios MBeans (JNDI, EJB, JTA) e os Invocation Layers para o JBoss MQ.O meio do pipeline formado pelas vrias camadas de processamento de in-terface com o usurio, regras de negcio, e acesso a EIS, que correspondem s camadas de apresentao, negcios e persistncia do modelo de desenvol-vimento em trs camadas ou Three-Tier.O final do pipeline, ou a sada, formada pelos conectores JCA que possibili-tam o acesso a um banco de dados, servidor MOM externo ou outro tipo de EIS.Se o pipeline for desenhado de modo a refletir a quantidade de trabalho ou de recursos consumida, ou simplesmente o volume da entrada em relao ao co-lume da sada em cada etapa, o resultado se parece mais com um funil, como ilustrado pela Figura 1.5.A entrada larga pois a quantidade de usurios interativos ativos em uma aplicao sempre bem maior do que a quantidade de requisies de rede ge-radas em um dado momento por estes usurios. Cada usurio consome um tempo considervel (para o computador) em cada digitao, cada click ou ape-nas lendo as telas e decidindo o que fazer.

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 30

  • 1.8. Modelo de performance para um Servidor de Aplicaes Java EE

    JBossASParaAdministradoresSlide11 42009FernandoSilvaLozano&4LinuxLtda.

    O Efeito Funil

    Usurios Navegando

    Conexes /Requisies HTTPThreads do Conector

    Heap da JVMInstncias de EJB

    Uso de CPU

    Conexes ao BDPool do DataSource

    Figura 1.5 Modelo bsico de performance do Servidor de Aplicaes Java EE

    Espera-se tambm que uma aplicao bem escrita concentre as etapas de vali-dao de dados no incio, enviando imediatamente feedback quanto a erros de operao, antes de acessar os bancos de dados.Do mesmo modo, espera-se que uma aplicao realize todo o pr-processa-mento que seja possvel antes de acessar um BD ou EIS, e que quando o faa realize a maior parte das operaes em um nico batch, para depois tratar todos os resultados. Ento a aplicao (requisio) passar uma parcela pe-quena do seu tempo de execuo acessando o BD, gerando uma sada menor do que o miolo do pipeline.Este comportamento esperado vital para a performance de um servidor de aplicaes ou qualquer outro software de servidor. a ociosidade do usurio interativo, junto com a reduo progressiva de demanda a cada etapa do pipe-line, que viabiliza a maior parte das tcnicas de escalabilidade adotadas pelo software enterprise moderno. claro que o pipeline ou funil de muitas aplicaes ser mais complexo, com vrios caminhos possveis de entrada e sada, e a necessidade de acesso a EIS diferentes em cada etapa. Mas isto no compromete a utilidade do modelo de funil, que comprovado na prtica por inmeros sistemas de informao e pacotes de middleware corporativos.No curso bsico 436 - JBoss.org para Administradores foram apresentados os principais MBeans e atributos monitorveis para formar o funil do JBoss

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 31

  • 1.8. Modelo de performance para um Servidor de Aplicaes Java EE

    AS. Ento esperamos que o aluno, utilizando a figura e explorando o JMX Con-sole, j seja capaz de localizar estes componentes.

    1.9. Exerccios

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 32

  • 1.9. Exerccios

    Laboratrio 1.1. Ambiente Java

    (Prtica Dirigida)

    Objetivo: Instalar o ambiente Java

    Como este um curso avanado, no sero fornecidas instrues passo-a-pas-so para a configurao do ambiente de trabalho incluindo o JDK e o Apache Ant. Os interessados podero encontrar estas instrues na apostila do curso 436 JBoss AS para Administradores.Mas o instrutor ir orientar os alunos de modo que todos tenham suas esta-es de trabalho prontas para os prximos laboratrios.No final do laboratrio, os seguintes comandos devem funcionar e gerar o re-sultado apresentado:

    $ java -version java version "1.5.0_16" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b02) Java HotSpot(TM) Server VM (build 1.5.0_16-b02, mixed mode) $ javac -version 2>&1 | head -n 3 javac 1.5.0_16 javac: no source files Usage: javac $ ant -version Apache Ant version 1.7.1 compiled on February 23 2009 $ ant -diagnostics [ deve executar at o final sem erros ]

    Na verdade, o que necessitamos de um JDK (no um JRE!) 1.5.0 da Sun e um Apache Ant 1.6.0 ou mais recente, todos devidamente configurados para exe-cuo pelo prompt de comandos do SO. Com estes requisitos atendidos, pos-svel realizar os demais laboratrios deste curso mesmo em Windows ou Mac.

    lternativamente, o instrutor poder optar pelo uso da instalao do JDK6 (OpenJDK) fornecida pelo Fedora Linux. Neste caso, importante usar o download do JBoss AS compilado para o jdk6, pois o download padro s ir

    funcionar corretamente com o jdk5.A

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 33

  • 1.9. Exerccios

    Laboratrio 1.2. Monitorao via JMX Console e Twiddle

    (Prtica Dirigida)

    Objetivo: Recapitular o uso das ferramentas administrativas fornecidas com o JBoss AS

    Utilize o download fornecido pelo instrutor para instalar o JBoss AS 4.2.3 e execute sua configurao default. Afinal, em um curso avanado, espera-se que o aluno j saiba colocar uma instncia do JBoss no ar.Em seguida, acesse o JMX console e localize o MBean MainDeployer, ou me-lhor, jboss.system:service=MainDeployer. Verifique se existe algum deploy-ment falho (ou incompleto).Depois disso, utilize o twiddle na linha de comando para consultar o MBean ServerInfo (jboss.system:service=ServerInfo) e verificar a quantidade de memria livre na JVM.Localize ainda os MBeans que permitem o acompanhamento de Threads do conector HTTP do Tomcat e de conexes ativas no DataSource DefaultDS. Anote aqui os nomes completos destes MBeans caso voc no se recorde:

    ......................................................................................................................................................

    ......................................................................................................................................................

    ......................................................................................................................................................

    ......................................................................................................................................................

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 34

  • 1.9. Exerccios

    Laboratrio 1.3. Explorando o Diretrio do Servidor de Apli-caes

    (Prtica Dirigida)

    Objetivo: Identificar nomes e componentes nos espaos Globais, JVM e local do JNDI

    Localize via JMX-Console o MBean JNDIView e execute sua operao list. Identifique na listagem os espaos de nomes locais de aplicaes como o JMX-Console, e neste o security domain para autenticao de usurios. Este link aponta para o espao de nomes Global ou JVM?

    ......................................................................................................................................................

    ......................................................................................................................................................

    ......................................................................................................................................................

    ......................................................................................................................................................

    Identifique ainda componentes como o DataSource do HSQLDB, e filas JMS. Quais destes componentes estaro no espao Global?

    ......................................................................................................................................................

    ......................................................................................................................................................

    ......................................................................................................................................................

    ......................................................................................................................................................

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 35

  • 1.9. Exerccios

    Laboratrio 1.4. Instalao para produo

    (Prtica Dirigida)

    Objetivo: Recapitular as configuraes bsicas recomendadas para um servi-dor de aplicaes JBoss AS em produo.

    Antes de mais nada, finalize a instncia do JBoss AS iniciada como parte do la-boratrio anterior. Daqui em diante, no iremos mais utilizar a configurao default fornecida com o JBoss AS, e sim a configurao de produo que ser gerada no laboratrio corrente.Utilize o buildfile fornecido com o exemplo (em Cap1/Lab3/build.xml) para gerar uma nova configurao do servidor, chamada 4linux. Em seguida veri-fique que:

    O acesso administrativo, seja via jmx-console ou twiddle, est protegido por login e senha: admin/admin;

    O JMX Console exibe MBeans da JVM da Sun, por exemplo no domnio java.lang, que no apareceriam em uma instalao padro do JBoss AS;

    possvel relacionar os MBeans do JBoss AS via jconsole. Aproveite e localize o MainDeployer, ServerInfo, Conector HTTP e DataSource De-faultDS;

    O servio HTTP Invoker foi removido; Existem as pastas bibliotecas e pacotes, respectivamente para insta-

    lao de jars e deployment de componentes Java EE; O server.log no inclui mais mensagens DEBUG;

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 36

  • 1.10. Concluso

    1.10. ConclusoEste captulo foi essencialmente um nivelamento, recapitulando os conceitos essenciais e prticas apresentadas no curso JBoss AS para Administradores, assim preparando o terreno para os exerccios prticos dos prximos captu-los.

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 37

  • 1.10. Concluso

    Questes de Reviso

    Servlets, EJBs, Conectores, Queues e MBeans so todos componentes de uma aplicao Java EE? Caso contrrio, quais deles so desenvolvidos como parte de uma aplicao e quais deles so parte da infra-estrutura configurada pelo administrador?

    ......................................................................................................................................................

    ......................................................................................................................................................

    ......................................................................................................................................................

    ......................................................................................................................................................

    ......................................................................................................................................................

    ...................................................................................................................................................... Verdadeiro ou falso: Devido s extenses do JBoss AS ao padro JMX,

    seus MBeans no podem ser acessados por consoles JMX que no te-nham sido especialmente modificados?

    ......................................................................................................................................................

    ......................................................................................................................................................

    ......................................................................................................................................................

    ...................................................................................................................................................... Em um ambiente de produo com JBoss AS, espera que o nvel utiliza-

    o maior ocorra no Pool de Threads do Conector HTTP do Tomcat ou no pool de conexes do DataSource? Ou seja, em um dado momento qual seria a relao entre a quantidade de threads de entrada busy e a quantidade de conexes a BD ativas?

    ......................................................................................................................................................

    ......................................................................................................................................................

    ......................................................................................................................................................

    ......................................................................................................................................................

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 38

  • 2. Consoles Administrativos: JOPR e ZabbixOs consoles administrativos do JBoss AS, embora forneam visibilidade de tudo o que ocorre dentro do servidor de aplicaes, e permitam atuar sobre todos os aspectos que no exigem reinicializao, provavelmente no atende-ro a todas as demandas de um ambiente de prodio corporativo.Por isso neste captulo somos apresentados a duas ferramentas representati-vas do universo de opes disponveis para o Administrador.Tpicos:

    Ecossistemas open source Administrao do dia-a-dia com JOPR Monitorao continuada com Zabbix

  • 2.1. Ecossistemas Open Source

    2.1. Ecossistemas Open SourceUma diferena fundamental entre produtos open source e seus concorrentes proprietrios o nvel de abrangncia dos mesmos. Produtos proprietrios tentam ser solues completas, atendendo a vrias necessidades diferentes, incluindo muitas que so apenas tangencialmente relacionadas com a finalida-de do produto. J produtos open source costumam ser bem focados em uma necessidade bsica, deixando de atender algumas necessidades relacionadas, que teriam sido atendidas bem ou mal pelo concorrente proprietrio.Por outro lado, o produto proprietrio muitas vezes fornece apenas solues ruins para as necessidades no-essenciais, e no fornece alternativas, nem permite que produtos de terceiros sejam utilizados como complementos para estes casos. J produtos open source bem-sucedidos geram ecossistemas de outros produtos que competem entre si para atender a essas necessidades no-essenciais, gerando solues agregadas melhores para os usurios.Este um alerta para que se tome cuidado na comparao entre produtos open source x proprietrios. Normalmente sero necessrios vrios produtos open source para igualar o feature set de um produto proprietrio.Ferramentas de gerenciamento e monitorao para o JBoss AS so um caso t-pico. O JBoss AS em si fornece apenas ferramentas bsicas de JMX, no conso-les amigveis e sofisticados. Mas existem vrias opes open source que pode-ro ser to amigveis e sofisticadas quando o desejado. E muitas delas podem ser utilizadas de forma complementar, em vez de serem opes exclusivas.Neste captulo so abordadas duas destas solues, o Embebed JOPR e o Zab-bix com o Zapcat. Uma serve questo de facilitade de uso, oferendo uma interface amigvel para funes do dia-a-adia como deployment de pacotes ou criao de data-sources. Outra oferece monitorao continuada, com grficos, relatris e alertas em vrios nveis de detalhamento.A opo por essas duas no significa que sejam as melhores para qualquer ce-nrio, nem que sejam sozinhas suficientes para qualquer empresas. Mas so ferramentas que vem sendo usadas com sucesso nos engajamentos da 4Linux e representam bem a variedade de alternativas open source disponveis no mercado.

    2.2. Introduo ao JOPRO JOPR o console de gerenciamento oficial da comunidade JBoss, sendo na verdade uma customizao do projeto open source RHQ. Ele uma aplica-o Java EE que realiza coleta de dados de performance, alm do armazena-mento desses dados em um BD dedicado para gerao de grficos, alertas e traamento de baselines.O JOPR utiliza uma agente misto de cdigo Java e nativo para a coleta de da-dos de monitorao e para a execuo de aes administrativas, por exemplo o desligamento de um servidor. Este agente tem que ser instalado em cada

    JBoss AS Performance e Alta Disponibilidade 2 reviso Pag. 40

  • 2.2. Introduo ao JOPR

    host gerenciado, a nvel do SO nativo, e pode ser estendido por plug-ins escri-tos em Java.O JOPR exige recursos significativos de hardware, no tendo sido criado para compartilhar um host com outros tipos de servidores, incluindo outros servi-dores de aplicao. Mas pode ser escalado pela clusterizao de vrios servi-dores JOPR.

    2.2.1. O Embebed JOPREst sendo desenvolvida em paralelo uma verso leve do JOPR, chamada Embebed JOPR, que instalada como uma aplicao dentro de um servidor JBoss AS existente, e que fornece um subconjunto das capacidades do JOPR completo.A verso leve do JOPR no necessita de agente, mas limitada ao gerencia-mento do prprio servidor JBoss AS onde ela foi instalada, no oferecendo ge-renciamento do SO subjacente, nem de outros tipos de servidores, nem de clusters de servidores JBoss AS.A quase totalidade das funes realmente administrativas do JOPR esto presentes na verso Embebed. O que est ausente so as funcionalidades de monitorao continuada e gerao de alertas.Ento o Embebed JPOR uma boa ferramenta para vrias atividades do dia-a-dia, especialmente para administradores iniciantes. Ele tambm capaz de exibir de forma mais acessveis vrias informaes instantneas de performan-ce (sem histrico) que normalmente envolveriam procurar por diferentes MBeans nos consoles JMX.

    em o JOPR completo nem o Embebed JOPR oferecem acesso livre a MBeans do JBoss eles no incluem consoles JMX ento mesmo o JOPR completo no ir eliminar de todo a necessidade de se utilizar o twiddle ou JMX Con-

    sole.N

    2.2.2. Instalao e Operao do Embebed JOPRO Embebed JOPR pode ser baixa