Buscar en el Blog

Mostrando entradas con la etiqueta Java. Mostrar todas las entradas
Mostrando entradas con la etiqueta Java. Mostrar todas las entradas

viernes, 11 de abril de 2014

Keystore Explorer Herramienta para Lidiar con Certificate Chain

Después de un montón de prueba y error intentando instalar el chain de certificados intermedios y raíz (root) para una autoridad de certificación (CA) y sin éxito, me encontré con ésta herramienta:

Keystore Explorer
http://keystore-explorer.sourceforge.net/

Me parece excelente y logró ayudarme a realizar lo que buscaba, la recomiendo al 100%

jueves, 23 de enero de 2014

Cómo corregir un Unsatisfied Link Error en Ubuntu al correr una aplicación Java

En Ubuntu, sí no se tienen instalados los paquetes de librerías gráficas (libswt) para una aplicación Java que posea GUI se suele tener el siguiente error:

java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: 
    no swt-gtk-3740 in java.library.path
    no swt-gtk in java.library.path

Para resolver esto es necesario instalar las librerías (libswt) usando el siguiente comando:

sudo apt-get install libswt-gtk-3-jni libswt-gtk-3-java

martes, 23 de julio de 2013

Cómo crear un explorador de colas (QueueBrowser) para JMS

En ésta publicación, comparto el código Java para crear un explorador de colas JMS:
package com.blogspot.ingmmurillo.jms;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQTextMessage;
import org.junit.Test;
import javax.jms.*;
import java.util.Enumeration;

public class JMSQueueBrowser {

    @Test
    public void test() throws JMSException {
        System.out.println("Explorador de Colas JMS (QueueBrowser)");
        String url = "tcp://localhost:61717";                
        String queueName = "test";

        ConnectionFactory connectionFactory =
                new ActiveMQConnectionFactory(url);
        Connection connection = connectionFactory.createConnection();

        connection.start();

        System.out.println(connection.getMetaData().getJMSProviderName() + " JMS " +
                connection.getMetaData().getJMSVersion());

        QueueSession session = (QueueSession) connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        Queue queue = session.createQueue(queueName);
        QueueBrowser browser = session.createBrowser(queue);

        Enumeration e = browser.getEnumeration();

        if (e != null) {

            int i = 0;
            while (e.hasMoreElements()) {
                Object msg = e.nextElement();
                ActiveMQTextMessage m = (ActiveMQTextMessage) msg;
                System.out.println(m.getText());
                i++;

            }
            System.out.println("Nro. Mensajes: " + (i));
        }

        browser.close();
        session.close();
        connection.close();
    }

}

Cómo cambiar la configuración regional y la codificación en Java

Para cambiar la configuración regional y la codificación a UTF-8 en un programa Java se tiene que colocar los siguientes parámetros de la máquina virtual:

-Duser.country=US -Duser.language=en -Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8

lunes, 8 de abril de 2013

Código Java para convertir un archivo en codificación ANSI a UTF-8

En ésta publicación explico el procedimiento para convertir un archivo de texto en codificación ANSI a la codificación UTF-8. A continuación comparto el código:

    String srcAnsiEncoded = new String(srcEncoded, "ISO-8859-15");
    byte[] srcUTF8 = srcAnsiEncoded.getBytes("UTF-8");

En dónde la variable srcEncoded corresponde a un arreglo de bytes con el contenido del archivo de texto.

viernes, 8 de marzo de 2013

Código Java para imprimir en una impresora nombrada

