Buscar en el Blog

miércoles, 21 de abril de 2010

Lectura de un archivo de propiedades que se encuentra dentro de un mismo JAR

El siguiente código de Java sirve para leer un archivo de propiedades que se encuentra en un mismo JAR. Por ejemplo, sí se tiene el archivo de Java my-app-0.0.1.jar y dentro de éste un archivo de propiedades de nombre config.properties como se muestra a continuación:

my-app-0.0.1.jar
|_ META-INF
   |_ config.properties

El siguiente código me permitirá leer el archivo de propiedades y obtener una propiedad del mismo:

try {

    InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("META-INF/config.properties");
    Properties props = new Properties();
    String wsURL = null;    

    if (inputStream != null) {
        props.load(inputStream);
        wsURL = props.getProperty("myApp.webServiceURL");
        inputStream.close();   
    }
} catch(IOException e) {}

Convertir un objeto GregorianCalendar a XMLGregorianCalendar

Cuando se trabaja con servicios web en Java las fechas son manejadas a través de instancias de la clase javax.xml.datatype.XMLGregorianCalendar. Sin embargo, generalmente se trabaja con instancias de la clase java.util.GregorianCalendar para trabajar con fechas.

Al generar un client stub para un servicio web usando Apache Axis los tipos de dato fecha del WSDL se mapean a objetos del tipo XMLGregorianCalendar. Sí se dispone de un objeto GregorianCalendar con el siguiente código se puede realizar la conversión a un objeto del tipo XMLGregorianCalendar.

try {

GregorianCalendar fechaX = new GregorianCalendar();
fechaX.setTime(objetoTipoDate);
XMLGregorianCalendar fechaXML = DatatypeFactory.newInstance().newXMLGregorianCalendar(fechaX);

} catch (DatatypeConfigurationException e) {}

jueves, 15 de abril de 2010

James Gosling abandona Oracle

James Gosling, conocido como el padre de Java, ha decidido abandonar Oracle, después de que el proceso de transición entre Sun y Oracle finalizó hace un par de meses. Realmente es preocupante como Oracle está perdiendo a personas claves que aportaron y trabajaron por la tecnología Java. James, menciona en su blog lo siguiente:

"Yes, indeed, the rumors are true: I resigned from Oracle a week ago (April 2nd). I apologize to everyone in St Petersburg who came to TechDays on Thursday expecting to hear from me. I really hated not being there. As to why I left, it's difficult to answer: Just about anything I could say that would be accurate and honest would do more harm than good. The hardest part is no longer being with all the great people I've had the privilege to work with over the years. I don't know what I'm going to do next, other than take some time off before I start job hunting."

Good Luck James, 




miércoles, 14 de abril de 2010

Índices de popularidad de lenguajes de programación TIOBE - ABRIL 2010

TIOBE, ha publicado sus índices de popularidad de lenguajes de programación para lo que va de éste mes [1]. Es preocupante apreciar como el lenguaje de programación Java ha ocupado el 2do lugar, y su tendencia en popularidad está a la baja. Sinceramente desconozco cómo sea la forma de trabajar y operar de Oracle, pero lo que sí me preocupa es que está perdiendo poco a poco talentos clave que pertenecían al difunto Sun, como son Sang Shin, Jonathan I. Schwartz, por nombrar algunos. Adicional a ésto leí también que James Gosling, "Java Father" ha decidido abandonar el JCP (Java Community Process) mencionando que se ha convertido en un infierno político ("political nightmare")[2]. Comparto la tabla de índices de popularidad de TIOBE y las tendencias hasta Abril 2010.




[1] http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
[2] http://www.theserverside.com/news/thread.tss?thread_id=59920

jueves, 1 de abril de 2010

Conexión a una base de datos Oracle usando JDBC OCI

En el siguiente artículo explico cómo configurar Mule para conectarse a una base de datos Oracle usando las librerías de Oracle Instant Client.

1. Descargar Oracle Instant Client para la plataforma sobre la cuál se va a trabajar.
    http://www.oracle.com/technology/software/tech/oci/instantclient/index.html

   NOTA: Para Oracle 10g sobre plataforma Windows, descargar del siguiente link:
   http://download.oracle.com/otn/nt/instantclient/10204/instantclient-basic-win32-10.2.0.4.zip

2. Una vez descargado, descomprimir el archivo.
3. Copiar las siguientes DLLs al directorio MULE_HOME/lib/boot
  • oraociei10.dll
  • oci.dll
  • oraocijdbc10.dll
  • orannzsbb10.dll
4. Copiar el JDBC ojdbc14.jar al directorio MULE_HOME/lib/user
5. Incluir el Spring Bean y el conector JDBC en el archivo de configuración de MULE.


<?xml version="1.0" encoding="UTF-8"?>
<mule 
... >
<spring:bean id="oracleDataSource" class="oracle.jdbc.pool.OracleOCIConnectionPool" destroy-method="close">
        <spring:property name="user" value="user"/>
        <spring:property name="password" value="password"/>
        <spring:property name="URL" value="jdbc:oracle:oci:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.10.196)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = DBNAME)))"/>
        <spring:property name="poolConfig" ref="oraclePoolProperties"/>

    </spring:bean>

    <spring:bean id="oraclePoolProperties"
                 class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <spring:property name="properties">
            <spring:props>
                <spring:prop key="connpool_min_limit">1</spring:prop>
                <spring:prop key="connpool_max_limit">5</spring:prop>
                <spring:prop key="connpool_increment">2</spring:prop>
                <spring:prop key="connpool_timeout">10</spring:prop>
                <spring:prop key="connpool_nowait">true</spring:prop>
            </spring:props>
        </spring:property>
    </spring:bean>
...
<jdbc:connector name="OracleJDBCOCIConnector" dataSource-ref="oracleDataSource">
    </jdbc:connector>
...
</mule>