Entradas populares

lunes, 14 de noviembre de 2011

JAVA JDBC conexión de java con una base de datos (POSTGRES)

Hoy les hablare... del lenguaje en el cual he trabajado estos últimos meses, nada más y nada menos que nuestro gran y querido amigo JAVA, aunque no soy un experto es fácil si ya tienes experiencia en otros lenguajes y mucho más aún cuando utilizas un IDE (en inglés integrated development environment - Entorno de desarrollo integrado). Aunque no hablare mucho del IDE que uso que es NetBeans 7 les explicaré como se realiza una conexión a base de datos de una forma sencilla y reutilizable.
Primero deberán empezar seleccionando el gestor de base de datos que van usar MySql, PostGres, MSSql, ORACLE, etc... Bueno gran parte de los programadores que usan lenguaje de código abierto se inclinan a usar base de datos de código abierto en mi caso voy a usar POSTGRES.
Y como primer paso será descargar la biblioteca que nos facilita el acceso a la base de datos más conocido como JDBC (inglés Java Database Connectivity) u ODBC (Open Database Connectivity) en mi caso en particular tengo el postgresql-8.3-603.jdbc3 para buscar su librería bastará con googlear un poco. (BUSCANDO ALGO ASI COMO: JDBC DE SUBASEDEDATOS).
Una vez con su librería .jar vamos a nuestro IDE y añadimos un nuevo proyecto 

Nos movemos en la pestaña que nos muestra nuestro proyecto y damos click derecho agregar library o librerías.



import java.sql.*;
//Librería para usar el panel de mensajes
import javax.swing.JOptionPane;
public class ClsConexion {
    public Connection conect;
    public Statement sentencia;
    public ResultSet resultado;
public void Connection(String Server, String usuario, String contrasena, String DBname, Boolean test){
        String driver = "org.postgresql.Driver";
        String connectString = "jdbc:postgresql://"+Server+"/"+DBname;
        try{
            Class.forName(driver);
            conect = DriverManager.getConnection(connectString, usuario, contrasena);          
            sentencia = conect.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE, ResultSet.HOLD_CURSORS_OVER_COMMIT);
            if(test == true){
                //Cierro conexión -- DE LA BASE DE DATOS...
               conect.close();
               JOptionPane.showMessageDialog(null, "Conexión realizada con éxito");
            }
        }catch (ClassNotFoundException e ){
            JOptionPane.showMessageDialog(null, "Error al cargar el driver de datos.\n"+e.getMessage());
        }catch(SQLException ext){
            JOptionPane.showMessageDialog(null, "SQLException: Creacion Statement "+ext.getSQLState()+"\n"+ext.toString());
        }
       
    }
    //INICIAR TRANSACCION CON BASE DE DATOS
    public void BeginTrans() throws SQLException{
        conect.setAutoCommit(false);
    }
    //HACER UN ROLLBACK  
    public void RollBack() throws SQLException{
        conect.rollback();
    }
   
    public void Close() throws SQLException{
        if(conect != null){ conect.close(); }
        if(sentencia != null){ sentencia.close(); }
    }
}

jueves, 3 de noviembre de 2011

HTTPS en servidores compartidos - Hostgator.com

Honestamente no creí que esto se pudiera hacer... pero después de hacer unas pequeñas googleadas, me entere que existe conexión segura en servidores compartidos el famoso SSL (Secure Sockets Layers).


Pero no todos los servidores son iguales... en mi caso ahora estoy utilizando en hostgator.com y me he animado ha escribir este post ya que es uno de los hosting más usados en la web.

Para saber como usar su url segura necesitarán saber el nombre de su hosting y su nombre de usuario de cpanel, para saber el nombre de su host pueden revisarlo en el correo de bienvenida de hostgator... o ingresen a su cpanel, con su usuario y contraseña. En la parte izquierda se encuentra el nombre de nuestro servidor...



El nombre de nuestro servidor estará compuesto por un nombre y unos números. Sabiendo estos datos ya solo es cuestión de remplazar nuestros datos... quedando así nuestra url .

https://secure####.hostgator.com/~cpaneluser/

Reemplazaremos los # por nuestros números del nombre del servidor y cpaneluser por nuestro nombre de usuario con que ingresamos a nuestro cpanel.

Para usar nuestra url quedaría algo así https://secure####.hostgator.com/~cpaneluser/images/segura.jpg
Esto nos resulta muy útil para realizar pestañas en Facebook o aplicaciones...

miércoles, 7 de septiembre de 2011

Certificados fraudulentos - DigiNotar

Se generan certificados fraudulentos según los últimos datos un atacante con IP de Irán se hizo con usuario y contraseña de una autoridad de Comodo del sur de Europa. Y habria emitido certificados fraudulentos de paginas como login.live.com, mail.google.com, www.google.com, login.yahoo.com, login.skype.com, addons.mozilla.org...