En ésta publicación comparto el código Java para imprimir en una impresora nombrada.

    public static void main(String args[]) throws FileNotFoundException, IOException, PrintException {

        //Archivo que se desea imprimir
        FileInputStream inputStream = new FileInputStream("c:/archivo.pdf");

        //Formato de Documento
        DocFlavor docFormat = DocFlavor.INPUT_STREAM.AUTOSENSE;
        //Lectura de Documento
        Doc document = new SimpleDoc(inputStream, docFormat, null);

        //Nombre de la impresora
        String printerName = "HP3015";

        //Inclusion del nombre de impresora y sus atributos
        AttributeSet attributeSet = new HashAttributeSet();
        attributeSet.add(new PrinterName(printerName, null));
        attributeSet = new HashAttributeSet();
        //Soporte de color o no
        attributeSet.add(ColorSupported.NOT_SUPPORTED);

        //Busqueda de la impresora por el nombre asignado en attributeSet
        PrintService[] services = PrintServiceLookup.lookupPrintServices(docFormat, attributeSet);

        System.out.println("Imprimiendo en : " + services[0].getName());

        DocPrintJob printJob = services[0].createPrintJob();
        //Envio a la impresora
        printJob.print(document, new HashPrintRequestAttributeSet());

        inputStream.close();

    }


martes, 29 de enero de 2013

Cómo purgar una cola de ActiveMQ usando el API de JMX

En ésta publicación explico el procedimiento para purgar (purge) una cola de Apache ActiveMQ usando el API de JMX.

1. Tener habilitado el soporte para JMX en  ActiveMQ, en la siguiente publicación se explica cómo hacerlo

2. Incluir las siguientes líneas de código Java que usan el API de JMX:

public void purgeQueue() throws NamingException, IOException, MalformedObjectNameException, InstanceNotFoundException, ReflectionException, MBeanException {
    String activeMQBrokerHost = "localhost"; //Dirección IP o nombre del servidor de ActiveMQ
    String queueToPurge = "test.queue"; //Nombre de la Cola

    JMXServiceURL jmxURL = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" + activeMQBrokerHost + ":1099/jmxrmi");
    ObjectName queue = new ObjectName("org.apache.activemq:BrokerName=" + activeMQBrokerHost + ",Type=Queue,Destination=" + queueToPurge);
    JMXConnector jmxConnection = JMXConnectorFactory.connect(jmxURL);
    MBeanServerConnection mBeanConnection = jmxConnection.getMBeanServerConnection();
    mBeanConnection.invoke(queue, "purge", null, null);
    jmxConnection.close();
}

martes, 28 de agosto de 2012

Cómo preservar el orden de los elementos de un HashMap

Cuándo usamos un HashMap en Java y consultamos sus elementos ya sean las claves o los valores, éstos por defecto se nos devuelven ordenados.

En ocasiones, éste comportamiento por defecto de un  HashMap  no nos conviene, por lo que para preservar el orden de cómo ingresamos los elementos es preferible usar un  LinkedHashMap .

En la siguiente clase Java se ilustra éste comportamiento usando un  HashMap  y un  LinkedHashMap .

public class HashMapTest {

    public static void main(String[] args) {

        System.out.println("Mapa Ordenado usando HashMap...");
        HashMap<String, Object> sortMap = new HashMap<String, Object>();

        sortMap.put("B", new Integer(2));
        sortMap.put("Z", new Integer(1));
        sortMap.put("A", new Integer(9));

        for (Map.Entry entry : sortMap.entrySet()) {
            System.out.println("Clave : " + entry.getKey()
                    + " Valor : " + entry.getValue());
        }


        System.out.println("\nMapa Preservando el Orden usando LinkedHashMap...");
        LinkedHashMap<String, Object> unsortMap = new LinkedHashMap<String, Object>();

        unsortMap.put("B", new Integer(2));
        unsortMap.put("Z", new Integer(1));
        unsortMap.put("A", new Integer(9));

        for (Map.Entry entry : unsortMap.entrySet()) {
            System.out.println("Clave : " + entry.getKey()
                    + " Valor : " + entry.getValue());
        }
    }
}


El resultado de la ejecución de éste programa es el siguiente:

Mapa Ordenado usando HashMap...
Clave : A Valor : 9
Clave : B Valor : 2
Clave : Z Valor : 1

Mapa Preservando el Orden usando LinkedHashMap...
Clave : B Valor : 2
Clave : Z Valor : 1
Clave : A Valor : 9

