Páginas

sexta-feira, 25 de julho de 2014

'JMX RMI' Coletando informação da memoria do aplicativo web

Vamos cria um projeto java se para consumir um recurso importante para que quer monitorar aplicativo em servidor web sem usar o a rotina do jconsole 'pid' que por sua vez fica limitado se cada servidor tiver um usuário igual e feito no linux, lembrando que quando se tem um aplicativo web implantando em um servidor por exemplo o glassfsh, recebera um endereço jmx:rmi..... , e se for implantando vários aplicativo web vai ter o consumo total desse servidor não de cada aplicativo.

primeiro cria um aplicativo java com um novo JMX_RMI ou qualquer outro nome, atentando em cria uma classe principal para podemos fazer o teste, agora na classe principal main() vamos colocar o código que vai ser executado. Abaixo tem o código bem simples e resumida mas já tenho oque queremos, acho interessante saber quanto de memoria nossa aplicação consome de recurso, pois podemos fica mais atento sobre a session scopo que estamos utilizando, ou ate mesmo fazer teste de stress com o Jmeter





JMXServiceURL url = new JMXServiceURL("");
protocolo de transporte a ser usado para se conectar ao servidor de conexão

JMXConnector c = JMXConnectorFactory.connect(url);
Ele e o cliente final de um conector API JMX. Um objecto deste tipo pode ser utilizado para estabelecer uma ligação para um servidor de conector.

MBeanServerConnection mbsc = c.getMBeanServerConnection();
Essa interface representa uma maneira de falar com um servidor MBean, local ou remoto


Para consegui a url do jmx vc dever cria uma aplicação qualquer web pode ser sem nada e quando vc tiver implantando o o mesmo a informação aparecera e só copia e cola




sexta-feira, 28 de março de 2014

Menu Dock para os fãs do Mac OS



O menu doca PrimeFaces transforma imagens em um menu dock do Mac, com ícones que se expandem em comportamento. Assim, os componentes Doca imita a interface do cais bem conhecido do Mac OS X. 



 index.xhtml
  






sexta-feira, 21 de março de 2014

Buscando Frase No Banco de Dados PostgresSQL usando FTS

full-text-search-no-postgresql usando FTS

