Call to virDomainCreateWithFlags failed

Error:

    Call to virDomainCreateWithFlags failed: Failed to connect socket to '/var/run/libvirt/virtlogd-sock': No such file or directory

Descripción:

    Al iniciar el servicio libvirtd.service no inicio el servicio virtlogd

Solucion:
    sudo systemctl status virtlogd.socket
Leer más...

Presentación en la Universidad Interamerica de Panamá

Presentación en la Universidad Interamerica de Panamá

Leer más...

Properties init: Could not determine current working directory.

Error:
       Error occurred during initialization of VM
       java.lang.Error: Properties init: Could not determine current working   directory.
        at java.lang.System.initProperties(Native Method)
        at java.lang.System.initializeSystemClass(System.java:1069)

Descripción:

Al intentar ejecutar un script que llama un proceso java desde un usuario de so distinto salía ese error.

:~# sudo -u user  java -version
Error occurred during initialization of VM
java.lang.Error: Properties init: Could not determine current working directory.
        at java.lang.System.initProperties(Native Method)
        at java.lang.System.initializeSystemClass(System.java:1069)



 Como reproducirlo:
   #sudo -u user  java -version




Solución:
:~# su - user -c "java -version"

Oracle Corporation      SunOS 5.11      11.1    February 2014
You have new mail.
mesg: cannot change mode
java version "1.6.0_71"
Java(TM) SE Runtime Environment (build 1.6.0_71-b32)
Java HotSpot(TM) Server VM (build 20.71-b01, mixed mode)
Leer más...

Secure Admin must be enabled to access the DAS remotely.



Error:
     Secure Admin must be enabled to access the DAS remotely.

Descripción:

   La administración no está habilitada para ser usada remotamente, por lo tanto requiere que se habilite.

Solución:

     ./asadmin --host [host] --port [port] enable-secure-admin


Referencia:
     http://docs.oracle.com/cd/E18930_01/html/821-2435/gkomz.html
Leer más...

process already using the admin port 4848



Error:
     there is a process already using the admin port 4848

Descripción:
     Al revisar los puertos utilizados, no encontré este puerto, por lo tanto, me hizo pensar que era un error genérico.

Solución:
     Al revisar el archivo /etc/hosts encontré que la dirección IP estaba mal escrita.
Se cambia la dirección IP y se inicio nuevamente y funcionó correctamente.

./asadmin start-domain
Leer más...

send-mail: Cannot open smtp.gmail.com:587

Error:

     send-mail: Cannot open smtp.gmail.com:587

Descripción:
    Archivo de configuración incompleto.

    Nombre del archivo:
         /etc/ssmtp/ssmtp.conf

Solución:
        vi /etc/ssmtp/ssmtp.conf
         #modificar los siguiente

         root=tucorreo@gmail.com
         mailhub=smtp.gmail.com:587
         rewriteDomain=
         FromLineOverride=YES
         UseSTARTTLS=YES
         AuthUser=tucorreo@gmail.com
         AuthPass=tucontrasenia
Leer más...

time wget SSL23_GET_SERVER_HELLO:sslv3 alert illegal parameter

Error:
   OpenSSL: error:14077417:SSL routines:SSL23_GET_SERVER_HELLO:sslv3   alert illegal parameter
Unable to establish SSL connection.

Descripción:
   Intentaba verificar la latencia de un sitio de la siguiente forma:

     ~]$ time wget https://misitio.com/index.html -O /dev/null

y obtenía el error mostrado.

Solución:
    agregué la opción --secure-protocol y dado que el error indicaba la versión usé sslv3.

~]$ time wget --secure-protocol=sslv3 https://misitio.com/index.html -O /dev/null

Leer más...

cannot find symbol symbol : method fail(java.lang.String) JUnit

Error:
    cannot find symbol symbol  : method fail(java.lang.String)

Descripción
    Al intentar usar el método fail() envía el error mostrado.

Solución:
   import static org.junit.Assert.fail;
Leer más...

undefined reference to `krb5_string_to_deltat'


Descripción:
   Al usar la función krb5_string_to_deltat(str, &delta) de krb5 para convertir una cadena al compilar con: 
   
      gcc test_krb5.c -o tkrb5
Error:
    /tmp/ccMrM4vc.o: In function `main':