Anterior se revocaron certificados de firma de código, era la primera vez que se hacía una revocación masiva de certificados SSL y a nivel de dominios importantes.

Al parecer el mismo intruso a conseguido emitir certificados fraudulentos a nombre de la compañia DigiNotar (de origen Vasco). Los certificados fraudulentos serán invalidados pero no por fraudulentos ya que esto prodiera afectar los certificados de grandes empresas y que los certificados de origen (propias de la empresa) sean tomados como dudosos.

Esto pone en tela de duda todas estas seguridades a través de certificados y demuestra la fragilidad del sistema para la emision de los mismos y involucra a grandes empresas de certificación ssl. Por eso hay tener mucho cuidado donde entramos en internet.

martes, 30 de agosto de 2011

Java - "ejecutar un jar desde java"

En los dos últimos post me dedica a escribir sobre java, ya que actualmente me encuentro desarrollando en este gran lenguaje de programación aunque he escuchado a el 90% de programadores que conozco que es difícil, hoy personalmente creo que tiene muchas cosas..... Y que solo hay documentación en inglés la poca que está en español no es muy bueno.

Por eso cada vez que puedo o que lo amerite escribo un post sobre java...Una necesidad que tuve es de hacer el llamado o la ejecución de otro archivo jar que son como los ejecutables de JAVA. Para empezar tenemos que tener nuestro archivo al cual vamos hacer el llamado o queremos que se ejecute.. Una vez ahí podremos hacer el llamado desde la nueva aplicación que estamos construyendo. Podremos hacer el llamado desde cualquier lugar o acción dentro de llama de una forma limpia y sencilla.

Runtime.getRuntime().exec("java -jar c:/rutademiarchivo/miarchivo.jar parametros1 parametro2");


Funciona en Windows y Linux Fedora 15 por lo general encontraran en la web un llamado parecido pero la mayoría solo funciona en Windows por que usan el cmd java -jar archivo.jar

Para que funcione en Linux tuve que omitir el cmd y darle la ruta absoluta del archivo que iba a ejecutar.

miércoles, 17 de agosto de 2011

Encriptar y Des-Encriptar con java

Hola a todos... ahora en mi corta vida de programador ha entrado un nuevo lenguaje al cual muchos programadores le temen (me incluyo XD) pero creo que esto se debe a la poca información que a veces encontramos en la web (información en español).

En mi trabajo actual se le ha ocurrido la grandiosa idea de cambiar las plataformas de trabajo (Sistema Operativo). Entonces nos hemos visto en la necesidad de buscar un lenguaje potente y versátil para migrar nuestro sistema interno, lo cual después de un intenso debate (no se nos vino otro a la cabeza :D) llegamos a la conclusión que debemos implementar java en todas nuestras nuevas aplicaciones. Ya que java puede correr en los dos S.O que manejamos en la empresa.

Y una de las grandes necesidades que se plantearon fue la de encriptar pequeñas cadenas de caracteres para una conexión a nuestra base de datos cosa que me tomo algún tiempo en encontrar por eso ahora les comparto el código con ejemplo.

package jpostconfig;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;
import java.security.spec.*;
import java.io.*;

public class ClsEncriptar {
     public static String encriptar(String cleartext, String key)
            throws Exception {
        return crypt(cleartext, key, Cipher.ENCRYPT_MODE);   
    }


    public static String desEncriptar(String ciphertext, String key)
            throws Exception {
        return crypt(ciphertext, key, Cipher.DECRYPT_MODE);   
    }

    private static String crypt(String input, String key, int mode)
            throws Exception {

        // Install SunJCE provider
        Provider sunJce = new com.sun.crypto.provider.SunJCE();
        Security.addProvider(sunJce);
        
        KeyGenerator kgen = KeyGenerator.getInstance("Blowfish");
        kgen.init(448);
        SecretKey skey = kgen.generateKey();

        byte[] raw = key.getBytes();
        SecretKeySpec skeySpec = new SecretKeySpec(raw, "Blowfish");
           
        Cipher cipher = Cipher.getInstance("Blowfish/ECB/PKCS5Padding");
        cipher.init(mode, skeySpec);

        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        ByteArrayInputStream bis = new ByteArrayInputStream(input.getBytes());
        CipherOutputStream cos = new CipherOutputStream(bos, cipher);

        int length = 0;
        byte[] buffer =  new byte[8192];

        while ((length = bis.read(buffer)) != -1) {
           cos.write(buffer, 0, length);
        }

        bis.close();
        cos.close();

        return bos.toString();
    }
}

Y les dejo un proyecto en NetBeans(versión 7.01) para que lo puedan revisar todo el codigo implementado.
Para llamar la clase no necesitan instanciarlo pero si capturar las excepciones.

SOLO FUNCIONA BAJO WINDOWS AUN NO SE PORQUE XD

http://www.megaupload.com/?d=TRAQICS7

Tomado de : http://www.forosdelweb.com/1063555-post13.html