Bom lembrado uma situação que se deseja fazer uma busca no banco independendo do tipo de palavras o mais comum é usar o like para busca mas será que isso funciona bem? sim funciona, mas tenho uma ferramenta capaz de realiza busca por token =( isso token então temos um monte de palavras solta e vc pode busca a relação entre ela no inicio meio e fim. então vamos lá ver um ex SQL


SELECT * FROM alerta.alt_pass_turno Where to_tsvector('portuguese', abs_aafp) @@ plainto_tsquery('" + search + "')

podemos ver algo de diferente após a condição where.. um to_tsvector mas  o que e isso? segundo o documento do Postgres diz isso: PostgreSQL fornece a to_tsvector função para converter um documento para o tipo de dados tsvector. Bom não fico muito claro não é certo o to_tsvector analisa um documento textual em tokens, reduz os tokens, até lexemas, e retorna um tsvector que lista os lexemas, juntamente com as suas posições no documento. O documento é processado de acordo com a configuração de pesquisa de texto especificado ou padrão.

Resumindo para não mastiga muito plainto_tsquery faz as operações lógicas com a frase separando em palavras para ser buscado no banco de dados













quinta-feira, 27 de fevereiro de 2014

Escaneando pid Java usando expressão regular para filtra os processos

Bem resumido a conversar este trecho de código varre os processo do sistema pegando apenas os processo do java os servidor web glassfish, tomcat e entre outro visando futuramente o monitoramento do mesmo, lembrando que este codigo vai reclama o jar tool que se encontra no propio java instalado XD no seu sistema basta apenas importa-lo.

import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import sun.jvmstat.monitor.*;
import sun.tools.jps.Arguments;

/**
 *
 * @author Luiz Henrque Buris
 */
public class RuntimeScan {

    private static Arguments arguments;
    public String t = null;
    List<String> l = new ArrayList<String>();

    public void scam(String[] args) {
        try {
            arguments = new Arguments(args);
        } catch (IllegalArgumentException e) {
            System.err.println(e.getMessage());
            Arguments.printUsage(System.err);
            return;
        }

        if (arguments.isHelp()) {
            Arguments.printUsage(System.out);
            System.exit(0);
        }

        try {
            HostIdentifier hostId = arguments.hostId();
            MonitoredHost monitoredHost = MonitoredHost.getMonitoredHost(hostId);

            // Obtém o conjunto de JVMs ativos no host especificado.
            Set jvms = monitoredHost.activeVms();

            for (Iterator j = jvms.iterator(); j.hasNext(); /* empty */) {
                StringBuilder output = new StringBuilder();
                Throwable lastError = null;

                int lvmid = ((Integer) j.next()).intValue();

                output.append(String.valueOf(lvmid));

                if (arguments.isQuiet()) {
                    System.out.println("aaa" + output);
                    continue;
                }

                MonitoredVm vm = null;
                String vmidString = "//" + lvmid + "?mode=r";

                try {
                    VmIdentifier id = new VmIdentifier(vmidString);
                    vm = monitoredHost.getMonitoredVm(id, 0);
                } catch (URISyntaxException e) {
                    // unexpected as vmidString is based on a validated hostid
                    lastError = e;
                    assert false;
                } catch (Exception e) {
                    lastError = e;
                } finally {
                    if (vm == null) {
                        output.append(" -- process information unavailable");
                        if (arguments.isDebug()) {
                            if ((lastError != null)
                                    && (lastError.getMessage() != null)) {
                                output.append("\n\t");
                                output.append(lastError.getMessage());
                            }
                        }
                        System.out.println(output);
                        if (arguments.printStackTrace()) {
                            lastError.printStackTrace();
                        }
                        continue;
                    }
                }
                output.append(" ");
                output.append(MonitoredVmUtil.mainClass(vm,
                        arguments.showLongPaths()));
                if (arguments.showMainArgs()) {
                    String mainArgs = MonitoredVmUtil.mainArgs(vm);
                    if (mainArgs != null && mainArgs.length() > 0) {
                        output.append(" ").append(mainArgs);
                    }
                }
                if (arguments.showVmArgs()) {
                    String jvmArgs = MonitoredVmUtil.jvmArgs(vm);
                    if (jvmArgs != null && jvmArgs.length() > 0) {
                        output.append(" ").append(jvmArgs);
                    }
                }
                if (arguments.showVmFlags()) {
                    String jvmFlags = MonitoredVmUtil.jvmFlags(vm);
                    if (jvmFlags != null && jvmFlags.length() > 0) {
                        output.append(" ").append(jvmFlags);
                    }
                }

                monitoredHost.detach(vm);
                t = output.toString();
                l.add(t);
            }
        } catch (MonitorException e) {
            if (e.getMessage() != null) {
                System.err.println(e.getMessage());
            } else {
                Throwable cause = e.getCause();
                if ((cause != null) && (cause.getMessage() != null)) {
                    System.err.println(cause.getMessage());
                } else {
                    e.printStackTrace();
                }
            }
        }
    }

    public static void main(String[] args) {

        RuntimeScan d = new RuntimeScan();
        d.scam(args);

Este trecho estou usando expressão regular para saber quais processos contem letra ou apenas numero

        Pattern pattern = Pattern.compile("\\d{4,4} [a-zA-Z]{4,20}");

        for (int i = 0; i < d.l.size(); i++) {
            Matcher matcher = pattern.matcher(d.l.get(i));
            if (matcher.find()) {
                System.out.println("Encontrou");
                System.out.println(d.l.get(i));
            } else {
                System.out.println("Não encontrou");
            }
        }
    }
}

sábado, 22 de fevereiro de 2014

Instalação do Windows 7 Partição GPT

1 - Após ter escolhido o idioma, pressione SHIFT+F10 para abrir o console; 
2 - Na linha de comandos, digite: 
diskpart --> Este comando permite aceder ao utilitário para gerir partições 
list disk --> Mostra todos os discos. Verifique se o disco 0 corresponde ao disco que compraste (basta verificar o tamanho) 
select disk 0 --> Escolhe o disco 0 para efetuar operações sobre ele. Se o disco novo não for o 0, então você deve alterar o número no comando para, por exemplo, select disk 1 
clean --> Este comando vai eliminar as informações de configuração existentes no disco 
create partition primary --> Este comando vai criar uma partição primária (no disco que selecionou no passo select disk x) 
exit --> para abandonar o utilitário diskpart 
exit --> para regressar ao programa de instalação; 
3 - Agora na tela de seleção de partição, escolhe aquela que acabou de criar. Se continuar a dar erro, reinicia o computador e verifica se o erro desapareceu (de vez em quando é necessário um reboot para que as alterações fiquem visíveis ao setup do Windows); 
4 - Antes de instalar o Windows, formate o disco.