test_krb5.c:(.text+0x17): undefined reference to `krb5_string_to_deltat'
collect2: error: ld returned 1 exit status

Solución:
    utilizar el flag -lkrb5
    gcc test_krb5.c -o tkrb5 -lkrb5
Leer más...

undefined reference to `__res_search'

Descripción:
  Intentaba utilizar la el función res_search(...) de utilizando:
     gcc busquedas.c -o buscar
Error:
   $ gcc busquedas.c -o buscar
    /tmp/ccW46Tzb.o: In function `main':
     busquedas.c:(.text+0x11c): undefined reference to `__res_search'
     collect2: error: ld returned 1 exit status


Solución :
  Requiere hacer el enlace con la opción -lresolv

    gcc busquedas.c -o buscar -lresolv
Leer más...

ORA-01034: ORACLE not available

Al intentar usar sqlplus sale lo siguiente:

Error:
      ORA-01034: ORACLE not available

Causa:
      Al intentar crear las variables ORACLE_HOME y ORACLE_SID no me percaté que había escrito mal ORACLE_HOME y tenía el nombre distinto, es decir no existía ORACLE_HOME.

Solución:
     Corregir el nombre con su respectivo export en profile.

Leer más...

ssh X11 Protocol major versions differ: 1 vs. 2

Error:
     Protocol major versions differ: 1 vs. 2

Comando ejecutado: 
    ssh -X11 usuario@dominio

Solución: 
    ssh -X11 usuario@dominio -2

    Si con la versión 2 no funciona utilizar versión 1. La versión utilizada o   soportada se puede verificar con:
    vi /etc/ssh/ssh_config
Leer más...

sdl init failure reason is no available video device


En esta entrada vamos a mostrar rápidamente como corregir un error al ejecutar el administrador de dispositivos para android (AVD).

El error es:

sdl init failure reason is no available video device

Para corregirlo podemos hacer la instalación de unas bibliotecas:

yum install glibc.i686 ncurses-libs.i686 libstdc libstdc++.i686 libzip.i686 libX11.i686 libXrandr.i686 SDL.i686





1 Pedro 3:8-98 Finalmente, sed todos de un mismo sentir, compasivos, amándoos fraternalmente, misericordiosos, amigables;9 no devolviendo mal por mal, ni maldición por maldición, sino por el contrario, bendiciendo, sabiendo que fuisteis llamados para he heredaseis bendición.
Leer más...

Podcast - javaHispano busca editor


Podcast Duke
En esta ocasión nos unimos a promover la necesidad de javahispano de la colaboración en los podcast.

Colocando las palabras de Abraham: 

Si entre vosotros hubiese alguien que esté dispuesto a echar una mano en la edición del audio de los podcast su ayuda sería muy bienvenida. Cualquiera que crea que puede echar una mano que contacte conmigo abraham@javaHispano.org Para más detalle pueden revisar en Javahispano - Podcast
Leer más...

Estructura de un Proyecto Android

 




Al crear un proyecto android en un IDE, el mismo nos crea la estructura necesaria para la ejecución, desarrollo de una aplicación.
En esta entrada se mostrará la estructura de un proyecto generado en Netbeans, pero en general en los demás IDE’s es lo mismo, solo cambian algunos nombres como por ejemplo:
En netbeans crea Resources y en eclipse crea Res, pero ambos contienen lo mismo.


  • Source Packages:
    En este sección encontraremos el código fuente en sus respectivos paquetes de nuestro proyecto, ya sea creado por nosotros o creado automáticamente por el IDE.
     En esta sección también encontraremos la clase MainActivity, creada por el IDE,  que contiene lo esencial para la pantalla inicial, el comportamiento de esta clase y la definición de sus métodos lo veremos a más detalle en otra entrada.


  • Generated Source Packages:
         En esta sección encontraremos el código fuente generado por el IDE que no puede ser modificado por nosotros, no es de solo lectura pero si lo modificamos el IDE lo re-genera. Encontraremos el fuente de la clase R, aquí se encuentra las constantes con los id definidos en la carpeta Resources para ser usados en la aplicación.


  • Resources:
        En esta carpeta se encuentran creados y además podremos agregar datos como imagenes, cadenas, configuraciones para el dispositivo conocidos como recursos. Esto nos permitirá mantener una independencia en nuestra aplicación entre las diferentes partes de la misma.

         drawable:
  En este recurso se encuentran las imagenes. Pero dado que unas de las características mas atractivas en Android
