16 de fev de 2013

Executando comandos SQL em batch com JDBC


Muito fácil fazer execuções em batch com JDBC. Só executar um comando por vez, uai. Nada disso, tem uma forma mais fácil e elegante. Veja só o exemplo abaixo.

BatchExecutor.java
public class BatchExecutor {

    public void execute(List commands) {
        Connection con = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/butecodb", "root", "");
            Statement stmt = con.createStatement();
            for (String command : commands) {
                stmt.addBatch(command);
            }
            stmt.executeBatch();
            stmt.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

App.java
public class App{
    
    public static void main( String[] args ){
        
        List commands = new ArrayList();
        commands.add("insert into buteco values (1,'Bar do Jairo')");
        commands.add("insert into buteco values (2,'Bar do Ênio')");
        commands.add("insert into buteco values (3,'Bar Viva Cuba!')");
        
        BatchExecutor batchExecutor = new BatchExecutor();
        batchExecutor.execute(commands);        

    }
}


Espero que seja de grande ajuda.

Código Fonte: http://depositfiles.com/files/41b1dmjli

Aqui é Java, mano!

26 de jan de 2013

JMX - Acesso remoto a processos


O JMX (Java Management Extensions) é uma ferramenta do Java para acessar ou monitorar processos/aplicações remotamente. É bem simples de se implementar. É necessário apenas criar uma interface e utilizá-la para acessar remotamente algum processo Java que esteja rodando.

Passos para criar uma aplicação utilizando JMX:

  • Criar uma interface. Detalhe: o nome da interface precisa terminar com “Mbean”.
  • Implementar a interface e registar o Mbean para que ele possa ser acessado remotamente.
  • Criar um client para acessar a aplicação.


  • Vamos criar uma demo bem simples, um contador!

    CountMbean.java
    public interface CountMBean {
     
     int getCount();
     
     void increment();
     
    }
    

    Count.java
    public class Count implements CountMBean{
     
     private static int count = 0;
    
     public int getCount() {
      return count;
     }
    
     public void increment() {
      count++;
     }
     
    }
    

    AppJMX.java
    public class AppJMX {
    
     public static void main(String[] args) throws Exception {
    
      MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
      ObjectName mbeanName = new ObjectName("com.jmxexample:type=Count");
    
      Count count = new Count();
      mbs.registerMBean(count, mbeanName);
    
      Thread.sleep(Long.MAX_VALUE);
    
     }
    }
    


    Os parâmetros a seguir são necessários para o funcionamento da demo e devem ser passados ao executar o programa:

    -Dcom.sun.management.jmxremote
    -Dcom.sun.management.jmxremote.port=9999
    -Dcom.sun.management.jmxremote.authenticate=false
    -Dcom.sun.management.jmxremote.ssl=false


    Sem entrar muitos nos detalhes, a execução vai ficar mais ou menos assim:

    java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -classpath %classpath com.jmxexample.AppJMX

    ClientJMX.java
    JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi");
    JMXConnector jmxConnector = JMXConnectorFactory.connect(url, null);
      
    MBeanServerConnection mbeanConn = jmxConnector.getMBeanServerConnection();
    ObjectName mbeanName = new ObjectName("com.jmxexample:type=Count");
    
    CountMBean countMBean = JMX.newMBeanProxy(mbeanConn, mbeanName, CountMBean.class, true);
    
    countMBean.increment();
    System.out.println(countMBean.getCount());
    


    Outra possibilidade é utilizar o jconsole:



    É isso ae, galera! Prometo não demorar muito a fazer outro post. Esse começo de ano estava de férias na Coréa no Norte e lá o Blogger é bloqueado pelo governo, por isso a demora... rsrs

    Código Fonte: http://depositfiles.com/files/j1hjr5mhy

    Falow! Aqui é java, morou!?