jueves, 12 de julio de 2012

Cómo generar un WAR usando el comando JAR

En ésta publicación explico el comando para generar un archivo WAR (Web Application Archive) usando el comando jar

Antes de poder ejecutar el comando es importante tener instalado correctamente el JDK y sus variables de entorno (JAVA_HOME y PATH)

1. Abrir una consola de comandos de Windows (cmd) y ejecutar el comando  jar para asegurarnos que esté en el PATH del sistema operativo

2. Ir al directorio de la aplicación web que queremos generar el archivo  WAR , por ejemplo: C:/workspace/aplicacion_web

3. Ejecutar el siguiente comando para generar el archivo WAR

jar cvf aplicacion_web.war .

martes, 12 de junio de 2012

Código Java para imprimir en la impresora predeterminada

En la siguiente publicación comparto el código Java para envíar a imprimir un archivo PDF a la impresora por defecto, éste código puede servir para programar la funcionalidad de impresión silenciosa.

Recomiendo además instalar Bullzip PDF Printer qué es una impresora PDF muy útil para realizar pruebas de impresión sin necesidad de gastar hojas de papel.

A continuación el código fuente:


 import javax.print.*;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;


public class PrintTest {

    public static void main(String args[]) throws IOException {

        FileInputStream inputStream = null;
        try {
            inputStream = new FileInputStream("c:/archivo.pdf");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        if (inputStream == null) {
            return;
        }

        DocFlavor docFormat = DocFlavor.INPUT_STREAM.AUTOSENSE;
        Doc document = new SimpleDoc(inputStream, docFormat, null);

        PrintRequestAttributeSet attributeSet = new HashPrintRequestAttributeSet();

        PrintService defaultPrintService = PrintServiceLookup.lookupDefaultPrintService();


        if (defaultPrintService != null) {
            DocPrintJob printJob = defaultPrintService.createPrintJob();
            try {
                printJob.print(document, attributeSet);

            } catch (Exception e) {
                e.printStackTrace();
            }
        } else {
            System.err.println("No existen impresoras instaladas");
        }

        inputStream.close();
    }
}

jueves, 17 de mayo de 2012

Tabla de caracteres latinos en UNICODE para Java


Para evitar problemas por la codificación de caracteres (encoding) es recomendable colocar el código UNICODE de los caracteres latinos cuando programemos en Java. En la siguiente tabla se encuentran los códigos UNICODE de los caracteres latinos más usados.
Caracter Codigo UNICODE Caracter Codigo UNICODE
á \u00E1 Á \u00C1
é \u00E9 É \u00C9
í \u00ED Í \u00CD
ó \u00F3 Ó \u00D3
ú \u00FA Ú \u00DA
ñ \u00F1 Ñ \u00D1
Adjunto el siguiente código fuente para probarlo en Java:
public class TestUNICODE {

public static void main(String[] args) {

System.out.println("\u00E1");
System.out.println("\u00E9");
System.out.println("\u00ED");
System.out.println("\u00F3");
System.out.println("\u00FA");
System.out.println("\u00F1");

System.out.println("\u00C1");
System.out.println("\u00C9");
System.out.println("\u00CD");
System.out.println("\u00D3");
System.out.println("\u00DA");
System.out.println("\u00D1");

String mensaje = "Aqu\u00ED est\u00E1 mi prueba!!!";
System.out.println(mensaje);        

}
}

martes, 8 de mayo de 2012

Cómo configurar Adobe Flash Builder 4.5 para que se conecte a servicios web seguros (HTTPS)

En ésta publicación explico el procedimiento para que a través de Adobe Flash Builder 4.5 instalado sobre Windows, podamos crear  clientes para servicios web seguros expuestos sobre el protocolo HTTPS.

Supongamos que tenemos el siguiente servicio web expuesto sobre HTTPS:

URL = https://midominio.com/ServicioWebSeguro?wsdl

Exportación del Certificado con Firefox

Usando Firefox, abrimos una nueva ventana con el URL, y vamos a:

Tools (Herramientas) > Page Info (Información de Página) > Security (Seguridad) > View Certificate (Ver Certificado)

En la pestaña de Details (Detalles), damos clic en Export (Exportar) para exportar el certificado de seguridad del servicio web. Para éste ejemplo lo guardamos en el siguiente directorio:

c:\certs\serviciowebseguro.crt

Exportación del Certificado con Internet Explorer (IE)

Usando IE, abrimos una nueva ventana con el URL, damos clic derecho, opción Certificados > Detalles > Copiar en archivo...

Registro del certificado usando keytool

Abrimos una consola de comandos (cmd)y ejecutamos el siguiente comando:

keytool -import -alias cert1 -keystore "c:\certs\truststore.jks" -file c:\certs\serviciowebseguro.crt

NOTA: es necesario tener instalado el JRE para acceder directamente a la herramienta keytool. La herramienta también se encuentra en el directorio de instalación del JDK, en mi caso (C:\Program Files\Java\jdk1.6.0_26\bin)

Modificar el archivo FlashBuilder.ini

En el directorio de instalación de Adobe Flash Builder 4.5, en mi caso: (C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.5), editamos el archivo FlashBuilder.ini y colocamos:

-Djavax.net.ssl.trustStore="c:\certs\truststore.jks"

Abrimos Adobe Flash Builder 4.5, en la opción de Data > Connect to Web Service colocamos el URL del servicio web seguro y el IDE generará el cliente de servicio web. 








jueves, 8 de marzo de 2012

Cómo obtener la IP de un cliente de servicio web expuesto con Axis

Para obtener la dirección IP del cliente que consume un servicio web publicado con Apache Axis se tiene que hacer lo siguiente:

1. Dentro de la clase que tiene el método que se está invocando en el servicio web importar las siguientes clases:

import org.apache.axis.Constants;
import org.apache.axis.MessageContext;

2. Finalmente, incluir el siguiente código:

MessageContext curContext = MessageContext.getCurrentContext();
String ip = curContext.getProperty(Constants.MC_REMOTE_ADDR).toString();

jueves, 23 de febrero de 2012

Encriptando una contraseña con Jasypt

En esta guía explico el procedimiento para encriptar una contraseña con Jasypt.

1. Descargar Jasypt del siguiente link: http://sourceforge.net/projects/jasypt/files/jasypt/jasypt%201.9.0/jasypt-1.9.0-dist.zip/download

2. Descomprimir el archivo. Por ejemplo: C:\jasypt-1.9.0

3. Abrir una consola de comandos (cmd) e ir a C:\jasypt-1.9.0\bin

4. Ejecutar el siguiente comando:

encrypt input="password" password="xxxxxx"

NOTA: En input se colocará el valor de la contraseña que se quiere encriptar. En password se colocará el valor de la contraseña global que se usará como llave para encriptar y desencriptar la contraseña.

jueves, 16 de febrero de 2012

Cómo matar todos los procesos Java

Para matar todos los procesos Java en:

Sistemas Operativos Windows

taskkill /IM java.exe /F

Sistemas Operativos Unix/Linux

killall java

miércoles, 16 de noviembre de 2011

Personajes relevantes en el mundo Java

En ésta publicación listo a los que considero los personajes más importantes del mundo Java.
Personaje Foto Descripción Blog
James Gosling Se le conoce como el padre de Java fue quien creo el primer diseño del compilador y la máquina virtual
Gavin King Es el fundador del proyecto Hibernate
Rod Johnson Es el fundador del proyecto Spring
Craig Mcclanahan Es el creador de Struts
Marc Fleury Es el fundador de JBoss
Joshua Bloch Lideró e implementó Java Collections Framework
Kent Beck Creador de JUnit, Extreme Programming y Test Driven Development
James Duncan Davidson Es el creador de Tomcat y Ant
Ross Mason Es el creador de Mule






Sí está faltando alguien en la lista háganmelo saber para incluirlo.