Los recursos que inician con drawable- fueron agreados en Android desde la versión 1.6 para soporte a las diferentes resoluciones y mantener un desarrollo consistente en los diferentes dispositivos utilizando una sola aplicación (.apk) , y como buena práctica debiéramos aplicarlos buscando una buena experiencia del usuario, aunque nos toca un poco más de trabajo :(.

drawable-hdpi: Densidad Alta 72x72
drawable-ldpi:   Densidad Baja 36x36
drawable-mdpi: Densidad media 48x48
        Puedes encontrar más detalle, de este punto, en la guía de desarrollo Android en Soporte para varias pantallas

layout: Aquí colocamos los recursos que tienen que ver con la parte de la arquitectura de la interfaz usuario

values: Aquí se define las cadenas, arreglos de cadenas y plurales para hacer referencia desde cualquier lado de la aplicación utilizando por ejemplo un diseño xml. Para acceder a estos recursos se utilizan los id string, array, plurals.
Puedes encontrar más detalle, de este punto, en la guía de desarrollo Android en Resources.

Important Files.

     Android manifest file:

En toda aplicación o proyecto hecho para Android debe contener un archivo con el nombre AndroidManifest.xml y debe encontrarse en el directorio raíz de la aplicación. En este archivo se colocará la información esencial sobre la aplicación que será usada en el momento de la ejecución del mismo.
Otros puntos que se encontrarán en este archivo:
      • El nombre del paquete java que usará la aplicación y que será usado como identificador único.
      • Se describen componentes como actividades, servicios, receptores, proveedores de contenido. Los nombres de las clases que serán implementada por cada componente.
      • Se determinan los procesos que serán usados por los componentes de la aplicación.
      • Se declaran los permisos necesarios para la iteracción con el sistema otras aplicaciones y opciones del sistema que requierieran un permiso u viceversa.
      • Se declara el nivel mínimo de la API de Android que requiere la aplicación.

Puedes encontrar más detalle, de este punto, en la guía de desarrollo Android en AndroidManifest.html
       
                      El resto de los archivos no serán usados por nosotros.

    Hasta aquí les dejo un vistazo de lo que es la estructura de un proyecto Android, como comenté al inicio, cada detalle aplica de forma general a un IDE, pero les muestro uno generado en Netbeans.
Pueden encontrar más detalle de la estructura de un proyecto Android en Proyecto Android - Sitio Oficial de Programación.


El corazón alegre hermosea el rostro;
mas por el dolor del corazón el espíritu se abate.
Proverbios 15:13

Leer más...

Configurar Netbeans para usar SDK Android

Después de haber mostrado como instalar el JDK para java,SDK Android e instalar netbeans, mostraremos como agregar el SDK en netbeans.
Instalar JDK Linux
Instalar SDK Android Fedora.
Instalar Netbeans en Linux

Luego de haber realizado los 3 pasos procedemos a configurar netbeans.

1 - Iniciar Netbeans.

2 - Ir al menú Tools y seguido del sub-menú Plugins.












3 - Buscamos la pestaña Settings y presionamos el botón Add y llenamos los campos de la siguiente forma











y presioamos el botón OK













4 - Luego nos movemos a la pestaña Available Plugins y presionamos el botón Reload Catalog, esto cargará los plugins para android. De la lista que nos muestra seleccionamos:

  • Android.
  • Android Test Runner for Netbeans 7.0+.
Y presionamos el botón Install.














5 - Nos saldrá una ventana con la lista de los plugins a instalar, presionamos el botón Next.
















6 - Aceptamos los términos y presionamos el botón Install.

















7 - Nos saldrá una advertencia sobre la verificación de los certificados, presionamos el botón Continue.
















8 - Y ya nos debe mostrar el mensaje de Instalación completada.

















Hasta aquí hemos agregados los plugins a netbeans para poder crear proyectos de tipo Android, lo que sigue es agregar el SDK Android a Netbeans. Para esto procederemos con los siguientes pasos.

1 - Ir al menú Tools y seguido al sub-menú Options.

 















3 - En la pestaña Miscellaneus le damos clic al botón Browse para buscar la ruta donde instalamos el SDK y presionamos el botón OK.

 















Hasta aquí hemos hecho que netbeans puede usar junto con los proyectos de tipo Android el SDK.

Ahora me imagino que todos quieren saber, al igual que yo, si nuestra instalación funciona.
Así que procederemos a crear un proyecto de tipo Android.

1 - Nos vamos al menú File seguido por el sub-menú New Project y de ahí en la sección Categories seleccionamos Android y de la sección Projects seleccionamos Android Projects y presionamos el botón Next.













2 - Llenaremos la información del proyecto de la siguiente manera:

  • Project Name: ejemplo1
  • Package Name: com.fuentesjava.android (el nombre del paquete debe estar compuesto por dos partes mínimo, netbeans se lo atribuye como un bug de Android).
  • Tarjet Platform: Android 4.0.3.

Los demás campos que no menciono pueden quedarse con el valor que ya tienen por defecto, y presionamos el botón Finish
   
     
   











Al llegar hasta este punto ya tenemos el proyecto creado, pero posiblmente les aparezca el error Package R does not exist.
Solución:
 Para corregir este error no debemos realizar la importación de la clase.

 La solución es ir sobre el proyecto creado y darle clic con el botón derecho del mouse y escoger Clean and Build.

Si por algún caso ya habíamos hecho la importación, debemos primero borrar la línea import android.R antes de escoger Clean and Build.

Bueno hasta aquí ya tenemos el proyecto android creado listo para poder ejecutarse solo debemos presionar la tecla F6 o la opción Run del proyecto.

Porque no envió a su Hijo al mundo para condenar al mundo, sino para que el mundo sea salvo por él. Juan 3:17
Leer más...

Instalar SDK Android Linux

En esta entrada voy a mostrar como podemos instalar el SDK para android en Fedora 16.






1 - Vamos a la página Descargar SDK. Y buscamos :
       Linux (i386) android-sdk_r16-linux.tgz

2 - Descomprimir el archivo descargado que tiene extensión tgz:
         tar zxf android-sdk_r16-linux.tgz

3 - Nos pasamos a la carpeta android-sdk-linux

4 - Decidir si queremos instalarlo usando la pantalla gráfica o de manera silenciosa.
      Si decide hacerlo de manera silenciosa valla al paso 5.
      Si decide hacerlo usando la pantalla gráfica salte al paso 6.

5 - Ejecutar tools/android update sdk --no-ui y esperar que se realice la instalación, esta instalación puede demorar.

6 - Ejecutar tools/android y esperar unos segundos a que cargue la pantalla gráfica.
   Para saber que se debe seleccionar, seguimos las Recomendaciones.

  • SDK Tools.
  • SDK Platform-tools.
  • SDK platform.
  • Documentation.
  • Samples.
  • USB Driver.
  • Google Api.
  • Additional SDK Platforms.

  Al tener ya    instalado el SDK, vamos a crear un Dispositivo Virtual Android (AVD).
Si lo hicimos de forma silenciosa pasamos al paso 1, si lo hicimos de con la pantalla gráfica saltamos al paso 2.

1 - Ejecutamos tools/android .

2 - Buscamos el menú Tools y seleccionamos Manage AVDs. Con este paso nos muestra una ventana con el título Android Virtual Device Manager.









3 - Nos saldrá una ventana con el título Create new Android Virtual Device Manager(AVD), Presionamos el botón New.
 Nos saldrá la siguiente ventana:












4 - Llenar el campo Name, este campo contiene el nombre que le daremos a nuestro dispositivo virtual, podemos ponerle AVDPrueba.

5 - Desplegar la lista en el campo Target para seleccionar la versión de Android que queremos utilizar.












6 - Presionamos el botón Create AVD.
Listo ya tenemos instalado SDK.


Si su sistema operativo es una versión para 64bit y te sale el error que se coloca al final deben instalar ciertas librerías de 32 bit de la siguiente manera:

Línea que corrigue el error:
yum install zlib-devel.i686 ncurses-devel.i686 glibc-devel.i686 libstdc++.i686 libXrandr.i68 glibc.i686 libX11-devel.i686 libXrender.i686 


Error que muestra en la consola al ejecutar el proyecto:



java.io.IOException: Cannot run program "/home/arielb/android-sdk-linux/platform-tools/aapt" (in directory "/home/arielb/NetBeansProjects/proyecto1"): java.io.IOException: error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)






