Tutorial Módulo 10 Monitoração de Ambientes
|
|
|
- Rodrigo Salgado Aragão
- 10 Há anos
- Visualizações:
Transcrição
1 LABORATÓRIO 10 Monitoração de Este laboratório tem por objetivo exercitar o uso das ferramentas especializadas para a monitoração de aplicações Java através dos servidores SNMP (genérico) e Zabbix (específico) disponibilizadas pelo componente Demoiselle Monitoring. Objetivos: Monitoração do tipo polling via SNMP e uso de cliente SNMP; Monitoração do tipo trapping via SNMP, uso de servidor SNMP e criação de checkers; Monitoração do tipo polling via Zabbix; Monitoração do tipo trapping via Zabbix e criação de checkers; Utilização de trapping padrão e appenders Log4j para SNMP e Zabbix; Pré-requisitos: Conhecimento da ferramenta de gerenciamento de pacotes Apache Maven; Instalação de cliente e servidor SNMP, tal como Net-SNMP; Conhecimento básico de utilização da interface Web do Zabbix. Referências: Net-SNMP: Zabbix: 1
2 Preâmbulo Preparação da aplicação de exemplo Obs.: Caso você já possua uma aplicação do tipo Java Web, pode ignorar esta seção. 1. No Eclipse, crie um novo projeto utilizando o menu File > New > Other > Maven Project tal como ilustrado a seguir: 2. Na tela seguinte, escolha o arquétipo demoiselle-archetype-webapp para o projeto: 2
3 3. Na próxima tela, informe o grupo br.gov.sample.demoiselle e o artefato escola conforme tela abaixo, clicando em seguida no botão Finish: 4. Substitua o conteúdo do arquivo WEB-INF/web.xml da aplicação com as seguintes linhas: <?xml version="1.0" encoding="utf-8"?> <web-app xmlns:xsi=" xmlns=" xmlns:web=" xsi:schemalocation=" version="2.5"> </web-app> <display-name>escola</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> 5. Lance o servidor Tomcat do Eclipse, associe a aplicação escola e teste a sua execução. 3
4 Exercício 10.1 Polling SNMP: Criação e utilização do agente 1. Inclua a seguinte dependência no arquivo pom.xml da aplicação: <dependency> <groupid>br.gov.component.demoiselle</groupid> <artifactid>demoiselle-monitoring</artifactid> <version>1.0.0</version> </dependency> 2. Crie a interface EscolaMonitoringMBean estendendo a interface IMBean e com o seguinte conteúdo: package br.gov.sample.demoiselle.escola.monitoring.mbean; import br.gov.component.demoiselle.monitoring.jmx.imbean; public interface EscolaMonitoringMBean extends IMBean { long getqtdalunosmatriculados(); int getqtdturmasincluidas(); String getversaoaplicacao(); String getultimousuariologado(); int getnivellog(); void setnivellog(int nivellog); 3. Crie a classe EscolaMonitoring implementando a interface EscolaMonitoringMBean desenvolvida anteriormente, incluindo todos os métodos nela existentes: package br.gov.sample.demoiselle.escola.monitoring.mbean; public class EscolaMonitoring implements EscolaMonitoringMBean { 4. Inclua as (para identificar o Managed Bean no servidor JMX) (para registrar a Managed Information Base MIB no agente SNMP) na classe EscolaMonitoring conforme ilustrado no código a = = " ") public class EscolaMonitoring implements EscolaMonitoringMBean { 4
5 5. Inclua a (para registrar cada um dos OIDs a serem disponibilizados na MIB via SNMP) e implemente a classe EscolaMonitoring por completo utilizando o conteúdo a seguir (modificações necessárias em destaque): package br.gov.sample.demoiselle.escola.monitoring.mbean; import org.snmp4j.smi.counter32; import org.snmp4j.smi.gauge32; import org.snmp4j.smi.integer32; import org.snmp4j.smi.octetstring; import br.gov.component.demoiselle.monitoring.jmx.mbean; import br.gov.component.demoiselle.monitoring.snmp.accessmode; import br.gov.component.demoiselle.monitoring.snmp.managedobject; import = = " ") public class EscolaMonitoring implements EscolaMonitoringMBean { private long qtdalunos = = ".1", type = Gauge32.class) public long getqtdalunosmatriculados() { this.qtdalunos = (int) (Math.random() * 100) + 100; return this.qtdalunos; private int qtdturmas = = ".2", type = Counter32.class) public int getqtdturmasincluidas() { this.qtdturmas += (int) (Math.random() * 10); return this.qtdturmas; private static final String[] USUARIOS = { "Fulano", "Sicrano", "Beltrano" = ".3", type = OctetString.class) public String getultimousuariologado() { int pos = (int) (Math.random() * USUARIOS.length); return USUARIOS[pos]; private static final String VERSAO = = ".4") public String getversaoaplicacao() { return = ".5", access = AccessMode.READ_WRITE, type = Integer32.class, allowedvalues = { 1, 2, 3, 4 ) private int nivellog = 1; public int getnivellog() { return this.nivellog; public void setnivellog(final int nivellog) { this.nivellog = nivellog; 5
6 6. Adicione as seguintes linhas ao arquivo de configurações demoiselle.properties: # JMX MBeans to be loaded on application startup component.demoiselle.monitoring.jmx.mbeans = \ br.gov.sample.demoiselle.escola.monitoring.mbean.escolamonitoring 7. Crie o arquivo de configurações snmp.properties específico para serviços SNMP contendo as linhas a seguir: # SNMP Configuration # 1) polling / active check # enable a SNMP agent that provides a given MIB tree monitoring.snmp.agent.enabled = true # the network protocol to be used (udp or tcp) monitoring.snmp.agent.protocol = udp # the port that the agent listens on (default 1161) monitoring.snmp.agent.port = 1161 # the address to listen on, or '*' to listen on any available address monitoring.snmp.agent.address = * # the MIB root to be considered monitoring.snmp.agent.mib.root = # MBeans to be exported as MIB trees monitoring.snmp.agent.mibs = \ br.gov.sample.demoiselle.escola.monitoring.mbean.escolamonitoring # security settings (particularly for SNMPv3) monitoring.snmp.agent.security = snmp-security.xml 6
7 8. Crie o arquivo snmp-security.xml contendo as definições de segurança (i.e. SNMPv3) para o serviço SNMP de acordo com as linhas a seguir: <?xml version="1.0" encoding="utf-8"?> <snmp-security> <security> <user name="escola"> <auth protocol="sha" pass="senha123" /> <priv protocol="aes" pass="senha456" /> </user> <user name="zabbix"> <auth protocol="md5" pass="senha321" /> <priv protocol="des" pass="senha654" /> </user> </security> <access-control> <views> <view name="fullreadview"> <include subtree="1.3" mask="" /> </view> <view name="fullwriteview"> <include subtree="1.3" /> </view> <view name="fullnotifyview"> <include subtree="1.3" /> </view> <view name="escolareadview"> <include subtree=" " /> </view> <view name="escolawriteview"> <include subtree=" " /> </view> <view name="escolanotifyview"> <include subtree=" " /> </view> </views> <groups> <group name="v1v2group"> <security name="public" model="snmpv1"/> <security name="public" model="snmpv2c"/> <access context="" model="any" auth="false" priv="false" exact="true"> <read view="fullreadview" /> <write view="fullwriteview" /> <notify view="fullnotifyview" /> </access> </group> <group name="v3escola"> <security name="escola" model="usm" /> <security name="zabbix" model="usm" /> <access model="usm" auth="true" priv="true" exact="true"> <read view="escolareadview" /> <write view="escolawriteview" /> <notify view="escolanotifyview" /> </access> </group> </groups> </access-control> </snmp-security> 7
8 9. Associe o listener de SNMP na aplicação Web incluindo as seguintes linhas no arquivo WEB- INF/web.xml: <!-- Demoiselle Monitoring Configuration (SNMP) --> <listener> <listener-class> br.gov.component.demoiselle.monitoring.web.snmp.snmplistener </listener-class> </listener> 10. Crie o arquivo log4j.properties de configurações do Log4j com as linhas a seguir: log4j.rootcategory=info, stdout log4j.logger.br.gov.component=debug log4j.appender.stdout=org.apache.log4j.consoleappender log4j.appender.stdout.layout=org.apache.log4j.patternlayout log4j.appender.stdout.layout.conversionpattern=%-5p [%c{1] %m%n 11. Publique a aplicação Web no contêiner Apache Tomcat e observe as linhas inseridas no console do Eclipse (vide imagem a seguir): 12. Tendo o serviço SNMP levantado pelo agente, podemos usar ferramentas tais como um cliente SNMP qualquer para efetuar operações. Eis um exemplo de utilização do comando snmpwalk para listar todos os OIDs disponíveis a partir de um determinado nó da árvore - utilizando SNMPv1, comunidade public no servidor local (localhost) e porta 1161: $ snmpwalk -v 1 -c public localhost:1161. SNMPv2-SMI::enterprises = Gauge32: 146 SNMPv2-SMI::enterprises = Counter32: 73 SNMPv2-SMI::enterprises = STRING: "Fulano" SNMPv2-SMI::enterprises = STRING: "2.4.1-RC2" SNMPv2-SMI::enterprises = INTEGER: 1 End of MIB Observe que o tipo de dados de cada objeto é disponibilizado de acordo com o que fora definido na implementação em Java. Cada OID é montado através da concatenação da raiz da MIB (definido no arquivo snmp.properties), do prefixo da MIB (definido da classe) e da do método ou atributo. 8
9 13. Ainda no terminal, execute a instrução snmpget conforme exemplo a seguir, com o objetivo de testar requisições SNMP do tipo GET, desta vez utilizando a versão 2c do protocolo desta forma podemos obter o valor de um único objeto especificando o seu OID completo: $ snmpget -v 2c -c public : SNMPv2-SMI::enterprises = Counter32: Um outro comando, o snmpgetnext, recupera o primeiro objeto disponível na árvore especificada parcialmente. Teste a execução de requisições SNMP do tipo GETNEXT utilizando a instrução abaixo: $ snmpgetnext -v 1 -c public localhost: SNMPv2-SMI::enterprises = Gauge32: Existe ainda a possibilidade de se alterar o valor de um objeto pelo cliente, sendo que neste caso usamos a instrução snmpset especificando o OID completo, o tipo de dados e o valor para o qual se deseja mudar. Teste a execução de uma instrução SNMP do tipo SET invocando a seguinte instrução: $ snmpset -v 1 -c public localhost: i 2 SNMPv2-SMI::enterprises = INTEGER: É possível ainda utilizar outros clientes SNMP para os testes anterios. Por exemplo, eis o mbrowse: 9
10 17. Considerando a configuração de segurança contida no arquivo snmp-security.xml, ao utilizar os comandos das ferramentas clientes com o protocolo SNMPv3, é preciso passar argumentos adicionais, tais como o nome do usuário, a forma escolhida para autenticação e privacidade e as respectivas senhas e algoritmos de criptografia. A instrução snmpget fica assim para o usuário escola usando SHA na autenticação e DES na privacidade: $ snmpget -v 3 -l authpriv -u escola -a SHA -A senha123 -x AES -X senha456 \ : SNMPv2-SMI::enterprises = Gauge32: Para testar o controle de acesso (VACM) do SNMPv3, ao requisitar um objeto pertencente a uma visão não permitida ao grupo do usuário, o resultado é exibido abaixo: $ snmpget -v 3 -l authpriv -u escola -a SHA -A senha123 -x AES -X senha456 \ : SNMPv2-SMI::enterprises = No Such Object available on this agent at this OID 19. Além disso, ao executar o comando snmpwalk, apenas os ramos da árvore disponíveis para o grupo do usuário são exibidos: $ snmpwalk -v 3 -l authpriv -u escola -a SHA -A senha123 -x AES -X senha456 \ : SNMPv2-SMI::enterprises = Gauge32: 102 SNMPv2-SMI::enterprises = Counter32: 86 SNMPv2-SMI::enterprises = STRING: "Sicrano" SNMPv2-SMI::enterprises = STRING: "2.4.1-RC2" SNMPv2-SMI::enterprises = INTEGER: 2 SNMPv2-SMI::enterprises = No more variables left in this MIB View (It is past the end of the MIB tree) 20. De maneira semelhante, ao utilizar o usuário zabbix com os protocolos MD5 para autenticação e DES para privacidade, além das respectivas senhas, a instrução para o snmpget é a seguinte: $ snmpget -v 3 -l authpriv -u zabbix -a MD5 -A senha321 -x DES -X senha654 \ : SNMPv2-SMI::enterprises = Gauge32: Se caso a senha de autenticação estiver incorreta, o resultado é o seguinte: $ snmpget -v 3 -l authpriv -u zabbix -a MD5 -A senha_errada -x DES -X senha654 \ : snmpget: Authentication failure (incorrect password, community or key) 22. Entretanto, se a senha de privacidade for inválida, ocorre um timeout na requisição: $ snmpget -v 3 -l authpriv -u zabbix -a MD5 -A senha321 -x DES -X senha_errada \ : Timeout: No Response from : E por fim, caso as formas de autenticação e privacidade especificadas no cliente forem diferentes das configuradas no agente, a resposta é a seguinte: $ snmpget -v 3 -l authnopriv -u zabbix -a MD5 -A senha321 \ : Error in packet Reason: authorizationerror (access denied to that object) Failed object: SNMPv2-SMI::enterprises
11 Exercício 10.2 Trapping SNMP: Criação e utilização do trapper 1. Crie a interface IEscolaTrapper estendendo a interface ITrapper e com o seguinte conteúdo: package br.gov.sample.demoiselle.escola.monitoring.trapper; import br.gov.component.demoiselle.monitoring.trapper.itrapper; public interface IEscolaTrapper extends ITrapper { void enviarfalha(string mensagem); void enviarinfobd(string base, int conexoes); void enviarmemoriaheapusada(); void enviarmensagem(string mensagem, int nivel, int valor); void enviarversaoaplicacao(); 2. Crie a classe EscolaSNMPTrapper herdando da superclasse SNMPTrapper e implementando a interface IEscolaTrapper desenvolvida anteriormente, incluindo todos os métodos nela existentes: package br.gov.sample.demoiselle.escola.monitoring.trapper; import br.gov.component.demoiselle.monitoring.trapper.snmp.snmptrapper; public class EscolaSNMPTrapper extends SNMPTrapper implements IEscolaTrapper { 3. Inclua a para configurar o envio de traps SNMP na classe EscolaSNMPTrapper conforme destacado no código a = " ", generictype = TrapType.ENTERPRISE_SPECIFIC) public class EscolaSNMPTrapper extends SNMPTrapper implements IEscolaTrapper { 4. Na mesma classe, crie uma variável estática e privada para armazenar uma única instância do objeto e um método getinstance() para sempre referenciá-la (i.e. aplicação do padrão singleton): private static EscolaSNMPTrapper instance; public static synchronized EscolaSNMPTrapper getinstance() { if (instance == null) { instance = new EscolaSNMPTrapper(); return instance; 11
12 5. Inclua a (para registrar cada um dos traps a serem disparados via SNMP) e implemente a classe EscolaSNMPTrapper por completo utilizando o conteúdo a seguir (modificações necessárias em destaque): package br.gov.sample.demoiselle.escola.monitoring.trapper; import org.snmp4j.smi.counter32; import org.snmp4j.smi.gauge32; import org.snmp4j.smi.integer32; import org.snmp4j.smi.octetstring; import br.gov.component.demoiselle.monitoring.snmp.managedobject; import br.gov.component.demoiselle.monitoring.snmp.managedtrap; import br.gov.component.demoiselle.monitoring.snmp.traptype; import br.gov.component.demoiselle.monitoring.trapper.snmp.snmptrapper; public class EscolaSNMPTrapper extends SNMPTrapper implements IEscolaTrapper { private static EscolaSNMPTrapper instance; public static synchronized EscolaSNMPTrapper getinstance() { if (instance == null) { instance = new EscolaSNMPTrapper(); return = 5, variablebindings = ".1", type = OctetString.class)) public void enviarfalha(final String message) = 15, variablebindings = = ".1", type = = ".2", type = Gauge32.class)) public void enviarinfobd(final String datasource, final int connections) = TrapType.ENTERPRISE_SPECIFIC, specifictype = 12345, variablebindings = = ".1", type = = ".2", type = = ".3", type = Counter32.class)) public void enviarmensagem(final String message, final int level, final int value) = 2, variablebindings = ".1", type = Gauge32.class), mbeanname = "java.lang:type=memory", mbeanattribute = "HeapMemoryUsage.used") public void enviarmemoriaheapusada() = ".1", type = OctetString.class), mbeanname = "br.gov.demoiselle:name=escola", mbeanattribute = "VersaoAplicacao") public void enviarversaoaplicacao() { 12
13 6. Adicione ao arquivo de configurações snmp.properties existente as linhas a seguir: # 2) trapping / passive check # enable a SNMP trapper that sends data to the server monitoring.snmp.trapper.enabled = true # the network protocol to be used (udp or tcp) monitoring.snmp.trapper.protocol = udp # name or IP address of the machine that SNMP server runs on monitoring.snmp.trapper.server = # the port of SNMP on its server (default 162) monitoring.snmp.trapper.port = 162 # name of the community to be considered monitoring.snmp.trapper.community = public # SNMP version (v1, v2c or v3) monitoring.snmp.trapper.version = v1 # enterprise OID for sending traps monitoring.snmp.trapper.enterprise_oid = # default generic trap type monitoring.snmp.trapper.generic_type = 6 # default specific trap type monitoring.snmp.trapper.specific_type = 1 # default application trap OID for sending traps monitoring.snmp.trapper.application_trap_oid = No arquivo pom.xml da aplicação inclua a referência à compilação por aspectos para artefatos que façam uso do componente Demoiselle Monitoring, tal como indicado a seguir: <plugin> <groupid>org.codehaus.mojo</groupid> <artifactid>aspectj-maven-plugin</artifactid> <version>1.3</version> <configuration> <source>1.5</source> <target>1.5</target> <aspectlibraries> <aspectlibrary> <groupid>br.gov.component.demoiselle</groupid> <artifactid>demoiselle-monitoring</artifactid> </aspectlibrary> </aspectlibraries> </configuration> <executions> <execution> <goals> <goal>compile</goal> <goal>test-compile</goal> </goals> </execution> </executions> </plugin> 13
14 8. Crie a classe ExemploUsoTrappers conforme código fonte exibido a seguir: package br.gov.sample.demoiselle.escola.business; import br.gov.sample.demoiselle.escola.monitoring.trapper.escolasnmptrapper; import br.gov.sample.demoiselle.escola.monitoring.trapper.iescolatrapper; public class ExemploUsoTrappers { public static void main(final String[] args) { // iniciar trappers EscolaSNMPTrapper.getInstance().start(); // invocar regras de negócio com envio de traps ExemploUsoTrappers exemplo = new ExemploUsoTrappers(); exemplo.executarinformativo(); exemplo.executarcomfalha(); // finalizar trappers EscolaSNMPTrapper.getInstance().stop(); public void executarcomfalha() { try { throw new Exception("Um erro ocorreu intencionalmente"); catch (Exception e) { EscolaSNMPTrapper.getInstance().enviarFalha(e.getMessage()); public void executarinformativo() { IEscolaTrapper trapper1 = EscolaSNMPTrapper.getInstance(); trapper1.enviarmemoriaheapusada(); trapper1.enviarinfobd("db1", 500); 9. Execute a classe ExemploUsoTrappers e observe as linhas inseridas no console do Eclipse (vide imagem a seguir): 14
15 10. Abra um terminal como superusuário (i.e. root ) e inicie o servidor SNMP para captura de traps (i.e. snmptrapd) utilizando a instrução a seguir. Execute novamente a classe Java de exemplo e acompanhe a chegada das notificações e mensagens: # snmptrapd -f -Le NET-SNMP version :53: (via UDP: [ ]:55019) TRAP, SNMP v1, community public SNMPv2-SMI::enterprises Enterprise Specific Trap (2) Uptime: 0:00:00.36 SNMPv2-SMI::enterprises = Gauge32: :53: (via UDP: [ ]:38062) TRAP, SNMP v1, community public SNMPv2-SMI::enterprises Enterprise Specific Trap (15) Uptime: 0:00:00.72 SNMPv2-SMI::enterprises = STRING: "db1" SNMPv2-SMI::enterprises = Gauge32: :53: (via UDP: [ ]:46024) TRAP, SNMP v1, community public SNMPv2-SMI::enterprises Enterprise Specific Trap (5) Uptime: 0:00:00.72 SNMPv2-SMI::enterprises = STRING: "Um erro ocorreu intencionalmente" Obs: Lembre-se de configurar o arquivo /etc/snmp/snmptrapd.conf incluindo a seguinte linha que define a comunidade public para o recebimento de traps. authcommunity log,execute,net public 11. Para que o envio destes traps ocorra de forma periódica em intervalos regulares e automaticamente, é preciso de classes do tipo checker. Crie a classe EscolaChecker estendendo a superclasse GenericChecker e utilize as tal como no código a seguir: package br.gov.sample.demoiselle.escola.monitoring.checker; import java.util.concurrent.timeunit; import br.gov.component.demoiselle.monitoring.checker.genericchecker; import br.gov.component.demoiselle.monitoring.checker.scheduledcheck; import br.gov.component.demoiselle.monitoring.trapper.trapper; import br.gov.sample.demoiselle.escola.monitoring.trapper.escolasnmptrapper; public class EscolaChecker extends GenericChecker private EscolaSNMPTrapper = 30, unit = TimeUnit.SECONDS) public void checkdatabases() { int conn1 = (int) (Math.random() * 1000); int conn3 = (int) (Math.random() * 1000); this.snmptrapper.enviarinfobd("db1", conn1); this.snmptrapper.enviarinfobd("db3", = 1, unit = TimeUnit.MINUTES) public void checkusedmemory() { this.snmptrapper.enviarmemoriaheapusada(); 15
16 12. Altere o arquivo de configurações demoiselle.properties incluindo as linhas a seguir: # Custom trapper classes to be loaded on application startup component.demoiselle.monitoring.trappers = \ br.gov.sample.demoiselle.escola.monitoring.trapper.escolasnmptrapper # Custom checker classes to be loaded on application startup component.demoiselle.monitoring.checkers = \ br.gov.sample.demoiselle.escola.monitoring.checker.escolachecker 13. Publique novamente a aplicação Web no contêiner Apache Tomcat e observe o envio periódico de traps no console do Eclipse (vide imagem a seguir) e no terminal com o serviço SNMP: 16
17 Exercício 10.3 Polling Zabbix: Criação e utilização do agente 1. Para a abordagem específica utilizando Zabbix é preciso também criar uma interface inicial estendendo IMBean. Como já criamos a EscolaMonitoringMBean, podemos reutilizá-la nesta seção: package br.gov.sample.demoiselle.escola.monitoring.mbean; import br.gov.component.demoiselle.monitoring.jmx.imbean; public interface EscolaMonitoringMBean extends IMBean { long getqtdalunosmatriculados(); int getqtdturmasincluidas(); String getversaoaplicacao(); String getultimousuariologado(); int getnivellog(); void setnivellog(int nivellog); 2. Tal como na abordagem genérica com SNMP, para Zabbix também precisamos criar uma classe que implemente a interface EscolaMonitoringMBean, porém desta vez apenas a precisará ser utilizada. Ela servirá para identificar o Managed Bean no servidor JMX. O código final da classe EscolaMonitoring deve ficar assim: package br.gov.sample.demoiselle.escola.monitoring.mbean; import = "br.gov.demoiselle:name=escola") public class EscolaMonitoring implements EscolaMonitoringMBean { private long qtdalunos = 0; public long getqtdalunosmatriculados() { this.qtdalunos = (int) (Math.random() * 100) + 100; return this.qtdalunos; private int qtdturmas = 0; public int getqtdturmasincluidas() { this.qtdturmas += (int) (Math.random() * 10); return this.qtdturmas; private static final String[] USUARIOS = { "Fulano", "Sicrano", "Beltrano" ; public String getultimousuariologado() { int pos = (int) (Math.random() * USUARIOS.length); return USUARIOS[pos]; private static final String VERSAO = "2.4.1-RC2"; public String getversaoaplicacao() { return VERSAO; 17
18 private int nivellog = 1; public int getnivellog() { return this.nivellog; public void setnivellog(final int nivellog) { this.nivellog = nivellog; 3. Crie o arquivo de configurações zabbix.properties específico para serviços Zabbix contendo as linhas a seguir: # Zabbix Configuration # 1) polling / active check # enable a Zabbix agent that handles JMX queries monitoring.zabbix.agent.enabled = true # the port that the agent listens on (default 10052) monitoring.zabbix.agent.port = # the address to listen on, or '*' to listen on any available address monitoring.zabbix.agent.address = * # protocol version to use (default 1.4) monitoring.zabbix.agent.protocol = Associe o listener de Zabbix na aplicação Web incluindo as seguintes linhas no arquivo WEB- INF/web.xml: <!-- Demoiselle Monitoring Configuration (Zabbix) --> <listener> <listener-class> br.gov.component.demoiselle.monitoring.web.zabbix.zabbixlistener </listener-class> </listener> 5. Publique a aplicação Web no contêiner Apache Tomcat e observe as linhas inseridas no console do Eclipse (vide imagem a seguir): Com isso o agente Zabbix está pronto para receber requisições TCP na porta
19 6. Para conferir se o serviço está funcionando devidamente, abra um terminal e execute o comando telnet passando o servidor (localhost) e a porta (10052). Assim que a conexão TCP tiver sido estabelecida, envie a requisição no protocolo 1.4 do Zabbix digitando um texto no seguinte formato: jmx[nome-do-mbean][nome-do-atributo]. Por exemplo, para invocar o método getultimousuariologado() exposto pela interface EscolaMonitoringMBean, execute as instruções destacadas conforme exemplo: $ telnet localhost Trying Connected to localhost. Escape character is '^]'. jmx[br.gov.demoiselle:name=escola][ultimousuariologado] ZBXD#SicranoConnection closed by foreign host. 7. A string ZBXD faz parte do protocolo, observe que a resposta de cada requisição aparece a seguir (no exemplo: Sicrano ). Teste a execução com os demais atributos exportados pelo MBean. É possível ainda enviar múltiplas consultas de atributos em uma única requisição, tal como no exemplo a seguir: $ telnet localhost Trying Connected to localhost. Escape character is '^]'. jmx[br.gov.demoiselle:name=escola][qtdalunosmatriculados] jmx[br.gov.demoiselle:name=escola][qtdturmasincluidas] jmx[br.gov.demoiselle:name=escola][versaoaplicacao] jmx[br.gov.demoiselle:name=escola][ultimousuariologado] jmx[br.gov.demoiselle:name=escola][nivellog] ZBXD##116ZBXD##0ZBXD# Connection closed by foreign host RC2ZBXDBeltranoZBXD##1 19
20 Exercício 10.4 Trapping Zabbix: Criação e utilização do trapper 1. O desenvolvimento de trappers utilizando a abordagem específica com o Zabbix começa da mesma forma que com SNMP. É preciso criar a interface IEscolaTrapper estendendo a interface ITrapper e com o seguinte conteúdo: package br.gov.sample.demoiselle.escola.monitoring.trapper; import br.gov.component.demoiselle.monitoring.trapper.itrapper; public interface IEscolaTrapper extends ITrapper { void enviarfalha(string mensagem); void enviarinfobd(string base, int conexoes); void enviarmemoriaheapusada(); void enviarmensagem(string mensagem, int nivel, int valor); void enviarversaoaplicacao(); 2. Crie a classe EscolaZabbixTrapper herdando da superclasse ZabbixTrapper e implementando a interface IEscolaTrapper desenvolvida anteriormente, incluindo todos os métodos nela existentes: package br.gov.sample.demoiselle.escola.monitoring.trapper; import br.gov.component.demoiselle.monitoring.trapper.zabbix.zabbixtrapper; public class EscolaZabbixTrapper extends ZabbixTrapper implements IEscolaTrapper { 3. Inclua as para configurar o envio de traps Zabbix na classe EscolaZabbixTrapper conforme destacado no código a seguir: package br.gov.sample.demoiselle.escola.monitoring.trapper; import br.gov.component.demoiselle.monitoring.trapper.zabbix.zabbixhost; import br.gov.component.demoiselle.monitoring.trapper.zabbix.zabbixitem; import public class EscolaZabbixTrapper extends ZabbixTrapper implements IEscolaTrapper = "escola.message") public void enviarfalha(final String mensagem) = "escola.database[*]") public void enviarinfobd(final String base, final int conexoes) = "escola.memory[used]", mbeanname = "java.lang:type=memory", mbeanattribute = "HeapMemoryUsage.used") public void enviarmemoriaheapusada() { 20
21 @ZabbixItem(key = "escola.versao", mbeanname = "br.gov.demoiselle:name=escola", mbeanattribute = "VersaoAplicacao") public void enviarversaoaplicacao() { public void enviarmensagem(final String mensagem, final int nivel, final int valor) { 4. Na mesma classe, crie uma variável estática e privada para armazenar uma única instância do objeto e um método getinstance() para sempre referenciá-la (i.e. aplicação do padrão singleton): private static EscolaZabbixTrapper instance; public static synchronized EscolaZabbixTrapper getinstance() { if (instance == null) { instance = new EscolaZabbixTrapper(); return instance; 5. Adicione ao arquivo de configurações zabbix.properties existente as linhas a seguir: # 2) trapping / passive check # enable a Zabbix trapper that sends data to the server monitoring.zabbix.trapper.enabled = true # name or IP address of the machine that Zabbix runs on monitoring.zabbix.trapper.server = # the port of Zabbix on its server (default 10051) monitoring.zabbix.trapper.port = # name of the host as defined in the hosts section in Zabbix monitoring.zabbix.trapper.host = Armenia Zabbix # schedule automatic trapping of active checks monitoring.zabbix.trapper.active_checks = false # default item key to be used when sending traps monitoring.zabbix.trapper.default_key = escola.message 6. Modifique a classe ExemploUsoTrappers conforme destacado no código fonte exibido a seguir: package br.gov.sample.demoiselle.escola.business; import br.gov.sample.demoiselle.escola.monitoring.trapper.escolazabbixtrapper; import br.gov.sample.demoiselle.escola.monitoring.trapper.iescolatrapper; public class ExemploUsoTrappers { /** args */ public static void main(final String[] args) { // iniciar trappers EscolaZabbixTrapper.getInstance().start(); 21
22 // invocar regras de negócio com envio de traps ExemploUsoTrappers exemplo = new ExemploUsoTrappers(); exemplo.executarinformativo(); exemplo.executarcomfalha(); // finalizar trappers EscolaZabbixTrapper.getInstance().stop(); public void executarcomfalha() { try { throw new Exception("Um erro ocorreu intencionalmente"); catch (Exception e) { EscolaZabbixTrapper.getInstance().enviarFalha(e.getMessage()); public void executarinformativo() { IEscolaTrapper trapper2 = EscolaZabbixTrapper.getInstance(); trapper2.enviarmemoriaheapusada(); trapper2.enviarinfobd("db1", 500); 7. Execute a classe ExemploUsoTrappers e observe as linhas inseridas no console do Eclipse (vide imagem a seguir): Por enquanto ignore a exceção ConnectException levantada durante a tentativa de conexão. Para que o teste seja completamente validado é preciso ter à disposição um servidor Zabbix configurado com o host e indicadores definidos. Eis o resultado de uma execução com sucesso: 22
23 8. Para que o envio destes traps ao servidor Zabbix ocorra de forma periódica em intervalos regulares, precisamos dos checkers. Podemos reutilizar a classe EscolaChecker já existente (a qual estende a superclasse GenericChecker e utiliza as Ela será um checker capaz de enviar requisições do tipo trap para servidores SNMP e Zabbix. Modifique-a conforme destacado no código a seguir: package br.gov.sample.demoiselle.escola.monitoring.checker; import java.util.concurrent.timeunit; import br.gov.component.demoiselle.monitoring.checker.genericchecker; import br.gov.component.demoiselle.monitoring.checker.scheduledcheck; import br.gov.component.demoiselle.monitoring.trapper.trapper; import br.gov.sample.demoiselle.escola.monitoring.trapper.escolasnmptrapper; import br.gov.sample.demoiselle.escola.monitoring.trapper.escolazabbixtrapper; public class EscolaChecker extends GenericChecker private EscolaSNMPTrapper private EscolaZabbixTrapper = 30, unit = TimeUnit.SECONDS) public void checkdatabases() { int conn1 = (int) (Math.random() * 1000); int conn3 = (int) (Math.random() * 1000); // snmp this.snmptrapper.enviarinfobd("db1", conn1); this.snmptrapper.enviarinfobd("db3", conn3); // zabbix this.zabbixtrapper.enviarinfobd("db1", conn1); this.zabbixtrapper.enviarinfobd("db3", = 1, unit = TimeUnit.MINUTES) public void checkusedmemory() { // snmp this.snmptrapper.enviarmemoriaheapusada(); // zabbix this.zabbixtrapper.enviarmemoriaheapusada(); 9. Altere o arquivo de configurações demoiselle.properties incluindo as linhas a seguir: # JMX MBeans to be loaded on application startup component.demoiselle.monitoring.jmx.mbeans = \ br.gov.sample.demoiselle.escola.monitoring.mbean.escolamonitoring # Custom trapper classes to be loaded on application startup component.demoiselle.monitoring.trappers = \ br.gov.sample.demoiselle.escola.monitoring.trapper.escolasnmptrapper, \ br.gov.sample.demoiselle.escola.monitoring.trapper.escolazabbixtrapper # Custom checker classes to be loaded on application startup 23
24 component.demoiselle.monitoring.checkers = \ br.gov.sample.demoiselle.escola.monitoring.checker.escolachecker 10. Publique novamente a aplicação Web no contêiner Apache Tomcat e observe o envio periódico de traps para os servidores SNMP e Zabbix no console do Eclipse (vide LOG a seguir): 09/06/ :29:43 org.apache.catalina.core.standardengine start INFO: Starting Servlet Engine: Apache Tomcat/ INFO [AbstractMonitoringListener] Initializing servlet context DEBUG [MBeanManager] Creating and registering pre-configured MBeans INFO [MBeanHelper] Registering MBean [br.gov.demoiselle:name=escola]: br.gov.sample.demoiselle.escola.monitoring.mbean.escolamonitoring@ab7165 INFO [ZabbixAgent] Creating Zabbix Agent INFO [ZabbixTrapper] Creating Zabbix Trapper DEBUG [ZabbixTrapper] Initializing trapper on server ' :10051' for host 'Armenia Zabbix' INFO [ZabbixAgent] Starting up daemon [ :10052] DEBUG [ZabbixTrapper] Zabbix Trapper is starting DEBUG [ZabbixAgent] Instantiating pool of execution handlers DEBUG [AbstractMonitoringListener] Creating custom trapper [br.gov.sample.demoiselle.escola.monitoring.trapper.escolasnmptrapper] INFO [SNMPTrapper] Creating SNMP Trapper DEBUG [SNMPTrapper] Initializing target [CommunityTarget[address= /162, version=0, timeout=1000, retries=0, community=public]] DEBUG [SNMPTrapper] Setting enterprise OID to [ ] DEBUG [SNMPTrapper] SNMP Trapper is starting DEBUG [AbstractMonitoringListener] Creating custom trapper [br.gov.sample.demoiselle.escola.monitoring.trapper.escolazabbixtrapper] INFO [ZabbixTrapper] Creating Zabbix Trapper DEBUG [ZabbixTrapper] Initializing trapper on server ' :10051' for host 'Armenia Zabbix' DEBUG [ZabbixTrapper] Zabbix Trapper is starting DEBUG [AbstractMonitoringListener] Creating custom checker [br.gov.sample.demoiselle.escola.monitoring.checker.escolachecker] INFO [GenericChecker] Creating Checker DEBUG [GenericChecker] Injection on field snmptrapper INFO [SNMPTrapper] Creating SNMP Trapper DEBUG [SNMPTrapper] Initializing target [CommunityTarget[address= /162, version=0, timeout=1000, retries=0, community=public]] DEBUG [SNMPTrapper] Setting enterprise OID to [ ] DEBUG [GenericChecker] Injection on field zabbixtrapper INFO [ZabbixTrapper] Creating Zabbix Trapper DEBUG [ZabbixTrapper] Initializing trapper on server ' :10051' for host 'Armenia Zabbix' DEBUG [GenericChecker] Scheduling check for method 'checkdatabases()' each 30 SECONDS DEBUG [GenericChecker] Scheduling check for method 'checkusedmemory()' each 1 MINUTES DEBUG [GenericChecker] Invoking scheduled method 'checkdatabases()' for checker [br.gov.component.demoiselle.monitoring.checker.genericchecker$scheduledtask@8b567c] DEBUG [SNMPTrapper] SNMP Trapper is starting 09/06/ :29:43 org.apache.coyote.http11.http11protocol start INFO: Starting Coyote HTTP/1.1 on http-8080 DEBUG [ZabbixTrapper] Zabbix Trapper is starting DEBUG [Sender] Sending message: <req><host>qxjtzw5pysbaywjiaxg=</host><key>zxnjb2xhlmrhdgfiyxnlw2rimv0=</key><data>mtk=</dat a></req> DEBUG [GenericChecker] Invoking scheduled method 'checkusedmemory()' for checker [br.gov.component.demoiselle.monitoring.checker.genericchecker$scheduledtask@ ] DEBUG [MBeanHelper] JMX query: [java.lang:type=memory][heapmemoryusage.used] DEBUG [MBeanHelper] Found MBean class sun.management.memoryimpl DEBUG [Sender] Received response: OK 24
25 Exercício 10.5 Trapping Default e Appenders Log4j: SNMP e Zabbix 1. Além dos trappers customizados para a aplicação, é possível utilizar trappers chamados padrões em ambas as abordagens SNMP e Zabbix. Para o serviço SNMP é considerada a OID proveniente da linha seguinte no snmp.properties: # default application trap OID for sending traps monitoring.snmp.trapper.application_trap_oid = E para o serviço Zabbix a chave padrão é carregada a partir desta linha no zabbix.properties: # default item key to be used when sending traps monitoring.zabbix.trapper.default_key = escola.message 2. A fim de testar essa funcionalidade, crie a classe ExemploTrappersPadroes com o código abaixo: package br.gov.sample.demoiselle.escola.business; import br.gov.component.demoiselle.monitoring.trapper.snmp.snmptrapper; import br.gov.component.demoiselle.monitoring.trapper.zabbix.zabbixtrapper; public class ExemploTrappersPadroes { /** args */ public static void main(final String[] args) { // iniciar trappers SNMPTrapper.getInstance().start(); ZabbixTrapper.getInstance().start(); // invocar códigos com notificações e falhas intencionais ExemploTrappersPadroes exemplo = new ExemploTrappersPadroes(); exemplo.enviarnotificacao(); exemplo.enviarexcecao(); // finalizar trappers SNMPTrapper.getInstance().stop(); ZabbixTrapper.getInstance().stop(); public void enviarnotificacao() { SNMPTrapper.getInstance().send("Oi, servidor SNMP"); ZabbixTrapper.getInstance().send("Oi, servidor Zabbix"); public void enviarexcecao() { try { throw new Exception("Ocorreu um erro intencionalmente"); catch (Exception e) { SNMPTrapper.getInstance().send(e.getMessage()); ZabbixTrapper.getInstance().send(e.getMessage()); 25
26 3. Execute a classe anterior e acompanhe as linhas inseridas na LOG na visão Console do Eclipse (detalhes do envio SNMP e Zabbix em destaque): INFO [SNMPTrapper] Creating SNMP Trapper DEBUG [SNMPTrapper] Initializing target [CommunityTarget[address= /162, version=0, timeout=1000, retries=0, community=public]] DEBUG [SNMPTrapper] Setting enterprise OID to [ ] DEBUG [SNMPTrapper] SNMP Trapper is starting INFO [ZabbixTrapper] Creating Zabbix Trapper DEBUG [ZabbixTrapper] Initializing trapper on server ' :10051' for host 'Armenia Zabbix' DEBUG [ZabbixTrapper] Zabbix Trapper is starting DEBUG [SNMPTrapper] SNMP Trapper is stopping DEBUG [Sender] Sending message: <req><host>qxjtzw5pysbaywjiaxg=</host><key>zxnjb2xhlm1lc3nhz2u=</key><data>t2ksihnlcnzpzg9yi FphYmJpeA==</data></req> DEBUG [Sender] Received response: OK DEBUG [Sender] Message sent in 24 ms DEBUG [Sender] Sending message: <req><host>qxjtzw5pysbaywjiaxg=</host><key>zxnjb2xhlm1lc3nhz2u=</key><data>t2nvcnjldsb1bsblc njvigludgvuy2lvbmfsbwvudgu=</data></req> DEBUG [Sender] Received response: OK DEBUG [Sender] Message sent in 13 ms DEBUG [TrapSender] Sending PDU: V1TRAP[reqestID=0,timestamp=0:00:00.44,enterprise= ,genericTrap=6,specificTr ap=1, VBS[ = Oi, servidor SNMP]] DEBUG [TrapSender] Message sent in 44 ms DEBUG [TrapSender] Sending PDU: V1TRAP[reqestID=0,timestamp=0:00:00.46,enterprise= ,genericTrap=6,specificTr ap=1, VBS[ = Ocorreu um erro intencionalmente]] DEBUG [TrapSender] Message sent in 1 ms DEBUG [ZabbixTrapper] Zabbix Trapper is stopping Na LOG do serviço SNMP também é possível observar a chegada das requisições provenientes do código Java: # snmptrapd -f -Le NET-SNMP version :05: (via UDP: [ ]:35369) TRAP, SNMP v1, community public SNMPv2-SMI::enterprises Enterprise Specific Trap (1) Uptime: 0:00:00.44 SNMPv2-SMI::enterprises = STRING: "Oi, servidor SNMP" :05: (via UDP: [ ]:49497) TRAP, SNMP v1, community public SNMPv2-SMI::enterprises Enterprise Specific Trap (1) Uptime: 0:00:00.46 SNMPv2-SMI::enterprises = STRING: "Ocorreu um erro intencionalmente" Note que em uma aplicação Java Web não é preciso inicializar e finalizar os trappers como indicado na classe ExemploTrappersPadroes nas invocações dos métodos start() e stop(). Isso porque as classes SNMPTrapper e ZabbixTrapper devem ser instanciadas automaticamente pelos seus respectivos listeners, SNMPListener e ZabbixListener, configurados no arquivo WEB- INF/web.xml. Uma desvantagem em se utilizar trappers padrões é que as mensagens ou notificações serão sempre enviadas para o mesmo OID e utilizando uma única variável do tipo string, no caso de SNMP, e para a mesma chave de indicador, na abordagem Zabbix. A parametrização, se necessária, deve ser feita no conteúdo da mensagem enviada. 26
27 4. O componente Demoiselle Monitoring fornece uma outra maneira de se enviar notificações e mensagens a servidores de monitoração: através da Log4j, uma API destinada a criar logs da aplicação. A fim de testar essa funcionalidade, primeiro crie a classe ExemploLogAppender conforme exemplo de código a seguir: package br.gov.sample.demoiselle.escola.business; import org.apache.log4j.logger; public class ExemploLogAppender { private static final Logger log = Logger.getLogger(ExemploLogAppender.class); /** args */ public static void main(final String[] args) { log.debug("debug Message"); log.info("info Message"); log.warn("warning Message"); log.error("error Message"); 5. Para a abordagem com SNMP é disponibilizada a classe SNMPAppender para a Log4j, a qual possui configurações específicas para este servidor de monitoração: OID da empresa, tipo genérico e específico do trap e OID do trap. A fim de testar este appender, modifique o arquivo log4j.properties incluindo as linhas a seguir: # SNMP Log4J Appender log4j.appender.snmp=br.gov.component.demoiselle.monitoring.logger.snmp.snmpappender log4j.appender.snmp.layout=org.apache.log4j.patternlayout log4j.appender.snmp.layout.conversionpattern=[%d{mmm dd HH:mm:ss] %-5p (%F:%L) - %m%n log4j.appender.snmp.threshold=warn log4j.appender.snmp.enterpriseoid= log4j.appender.snmp.generictraptype=6 log4j.appender.snmp.specifictraptype=15 log4j.appender.snmp.applicationtrapoid= # Trapping Appenders test log4j.logger.br.gov.sample.demoiselle.escola=debug, snmp Com essas configurações estamos definindo que as classes pertencentes ao pacote específico br.gov.sample.demoiselle.escola passarão a utilizar o logger snmp, o qual direciona os eventos recebidos via Log4j para traps ao servidor SNMP. Além disso, apenas eventos a partir de um certo limiar (threshold) serão efetivamente enviados (neste exemplo, do nível WARN em diante). 27
28 6. Execute a classe ExemploLogAppender e acompanhe no servidor SNMP os traps recebidos (vide LOG a seguir). Note que apenas as mensagens com os níveis de severidade WARN e ERROR foram enviadas: # snmptrapd -f -Le NET-SNMP version :33: (via UDP: [ ]:59408) TRAP, SNMP v1, community public SNMPv2-SMI::enterprises Enterprise Specific Trap (15) Uptime: 0:00:00.41 SNMPv2-SMI::enterprises = STRING: "[Jun 10 11:33:06] WARN (ExemploLogAppender.java:44) - Warning Message " :33: (via UDP: [ ]:56888) TRAP, SNMP v1, community public SNMPv2-SMI::enterprises Enterprise Specific Trap (15) Uptime: 0:00:00.43 SNMPv2-SMI::enterprises = STRING: "[Jun 10 11:33:06] ERROR (ExemploLogAppender.java:45) - Error Message " 7. Agora veremos como fazer o mesmo para a solução específica com o Zabbix. Neste caso, um appender para a Log4j também é fornecido, desta vez pela classe ZabbixAppender. Sua configuração é bem mais simples, bastando fornecer a chave (key) do indicador (item) a ser usado. Para testar, modifique o arquivo log4j.properties incluindo e modificando as seguintes linhas: # Zabbix Log4J Appender log4j.appender.zabbix=br.gov.component.demoiselle.monitoring.logger.zabbix.zabbixappender log4j.appender.zabbix.layout=org.apache.log4j.patternlayout log4j.appender.zabbix.layout.conversionpattern=[%d{mmm dd HH:mm:ss] %-5p (%F:%L) - %m%n log4j.appender.zabbix.threshold=error log4j.appender.zabbix.key=escola[logger] # Trapping Appenders test log4j.logger.br.gov.sample.demoiselle.whazup=debug, zabbix #log4j.logger.br.gov.sample.demoiselle.whazup=debug, snmp Nesta configuração também é definido um limiar (threshold) para o envio das mensagens ao servidor Zabbix. Para este exemplo, apenas eventos com severidade ERROR serão repassados ao Zabbix na forma de traps. 8. Execute novamente a classe ExemploLogAppender e acompanhe a LOG de execuções na visão Console do Eclipse: INFO [ZabbixTrapper] Creating Zabbix Trapper DEBUG [ZabbixTrapper] Initializing trapper on server ' :10051' for host 'Armenia Zabbix' DEBUG [ZabbixTrapper] Zabbix Trapper is starting DEBUG [ExemploLogAppender] Debug Message INFO [ExemploLogAppender] Info Message WARN [ExemploLogAppender] Warning Message ERROR [ExemploLogAppender] Error Message DEBUG [Sender] Sending message: <req><host>qxjtzw5pysbaywjiaxg=</host><key>zxnjb2xhw0xvz2dlcl0=</key><data>w0p1biaxmcaxmto1n jowof0grvjst1igkev4zw1wbg9mb2dbchblbmrlci5qyxzhojq1ksatievycm9yie1lc3nhz2uk</data></req> FIM 28
Desenvolvimento Web com Framework Demoiselle versão 1.1
Desenvolvimento Web com Framework Demoiselle versão 1.1 Módulo 10: Monitoração de Ambientes Autor: Rodrigo Hjort SERPRO / Coordenação Estratégica de Tecnologia / Curitiba www.frameworkdemoiselle.org.br
LOGGING DE EVENTOS COM LOG4J
LOGGING DE EVENTOS COM LOG4J por Luiz Gustavo Stábile de Souza O que é logging? Fazer o logging de uma aplicação é uma das possíveis maneiras de debugá-la, registrando em algum meio (arquivo, enviando
Universidade Federal do Rio Grande do Norte
Universidade Federal do Rio Grande do Norte Redes de Computadores - Camada de Aplicação Curso de Engenharia de Software Prof. Marcos Cesar Madruga/Thiago P. da Silva Material basedado em [Kurose&Ross 2009]
Hoje em dia é muito comum utilizar uma API de logging de mensagens como o Log4j para indicar os comportamentos de uma aplicação.
Introdução Hoje em dia é muito comum utilizar uma API de logging de mensagens como o Log4j para indicar os comportamentos de uma aplicação. O Log4j é um é um projeto open source distribuído pela Apache
Redes de Computadores II
Redes de Computadores II Slide 1 Gerenciamento de Redes Gerenciamento de redes inclui o fornecimento, a integração e a coordenação de hardware, software e elementos humanos para monitorar, testar, configurar,
ANDROID APPLICATION PROJECT
Criando um programa Abrindo o programa Eclipse, clique na opção [FILE], depois em [NEW], selecione a opção [PROJECT], uma janela de opção do tipo de projeto irá se abrir, escolha [ANDROID] logo depois
Parte I. Demoiselle Mail
Parte I. Demoiselle Mail Para o envio e recebimento de e-s em aplicativos Java, a solução mais natural é usar a API JavaMail [http:// www.oracle.com/technetwork/java/java/index.html]. Ela provê um framework
MANUAL DO USUÁRIO DE REDE
MANUAL DO USUÁRIO DE REDE Armazenar registro de impressão na rede Versão 0 BRA-POR Definições de observações Utilizamos o seguinte ícone neste Manual do Usuário: Observações indicam como você deve reagir
Prática em Laboratório N.01 Criando um Serviço Web via Console
Prática em Laboratório N.01 Criando um Serviço Web via Console O objetivo criar um serviço Web via console usando apenas um editor de texto. Obtenha os arquivos da Prática N.01 Você deve recuperar os arquivos
Para iniciar um agente SNMP, usamos o comando snmpd. Por padrão, aceita requisições na porta 161 (UDP).
EN3610 Gerenciamento e interoperabilidade de redes Prof. João Henrique Kleinschmidt Prática SNMP Net-SNMP (http://www.net-snmp.org) é um conjunto de aplicações usado para implementar SNMPv1, SNMPv2 e SNMPv3.
Desenvolvimento Web com Framework Demoiselle versão 1.0
Desenvolvimento Web com Framework Demoiselle versão 1.0 Módulo 07: Outros Componentes Autor: Rodrigo Hjort Serpro / Coordenação Estratégica de Tecnologia / Curitiba www.frameworkdemoiselle.org.br Modificado
Manual de Instalação e Configuração MySQL
Manual de Instalação e Configuração MySQL Data alteração: 19/07/11 Pré Requisitos: 1. Baixar os seguintes arquivos no através do link http://ip.sysfar.com.br/install/ mysql-essential-5.1.46-win32.msi mysql-gui-tools-5.0-r17-win32.msi
LABORATÓRIO 3 (parte 2)
FACULDADE PITÁGORAS Tecnólogo em Redes de Computadores Desempenho de Redes Prof. Ulisses Cotta Cavalca LABORATÓRIO 3 (parte 2) OBJETIVOS Verificar e manipular ferramentas de desempenho
ADMINISTRAÇÃO DE SISTEMAS OPERACIONAIS
ADMINISTRAÇÃO DE SISTEMAS OPERACIONAIS FUNDAMENTOS DE Visão geral sobre o Active Directory Um diretório é uma estrutura hierárquica que armazena informações sobre objetos na rede. Um serviço de diretório,
ESET Remote Administrator ESET EndPoint Solutions ESET Remote Adminstrator Workgroup Script de Logon
AGENDA 1. Download dos pacotes de instalação ESET Remote Administrator 2. Download dos pacotes de instalação ESET EndPoint Solutions 3. Procedimento de instalação e configuração básica do ESET Remote Adminstrator
Acessando um Banco de Dados
Acessando um Banco de Dados Introdução Agora que você já está craque em JSP e já instalou seu servidor, vamos direto para a parte prática! Neste tutorial vamos aprender a acessar um banco de dados. Para
Manual de Instalação PIMSConnector em Windows
Manual de Instalação PIMSConnector em Windows Julho/2015 Sumário 1. Contexto de negócio (Introdução)... 3 2. Pré-requisitos instalação/implantação/utilização... 4 3. JBOSS... 6 3.1. Instalação... 6 3.2.
INSTALANDO E CONFIGURANDO O ACTIVE DIRECTORY NO WINDOWS SERVER 2008
INSTALANDO E CONFIGURANDO O ACTIVE DIRECTORY NO WINDOWS SERVER 2008 Objetivo Esse artigo tem como objetivo demonstrar como instalar e configurar o Active Directory no Windows Server 2008. Será também apresentado
Criação de um novo projeto no Eclipse utilizando Maven
1. Faça o download da versão mais atual do Eclipse IDE for Java EE Developers em https://www.eclipse.org/downloads/. 2. No Eclipse, crie um novo projeto Maven, em File >> New >> Maven Project 3. Marque
Aula 03 - Projeto Java Web
Aula 03 - Projeto Java Web Para criação de um projeto java web, vá em File/New. Escolha o projeto: Em seguida, na caixa Categorias selecione Java Web. Feito isso, na caixa à direita selecione Aplicação
Para iniciar um agente SNMP, usamos o comando snmpd. Por padrão, aceita requisições na porta 161 (UDP).
EN3610 Gerenciamento e interoperabilidade de redes Prof. João Henrique Kleinschmidt Prática SNMP 1 MIBs RMON No Linux os arquivos MIB são armazenados no diretório /usr/share/snmp/mibs. Cada arquivo MIB
Criação de Servlets Name Directory Build WAR JSP/Servlet frameworks Launch URL Package Class name Generate header comments
Criação de Servlets 1. Crie um novo projeto através do Menu File New Project. 2. Acesse o Menu File New. 3. Na janela Object Gallery que surgirá, selecione a guia Web. 4. Escolha o ícone que corresponde
LABORATÓRIO 3 (parte 1)
FACULDADE PITÁGORAS Tecnólogo em Redes de Computadores Desempenho de Redes Prof. Ulisses Cotta Cavalca LABORATÓRIO 3 (parte 1) OBJETIVOS Verificar e manipular ferramentas de desempenho
MDaemon GroupWare. Versão 1 Manual do Usuário. plugin para o Microsoft Outlook. Trabalhe em Equipe Usando o Outlook e o MDaemon
MDaemon GroupWare plugin para o Microsoft Outlook Trabalhe em Equipe Usando o Outlook e o MDaemon Versão 1 Manual do Usuário MDaemon GroupWare Plugin for Microsoft Outlook Conteúdo 2003 Alt-N Technologies.
Java 2 Standard Edition Como criar classes e objetos
Java 2 Standard Edition Como criar classes e objetos Helder da Rocha www.argonavis.com.br 1 Assuntos abordados Este módulo explora detalhes da construção de classes e objetos Construtores Implicações da
FTP Protocolo de Transferência de Arquivos
FTP Protocolo de Transferência de Arquivos IFSC UNIDADE DE SÃO JOSÉ CURSO TÉCNICO SUBSEQUENTE DE TELECOMUNICAÇÕES! Prof. Tomás Grimm FTP - Protocolo O protocolo FTP é o serviço padrão da Internet para
GUIA PRÁTICO DE INSTALAÇÃO
GUIA PRÁTICO DE INSTALAÇÃO 1 1. PROCEDIMENTOS ANTES DA INSTALAÇÃO SIGEP WEB - Gerenciador de Postagens dos Correios 1.1. Solicitar Senha para Fechamento de PLP Solicitar ao seu consultor comercial a senha
GUIA INTEGRA SERVICES E STATUS MONITOR
GUIA INTEGRA SERVICES E STATUS MONITOR 1 - Integra Services Atenção: o Integra Services está disponível a partir da versão 2.0 do software Urano Integra. O Integra Services é um aplicativo que faz parte
Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares
Especialização em desenvolvimento para web com interfaces ricas Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares Objetivos Conceito de exceções Tratar exceções pelo uso de try, catch e
Tutorial RMI (Remote Method Invocation) por Alabê Duarte
Tutorial RMI (Remote Method Invocation) por Alabê Duarte Este tutorial explica basicamente como se implementa a API chamada RMI (Remote Method Invocation). O RMI nada mais é que a Invocação de Métodos
INSTALANDO SQL SERVER 2008
VERSÃO 2 INSTALANDO SQL SERVER 2008 Pré-requisitos para instalação do SQL SERVER 2008 Antes de iniciar o instalador do SQL SERVER 2008 é necessário instalar os seguintes componentes: Microsoft Windows
Nesta sessão introduziremos os conceitos básicos do Cacti, e como fazer para instalá-lo em seu computador.
Cacti é uma ferramenta gráfica de gerenciamento de dados de rede que disponibiliza a seus usuários uma interface intuitiva e bem agradável de se usar, sendo acessível a qualquer tipo de usuários. Este
Manual de Instalação PIMSConnector em Linux
Manual de Instalação PIMSConnector em Linux Julho/2015 Sumário 1. Contexto de negócio (Introdução)... 3 2. Pré-requisitos instalação/implantação/utilização... 4 3. JBOSS... 6 3.1. Instalação... 6 3.2.
Manual de Instalação do Servidor Orion Phoenix Versão 1.0 - Novembro/2010
Manual de Instalação do Servidor Orion Phoenix Versão 1.0 - Novembro/2010 Manual de Instalação do Sistema Orion Phoenix 1.0 - Novembro/2010 Página 1 SUMÁRIO 1. INTRODUÇÃO...3 2. VISÃO GERAL...3 3. PROCEDIMENTOS
Revisão: Introdução. - Integração com o AutoManager; 1 Atualização de versão do banco de dados PostgreSQL
Urano Indústria de Balanças e Equipamentos Eletrônicos Ltda. Rua Irmão Pedro 709 Vila Rosa Canoas RS Fone: (51) 3462.8700 Fax: (51) 3477.4441 Características do Software Urano Integra 2.2 Data: 12/05/2014
EAI Manual do Administrador
EAI Manual do Administrador 1 Definição de Host Application O que é um Host Application? Significa Aplicativo Hospedeiro, é o nome dado ao ambiente EAI que estará executando no seu computador ou em um
JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.
JDBC CRIANDO O BANCO DE DADOS: Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos. CRIANDO O PROJETO JAVA PARA DESKTOP: Crie um projeto Java chamado Prograd Crie um pacote chamado
Tutorial Módulo 06 - Segurança
LABORATÓRIO 06 Segurança Este laboratório tem por objetivo exercitar o uso do componente de segurança do Framework e uso da especificação JAAS. Objetivos: Uso do Login Module do Componente de Segurança
Guia do Demoiselle Audit Demoiselle Audit Paulo Gladson Ximenes Pinheiro Clóvis Lemes Ferreira Júnior
Guia do Demoiselle Audit Demoiselle Audit Paulo Gladson Ximenes Pinheiro Clóvis Lemes Ferreira Júnior Demoiselle Audit... v 1. Auditor... 1 1.1. Auditor de Persistência... 1 1.2. Auditor de Visão... 1
Nesse artigo abordaremos os principais aspectos de instalação e uso do NTOP no Fedora Core 4.
Diego M. Rodrigues ([email protected]) O NTOP é um programa muito simples de ser instalado e não requer quase nenhuma configuração. Ele é capaz de gerar excelentes gráficos de monitoramento das
Escrito por Daniel Donda Qui, 06 de Novembro de 2008 18:21 - Última atualização Qui, 06 de Novembro de 2008 18:47
Conhecendo o Event Viewer Muito importante na manutenção e monitoramento de servidores o Event Viewer é uma ferramenta que gera logs de eventos tudo o que ocorre no servidor. Como o sistema nunca para
INTRODUÇÃO À TECNOLOGIA SERVLETS
PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB INTRODUÇÃO À TECNOLOGIA SERVLETS Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o conceito aplicações orientada a serviços via web Apresentar o papel dos contentores
PROTÓTIPO TIPO DE UM SOFTWARE AGENTE SNMP PARA REDE WINDOWS
UNIVERSIDADE REGIONAL DE BLUMENAU BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO PROTÓTIPO TIPO DE UM SOFTWARE AGENTE SNMP PARA REDE WINDOWS Acadêmico: Luciano Waltrick Goeten Orientador: Prof. Sérgio Stringari
Processo de Envio de email
Processo de Envio de email Introdução O envio de documentos de forma eletrônica vem sendo muito utilizado, assim o envio de arquivos, relatórios, avisos, informações é realizado via e-mail. O sistema disponibiliza
Módulo 5 JPATransaction Camadas Turma Turma TurmaBC .business @BusinessController TurmaBC TurmaBC TurmaBC
Módulo 5 No módulo anterior adaptamos nosso projeto para persistir as informações no banco de dados utilizando as facilidades da extensão demoiselle-jpa. Experimentamos o controle transacional do Framework
Instalação do Portal PMS Ambiente : Controladoria Data da publicação : 18/11/09 Países : Brasil Autor Wilker Valladares
Instalação do Portal PMS Ambiente : Controladoria Data da publicação : 18/11/09 Países : Brasil Autor Wilker Valladares O objetivo deste documento é capacitar o analista a instalar e configurar o Portal
Invocação de Métodos Remotos
Invocação de Métodos Remotos Java RMI (Remote Method Invocation) Tópicos Tecnologia RMI Introdução Modelo de camadas do RMI Arquitetura Fluxo de operação do RMI Passos para implementação Estudo de caso
Application Notes: SNMP. Configuração do protocolo SNMP
Application Notes: SNMP Configuração do protocolo SNMP Application Notes: SNMP Configuração do protocolo SNMP. Data 10/05/2010, Revisão 1.1 Introdução Desenvolvimento Configurando o Protocolo SNMP Traps
NetBeans. Conhecendo um pouco da IDE
NetBeans Conhecendo um pouco da IDE Professor: Edwar Saliba Júnior Sumário Apresentação:...1 Criando Um Novo Projeto de Software:...1 Depurando Um Código-fonte:...4 Entendendo o Código-fonte:...7 Dica
Software de gerenciamento do sistema Intel. Guia do usuário do Pacote de gerenciamento do servidor modular Intel
Software de gerenciamento do sistema Intel do servidor modular Intel Declarações de Caráter Legal AS INFORMAÇÕES CONTIDAS NESTE DOCUMENTO SÃO RELACIONADAS AOS PRODUTOS INTEL, PARA FINS DE SUPORTE ÀS PLACAS
2 Orientação a objetos na prática
2 Orientação a objetos na prática Aula 04 Sumário Capítulo 1 Introdução e conceitos básicos 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2 Objetos 1.4.3 Métodos e atributos 1.4.4 Encapsulamento 1.4.5 Métodos
Persistência de Classes em Tabelas de Banco de Dados
UTFPR DAELN - Disciplina de Fundamentos de Programação II ( IF62C ). 1 Persistência de Classes em Tabelas de Banco de Dados 1) Introdução! Em algumas situações, pode ser necessário preservar os objetos
Como utilizar a central de gerenciamento VPN.
Como utilizar a central de gerenciamento VPN. Construir conexões VPN entre vários roteadores pode ser uma tarefa demorada. Em cada um dos roteadores há diversos parâmetros que precisam ser sincronizados,
1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF)
Sessão Prática II JPA entities e unidades de persistência 1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF) a) Criar um Web Application (JPAsecond) como anteriormente:
Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL
Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Prof. MSc. Hugo Souza Iniciando nossas aulas sobre
Prática em Laboratório N.02 Criando um serviço Web via NetBeans
Prática em Laboratório N.02 Criando um serviço Web via NetBeans O objetivo deste exercício é criar um projeto apropriado para desenvolver um contêiner que você resolva utilizar. Uma vez criado o projeto,
Objetivo. Este documento tem como objetivo demonstrar o conceito, o processo de instalação e o funcionamento do SITEF (Tef dedicado).
Sitef - Instalação Objetivo Este documento tem como objetivo demonstrar o conceito, o processo de instalação e o funcionamento do SITEF (Tef dedicado). O que é Sitef? O SiTef (ou tef dedicado) é um conjunto
Para funcionamento do Netz, alguns programas devem ser instalados e alguns procedimentos devem ser seguidos. São eles:
Instalação do Netz Para funcionamento do Netz, alguns programas devem ser instalados e alguns procedimentos devem ser seguidos. São eles: Instalação do Java SE 6, que pode ser instalado através da JDK.
USANDO O ROUNDCUBE WEBMAIL
USANDO O ROUNDCUBE WEBMAIL ATENÇÃO! Para utilizar este tutorial não se esqueça: Onde estiver escrito seusite.com.br substitua pelo ENDEREÇO do seu site (domínio). Ex.: Se o endereço do seu site é casadecarnessilva.net
MANUAL DE INSTALAÇÃO E CONFIGURAÇÃO. Motor Periférico Versão 8.0
MANUAL DE INSTALAÇÃO E CONFIGURAÇÃO Motor Periférico Versão 8.0 1. Apresentação... 3 2. Instalação do Java... 3 2.1 Download e Instalação... 3 2.2 Verificar Instalação... 3 3. Download do Motor Periférico...
Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.
Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2012 Edição 7 Listando e Gravando Listando itens em ComboBox e gravando os dados no
Noções de. Microsoft SQL Server. Microsoft SQL Server
Noções de 1 Considerações Iniciais Basicamente existem dois tipos de usuários do SQL Server: Implementadores Administradores 2 1 Implementadores Utilizam o SQL Server para criar e alterar base de dados
Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva
1. O que são Serviços Web (Web Services)? Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva A ideia central dos Web Services parte da antiga necessidade
Configuração de Cliente de Web Service HTTPS
Configuração de Cliente de Web Service HTTPS Envio de registros civis ao SIRC através de Central de Registros Civis Configurando_Cliente_de_Web_Service_HTTPS.odt 1 de 20 Histórico de Revisões Data Versão
e-mails editores de e-mails Como configurar contas de nos principais Como configurar contas de e-mails nos principais editores de e-mails
Como configurar contas de e-mails nos principais editores de e-mails Podemos acessar nossos e-mails pelo webmail, que é um endereço na internet. Os domínios que hospedam com a W3alpha, acessam os e-mails
CONFIGURAÇÃO DO SOFTFONE EYEBEAM INSTALAÇÃO CONFIGURANDO A LICENÇA TESTE DE REPRODUÇÃO E GRAVAÇÃO CONFIGURAÇÃO DO SIP SETTINGS
CONFIGURAÇÃO DO SOFTFONE EYEBEAM INSTALAÇÃO CONFIGURANDO A LICENÇA TESTE DE REPRODUÇÃO E GRAVAÇÃO CONFIGURAÇÃO DO SIP SETTINGS CONFIGURAÇÃO DE CODEC G729 AJUSTE DE VOLUME ONDE CONSEGUIR O SOFTFONE 1 INSTALAÇÃO
SMTP, POP, IMAP, DHCP e SNMP. Professor Leonardo Larback
SMTP, POP, IMAP, DHCP e SNMP Professor Leonardo Larback Protocolo SMTP O SMTP (Simple Mail Transfer Protocol) é utilizado no sistema de correio eletrônico da Internet. Utiliza o protocolo TCP na camada
Criar um novo projeto
Criar um novo projeto Esse passo-a-passo tem o intuito de auxiliar na criação de um novo projeto Java. Você verá os passos de criação utilizando os IDEs Eclipse e NetBeans. Eclipse 1. Inicie o Eclipse.
Projeto Amadeus. Guia de Instalação 00.95.00 Windows
Projeto Amadeus Guia de Instalação 00.95.00 Windows Agosto 2010 Sumário 1. Introdução...3 2. Pré-Requisitos...4 2.1 Máquina Virtual Java...4 2.2 Apache TomCat 6.0.18...4 2.3 PostgreSQL 8.3...5 3. Instalando
Manual de Instalação do Agente Citsmart
16/08/2013 Manual de Instalação do Agente Citsmart Fornece orientações necessárias para efetuar a instalação do Agente Citsmart. Versão 1.9 21/11/2014 Visão Resumida Data Criação 21/11/2014 Versão Documento
SPARK - Comunicador Instantâneo MANUAL DO USUÁRIO
SPARK - Comunicador Instantâneo MANUAL DO USUÁRIO BOA VISTA/RR NOVEMBRO DE 2011 Este manual tem por finalidade esclarecer o funcionamento do SPARK ao servidor interessado em usar este comunicador instantâneo.
Google Drive. Passos. Configurando o Google Drive
Google Drive um sistema de armazenagem de arquivos ligado à sua conta Google e acessível via Internet, desta forma você pode acessar seus arquivos a partir de qualquer dispositivo que tenha acesso à Internet.
Programação para Internet Orientada a Objetos com PHP & MySQL Instalando e configurando um ambiente de ferramentas PHP e MySQL. Prof. MSc.
Programação para Internet Orientada a Objetos com PHP & MySQL Instalando e configurando um ambiente de ferramentas PHP e MySQL Prof. MSc. Hugo Souza Na última aula falamos um pouco sobre as ferramentas
Procedimentos de Implantação ireport x Protheus
Índice 1. INTRODUÇÃO... 2 2. CONFIGURAÇÃO... 2 1.1 Configurando o Protheus... 2 2.2 Configurando o ireports no Protheus... 2 2.3 Incluindo relatórios no Protheus... 4 3. CONFIGURANDO E UTILIZANDO O IREPORT
Java para WEB. Servlets
Servlets Servlets são classes Java que são instanciadas e executadas em associação com servidores Web, atendendo requisições realizadas por meio do protocolo HTTP. Servlets é a segunda forma que veremos
BI Citsmart Fornece orientações necessárias para instalação, configuração e utilização do BI Citsmart.
16/08/2013 BI Citsmart Fornece orientações necessárias para instalação, configuração e utilização do BI Citsmart. Versão 1.0 19/12/2014 Visão Resumida Data Criação 19/12/2014 Versão Documento 1.0 Projeto
Atividade Prática 05 Gerenciamento de Servidores GNU/Linux Utilizando SNMP v3
Atividade Prática 05 Gerenciamento de Servidores GNU/Linux Utilizando SNMP v3 1. Configuração inicial de um Agente exclusivamente v3 com Autenticação e Privacidade Veremos como criar um usuário SNMP v3
Faculdade de Tecnologia SENAC Goiás. Disciplina: Gerenciamento de Rede de Computadores. Goiânia, 16 de novembro de 2014.
Faculdade de Tecnologia SENAC Goiás Disciplina: Gerenciamento de Rede de Computadores : Goiânia, 16 de novembro de 2014. Faculdade de Tecnologia SENAC Goiás Professor: Marissol Martins Alunos: Edy Laus,
Instalação e Configuração RPM Remote Print Manager para Windows 2000
Instalação e Configuração RPM Remote Print Manager para Windows 2000 Antes de iniciar a instalação do RPM Remote Print Manager parar Windows 2000, você necessita ter privilégios de "administrador" devido
Tutorial para envio de comunicados e SMS
Tutorial para envio de comunicados e SMS Conteúdo 1. Enviando comunicado para os alunos... 1 2. Verificando a situação do envio dos e-mails para os alunos... 5 3. Enviando comunicado para colaboradores
Configurando o DDNS Management System
Configurando o DDNS Management System Solução 1: Com o desenvolvimento de sistemas de vigilância, cada vez mais usuários querem usar a conexão ADSL para realizar vigilância de vídeo através da rede. Porém
CONFIGURAÇÃO MINIMA EXIGIDA:
Este tutorial parte do princípio que seu usuário já possua conhecimentos básicos sobre hardware, sistema operacional Windows XP ou superior, firewall, protocolo de rede TCP/IP e instalação de software.
INDICE 1. INTRODUÇÃO... 3 2. CONFIGURAÇÃO MÍNIMA... 4 3. INSTALAÇÃO... 4 4. INTERLIGAÇÃO DO SISTEMA... 5 5. ALGUNS RECURSOS... 6 6. SERVIDOR BAM...
1 de 30 INDICE 1. INTRODUÇÃO... 3 2. CONFIGURAÇÃO MÍNIMA... 4 3. INSTALAÇÃO... 4 3.1. ONDE SE DEVE INSTALAR O SERVIDOR BAM?... 4 3.2. ONDE SE DEVE INSTALAR O PROGRAMADOR REMOTO BAM?... 4 3.3. COMO FAZER
MANUAL DO UTILIZADOR DE REDE
MANUAL DO UTILIZADOR DE REDE Guardar o registo de impressão na rede Versão 0 POR Definições de notas Ao longo do Manual do utilizador, é utilizado o seguinte ícone: Notas sobre como enfrentar situações
Segurança de Acesso a Banco de Dados no MS SQL Server
Segurança de Acesso a Banco de Dados no MS SQL Server Para efetuar com sucesso os exemplos que serão mostrados a seguir é necessário que exista no SQL Server uma pessoa que se conecte como Administrador,
THREADS EM JAVA. George Gomes Cabral
THREADS EM JAVA George Gomes Cabral THREADS Fluxo seqüencial de controle dentro de um processo. Suporte a múltiplas linhas de execução permite que múltiplos processamentos ocorram em "paralelo" (em computadores
J820. Testes de interface Web com. HttpUnit. argonavis.com.br. Helder da Rocha ([email protected])
J820 Testes de interface Web com HttpUnit Helder da Rocha ([email protected]) O que é HttpUnit API Java para comunicação com servidores HTTP Permite que programas construam e enviem requisições, e depois
Print Audit 6 - SQL Server 2005 Express Edition Installation Guide
Print Audit 6 - SQL Server 2005 Express Edition Installation Guide Resumo Este é um guia passo a passo para instalar o SQL Server 2005 Express Edition como base de dados para o Print Audit 6. Pré-Requisitos
Roteiro de Uso do InstallShield
Roteiro de Uso do InstallShield Ao iniciar o InstallShield, a janela Welcome to InstallShield será exibida: Selecione a opção Create New Setup Project, para criar um novo modelo de instalação. A janela
CONFIGURAÇÃO DO SOFTFONE EYEBEAM INSTALAÇÃO CONFIGURANDO A LICENÇA TESTE DE REPRODUÇÃO E GRAVAÇÃO CONFIGURAÇÃO DO SIP SETTINGS
Voip do Brasil Telefone: 0800 889 9050 CONFIGURAÇÃO DO SOFTFONE EYEBEAM INSTALAÇÃO CONFIGURANDO A LICENÇA TESTE DE REPRODUÇÃO E GRAVAÇÃO CONFIGURAÇÃO DO SIP SETTINGS CONFIGURAÇÃO DE CODEC G729 AJUSTE DE
Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC
Arquitetura de Aplicações JSP/Web Padrão Arquitetural MVC Arquitetura de Aplicações JSP/Web Ao projetar uma aplicação Web, é importante considerála como sendo formada por três componentes lógicos: camada
Procedimentos para configuração em modo WDS
Procedimentos para configuração em modo WDS 1- WDS (Wireless Distribution System) permite o acesso de um DAP-1353 com o outro DAP-1353 de um modo padronizado. Dessa forma pode simplificar a infraestrutura
Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse
Como criar um EJB Criando um projeto EJB com um cliente WEB no Eclipse Gabriel Novais Amorim Abril/2014 Este tutorial apresenta o passo a passo para se criar um projeto EJB no Eclipse com um cliente web
AP_ Conta Aplicativo para digitação e envio de contas médicas no padrão TISS
AP_ Conta Aplicativo para digitação e envio de contas médicas no padrão TISS Manual de Instalação Tempro Software StavTISS Sumário 1. INTRODUÇÃO... 2 2. REQUISITOS DO SISTEMA... 3 3. INSTALAÇÃO... 4 4.
CONEXÃ O NFS-E SISTEMÃ ISS-INTEL UTILIZÃNDO JÃVÃ E SSL
CONEXÃ O NFS-E SISTEMÃ ISS-INTEL UTILIZÃNDO JÃVÃ E SSL Autor : Julio P. Leiser House Company Data : 17/08/2011 16:00 ETAPA 1 IMPORTAR CERTIFICADO A1 DO CLIENTE COM EXTENSÃO.PFX NO INTERNET EXPLORER A partir
Para que seja instalado o Bematef Total, é necessário que o computador onde seja efetuada a instalação
Rafael Ferreira Rodrigues REVISADO POR: Raquel Marques APROVADO POR: Renato Reguera dos Santos 1 - Objetivo Descrever o processo de instalação do Bematef Total. 2 - Campos de Aplicação É aplicável a área
FTP - Protocolo. O protocolo FTP é o serviço padrão da Internet para a transferência de arquivos entre computadores.
FTP FTP - Protocolo O protocolo FTP é o serviço padrão da Internet para a transferência de arquivos entre computadores. A partir do FTP usuários podem receber ou enviar arquivos de ou para outros computadores
Iniciando o MySQL Query Brower
MySQL Query Brower O MySQL Query Browser é uma ferramenta gráfica fornecida pela MySQL AB para criar, executar e otimizar solicitações SQL em um ambiente gráfico. Assim como o MySQL Administrator foi criado