En la siguiente entrada mostraremos como configurar netbeans para usar SDK Android.
Leer más...

Instalar Netbeans en Linux













Luego de haber instalado JDK y configurado las variables de entornos.
Podemos proceder a la instalación de Netbeans.

1 - Entramos al sitio de Netbeans y descargamos la versión actual.

2 - Luego de haber descargado la versión actual, como usuario le damos los permisos necesarios:
chmod a+x netbeans-*-linux.sh

3 - Ejecutamos sh netbeans-*-javaee-linux.sh 4 - Seleccionamos el contenedor que necesitamos entre Tomcat y glassfish, si gustan puede ser ambos y presionamos el botón siguiente.










5 - Aceptamos el contrato









6 - Aceptamos el contrato de la instalación de JUnit










7 - Verificamos si el JDK seleccionado es que el que necesitamos y presionamos el botón siguiente.










8 - Verificamos la ubicación para la instalación de glassfish y presionamos el botón siguiente.









9 - Revisamos el resumen de la instalación a realizar y luego presionamos el botón Instalar.









10 - Esperamos unos minutos mientras se realiza la instalación.









11 - Presionamos el botón Finalizar









12 - Buscamos el menú Programación y econtraremos Netbeans y pondemos iniciarlo.








13 - Y ya tenemos netbeans listo para programar.
Leer más...

Instalar VirtualBox Fedora

En esta entrada mostraremos como instalar VirtualBox 
en Fedora.
1 - Pasarnos al usuario root
su
2 - Cambiarnos al directorio de 
repositorios Fedora
cd /etc/yum.repos.d/
3 - Decargar el archivo.
wget http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo
4 - Realizar la actualización
yum update
5 - Realizar la instalación de Virtualbox
yum install VirtualBox-4.1.x86_64 
6 - Realizar la instalaciòn de gcc 
yum install binutils gcc make patch libgomp glibc-headers glibc-devel kernel-headers kernel-devel dkms
7 - Reinstlamos
/etc/init.d/vboxdrv setup
8 - Ir al menú e iniciar VirtualBox.
Leer más...

Instalar JDK Linux


Estuve instalando jdk para Debian y Fedora y voy a colocar lo que hice tanto para instalar el JDK y configurar la variable JAVA_HOME:

Debian:
1 - Entrar el sitio de Oracle y descargar la versión que vamos a usar.
      Aquí están todas:
        Índice de descarga
     y acá la que voy a usar en esta entrada
        jdk-6u30-download-1377139
2 - Utilizando el comando su nos identificamos como root.

3 - Crear el directorio java:
     mkdir /usr/java
4 - Le damos permiso al usuario como dueño:
       Con la siguiente instrucción le decimos que cambie el nuevo dueño a arielb 
       para el directorio /usr/java/ y que nos muestre un mensaje de lo que cambia (-c) 
       y que lo haga de forma recursiva (-R).
chown -cR arielb /usr/java/
    Recuerda cambiar arielb por tú usuario.
5 - Vamos a colocar el archivo binario que descargamos del sitio de Oracle.
      Con esta instrucción le decimos que nos copie(cp) y nos muestre(-v) lo que está copiando.
cp -v /home/arielb/Descargas/jdk-6u30-linux-x64.bin /usr/java/
6 - El siguiente paso es darle permiso de ejecución:
     Con esta instrucción le decimos que le de permiso(chmod) de ejecución(x) al binario para todos los usuarios(a).
     chmod a+x /usr/java/jdk-6u30-linux-x64.bin
7 - Nos colocamos en el directorio donde está el binario.
      cd /usr/java/
8 - Ejecutamos el binario.
    ./jdk-6u30-linux-x64.bin

9 - Como último paso editaremos el archivo bashrc tanto del usuario root como de nuestro usuario, esto lo haremos para que crear la variable JAVA_HOME de forma permanente.
Primero modificamos nuestro usuario:
   gedit /home/arielb/.bashrc
Al abrir el archivo colocamos lo siguiente:
   export JAVA_HOME=/usr/java/jdk1.6.0_30/
   export PATH=$JAVA_HOME/bin:$PATH



Luego para verificar si las variables fueron bien configuradas puedes escribir:
java -version


Resultado:
java version "1.6.0_30"
Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
Java HotSpot(TM) 64-Bit Server VM (build 20.5-b03, mixed mode)



Fedora:

1 - Descargamos  del sitio de Oracle
     jdk-6u30
2 -  Cambiamos al usuario root:
      su
3 - Le damos los permisos necesarios al archivo:
     chmod a+x  jdk-6u30-linux-x64-rpm.bin
4 -  Ejecutamos:
      ./jdk-6u30-linux-x64-rpm.bin

5 - Configurar las variables JAVa_HOME y PATH.
Para que sea para todos los usuarios lo podemos abriendo el archivo con vi, de la siguiente forma:
vi .bash_profile   //a nivel del usuario
y agregamos:

export JAVA_HOME=/usr/java/jdk1.6.0_30/
export PATH=$JAVA_HOME/bin:$PATH




Leer más...

JasperReport - Agregar Font Microsoft

En esta entrada quiero mostrar como solucionar un error que sale al tratar de cargar un pdf usando jasperreport en linux.
Este error se da por la falta de unas fuentes de microsoft, el conjunto de estas fuentes es conocida como msttcorefonts.

El error que muestra es:
net.sf.jasperreports.engine.util.JRFontNotFoundException: Font 'Times New Roman' is not available to the JVM. See the Javadoc for more details.

En esta entrada mostraré la solución para debian:

Paso 1: Utilizar una ventana de comando como root e irse a  /etc/apt/sources.list , pueden usar vi, gedit el que sea de su gusto.
Paso 2: Agregar deb http://ftp.de.debian.org/debian lenny main contrib, y guardar el cambios.
Paso 3: Escribir  apt-get update
Paso 4: Escribir apt-get install ttf-mscorefonts-installer

Esto solucionará el error mostrado anteriormente.
Leer más...

Jar externos con netbeans

Cuando programamos difícilmente nos escapamos de utilizar un jar , ya sea para la conexión a la base datos, leer xml,  enviar correos en fin, y si no estamos muy prácticos con el IDE, cualquiera que sea, no vamos a saber donde se añade. Es por eso que estaré creando una entrada que mostrará como agregarlo en Netbeans y para agregarlo con Eclipse.

Empezaré con Netbeans:


Para utilizar un jar externo en netbean hay que agregarlo al IDE como una biblioteca.
1 – Ir al menú Tools/Libraries.












El resultado del menú anterior es el Administrador de Biblioteca, en donde nos muestras las bibliotecas agregadas, en defecto, por el IDE y en adelante las que agregaremos nosotros.
2 –El siguiente paso es ir al botón New Library
El resultado del paso anterior es la pantalla para darle un nombre a la biblioteca que vamos agregar. Este es un nombre simbólico que solo es para guía al buscar y diferenciarla de las demás.
   








3 - Luego de colocarle el nombre que consideremos, presionamos OK.
















El paso anterior nos lleva nuevamente al Administrador de Bibliotecas con el nombre creado pero sin ninguna referencia a ningún jar.
También podemos observar en la imagen que se habilitaron 3 pestañas, la que usaremos es la de Classpath.
















4 – El siguiente paso es presionar el botón Add JAR/Folder y seleccionar el jar en la ruta que se encuentra. Es preferible que el jar se encuentre en una ruta sin espacios.
El resultado del paso anterior es donde nos saldrá la sección de Classpath con las rutas absolutas del o los jar agregados.













Ya con los 5 pasos anteriores hemos creado una referencia a nivel del IDE. Pero esto no es suficiente para que podamos usar las clases que se encuentran en el jar.
Lo siguiente que haremos es agregar la referencia de la biblioteca al proyecto.
1 – Buscar la carpeta de nombre Libraries creada por defecto por el IDE, presionar el botón derecho sobre la carpeta e ir al menú Add Library














El paso anterior nos llevará a una pantalla que contiene la lista de las bibliotecas disponibles.
2 – Seleccionar la biblioteca que ya hemos creado y presionar el botón Add Library.




















El resultado final será la biblioteca que habíamos creado anteriormente ya está adjunta al proyecto.
Con esto ya podemos usar las clases que se encuentran en el o los jar.











Leer más...

Blob - Insertar y Actualizar Archivo en campo blob. Oracle, Mysql

En ocaciones nos vemos en la necesidad de guardar una imagen, un pdf, etc. en la base datos y  así mismo extraerlo, por lo tanto en esta entrada les mostraré de una forma genérica como hacerlo, el código fuente fue probado en Oracle y Mysql, trataré de probarlo en postgresql. Las versiones de los drivers en las distintas base datos son:
- Oracle: ojdbc14.jar.
- Mysql : mysql-connector-java-5.1.18-bin.jar
Cuando escribo "genérica" me refiero a no usar una clase especifica del driver correspondiente  a la base datos.
Para mostrar como hacerlo he creado un grupo de clases que son:
- Conexion: Esta clase se encarga de la parte de la conexión.
- Archivos: Esta clase contiene dos métodos escribir y obtenerArchivo, que son los encargados de escribir el archivo en la tabla y de obtener el archivo de la tabla en el orden correspondiente.
- ObtenerPropiedades: Esta clase fue creada para leer el archivo de propiedades. 
Las propiedades  contienen los datos tanto como la clase de conexión del driver y los datos necesarios de  acceso como URL, usuario, contraseña.
- PropertyException:Esta clase fue creada para manejar las excepciones si no se encuentra  alguna propiedad requerida. 
- Datosblob: Esta clase fue creada como clase principal o de ejecución. En donde para guardar  un archivo nos mostrará un ventana de selección de archivo.
Exported from Notepad++
public int escribir(String nombre, String rutaArchivo) { InputStream entrada = null; PreparedStatement pst = null; int ingresados = 0; try { File archivo; String insert; establecerConexion(); getCon().setAutoCommit(false); insert = "Insert into ARCHIVOS values(?,?)"; pst = getCon().prepareStatement(insert); archivo = new File(rutaArchivo); entrada = new FileInputStream(archivo); pst.setString(1, nombre.toUpperCase()); pst.setBinaryStream(2, entrada, (int) archivo.length()); ingresados = pst.executeUpdate(); getCon().commit(); } catch (FileNotFoundException ex) { Logger.getLogger(Archivos.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(Archivos.class.getName()).log(Level.SEVERE, null, ex); } catch (SQLException ex) { Logger.getLogger(Archivos.class.getName()).log(Level.SEVERE, null, ex); } finally { try { if (entrada != null) { entrada.close(); } } catch (IOException ex) { Logger.getLogger(Archivos.class.getName()).log(Level.SEVERE, null, ex); } try { if (pst != null) { pst.close(); } } catch (SQLException ex) { Logger.getLogger(Archivos.class.getName()).log(Level.SEVERE, null, ex); } } return ingresados; } public boolean obtenerArchivo(String nombreArchivoBuscar, String nombreArchivoSalida) { InputStream salida = null; try { PreparedStatement pst; ResultSet rs; Blob blob; FileOutputStream archivoSalida; String select; byte[] arreglo; int byteLeidos = 0; establecerConexion(); getCon().setAutoCommit(false); select = "select ARCHIVO from ARCHIVOS WHERE NOMBRE=?"; pst = getCon().prepareStatement(select); pst.setString(1, nombreArchivoBuscar); rs = pst.executeQuery(); if (rs != null) { rs.next(); blob = rs.getBlob(1); salida = blob.getBinaryStream(); arreglo = new byte[2048]; archivoSalida = new FileOutputStream(nombreArchivoSalida); while ((byteLeidos = salida.read(arreglo)) > -1) { archivoSalida.write(arreglo, 0, byteLeidos); } return true; } else { return false; } } catch (IOException ex) { Logger.getLogger(Datosblob.class.getName()).log(Level.SEVERE, null, ex); return false; } catch (SQLException ex) { Logger.getLogger(Datosblob.class.getName()).log(Level.SEVERE, null, ex); return false; } finally { try { if (salida != null) { salida.close(); } } catch (IOException ex) { Logger.getLogger(Datosblob.class.getName()).log(Level.SEVERE, null, ex); } } }
Adjunto los fuentes utilizados.


El que no ama,no ha conocido a Dios;
porque Dios es amor
1ra Juan 4:8






Descargar Fuentes
Leer más...