Java Expert....Java/Open Source Addict

Redes Sociales

twitterlinkedinrss feedemail youtube

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

jueves, 18 de febrero de 2016

CRUD Java Basico sin BDD


Estimad@s amig@s,

En este post se realizará un ejemplo básico de manejo de operaciones CRUD pero sin base de datos todo manejado a través de collections y bloques estáticos. La aplicación se utilizará es para manejar la compra de vehículos.El proyecto definirá la siguiente arquitectura:

  • Tres capas lógicas representadas en tres packages basados en un modelo MVC
  • Una clase llamada MemoriaBDD.java que representará nuestra BDD
Cada capa lógica o package tiene su ámbito basado en la siguiente especificación de patrón:
  •  El package modelo representará los objetos persistentes o tablas de la BDD .
  • El package controlador contendrá toda la lógica de negocio, en esta caso las operaciones CRUD y demás.
  • El package vista contendrá las interfaces o formularios que el usuario final llenará o interactuará, en este caso es una clase llamada Principal que recepta los datos desde consola.
 Comenzaré explicando la clase MemoriaBDD.java que se encuentra en el package modelo y que representa nuestra Base de Datos. A continuación se muestra la misma.

MemoriaBdd.java
[code] /** * Clase que representa la badse de Datos * @author martosfre * @see www.matoosfe.com */ public class MemoriaBDD { public static Set<vehiculo> vehiculos; public static Set<cliente> clientes; public static Set<factura> facturas; static{ //Inicilializar Facturas facturas = new HashSet<factura>(); //Inicializar Vehiculos vehiculos = new HashSet<vehiculo>(); Moto motoUno = new Moto("azul","PBB-987","QMC","2007", new BigDecimal(1567.45d)); Moto motoDos = new Moto("verde","PAL-747","HONDA","2010", new BigDecimal(1000.45d)); vehiculos.add(motoUno); vehiculos.add(motoDos); Trailer trailerUno = new Trailer("rojo","UBJ-098","MERCEDES BENZ","2005", new BigDecimal(144000)); Trailer trailerDos = new Trailer("azul","XJT-233","MERCEDES BENZ","2004", new BigDecimal(124000)); vehiculos.add(trailerUno); vehiculos.add(trailerDos); Buseta busUno = new Buseta("amarilla","GYT-9889","HYUNDAI","2002", new BigDecimal(75000)); Buseta busDos = new Buseta("amarilla","PKT-956","CHEVROLET","1999", new BigDecimal(55000)); vehiculos.add(busUno); vehiculos.add(busDos); //Inicializar clientes clientes = new HashSet<cliente>(); Cliente clienteUno = new Cliente("Vazquez", "Juan", "1111111189", "Las Casas", "098890988"); Cliente clienteDos = new Cliente("Sanchez", "Luis", "1234567890", "El Dorado", "097090988"); Cliente clienteTres = new Cliente("Prado", "Maria Fernanda", "222222220", "Carapungo", "2345659"); clientes.add(clienteUno); clientes.add(clienteDos); clientes.add(clienteTres); } } [/code]En esta clase se hizo uso de bloque estático que permite inicializar objetos o ejecutar procesos automáticos. Para este caso permitirá inicializar los objetos o “tablas” de nuestro BDD pero en memoria es decir luego de que la aplicación se cierre todas las operaciones o los nuevos registros (objetos colocados en cada collection adicional a los que ya se inicilizan) se perderán.
Ahora voy a explicar la lógica de negocio la cual será implementada en el package controlador en la clases AdminFactura.java, AdminVehiculo.java, AdminCliente.javalas cuales contendrán todas los métodos de negocio. A continuación se muestra las clases en cuestión. AdminCliente.java [code] package com.matoosfe.controlador; import com.matoosfe.modelo.Cliente; /** * Esta clase permitirá manejar toda la lógica de negocio relacionada con clientes * @author martosfre * @see www.matoosfe.com */ public class AdminCliente { /** * Método para guardar un cliente * @param cliente * @return */ public static String guardarCliente(Cliente cliente){ MemoriaBDD.clientes.add(cliente); return "Registro Guardado Satisfactoriamente"; } /** * Método para buscar un cliente por la cédula de identidad * @param cedIn * @return */ public static Cliente buscarClienteByCedula(String cedIn) { Cliente clienteDev = null; for(Cliente cli: MemoriaBDD.clientes){ if(cli.getCedula().equals(cedIn)){ clienteDev = cli; break; } } return clienteDev; } /** * Método para actualizar un cliente * @param cedIn * @param clienteAct * @return */ public static String actualizarCliente(String cedIn, Cliente clienteAct){ guardarCliente(clienteAct); return "Registro actualizado Satisfactoriamente"; } /** * Método para eliminar un cliente * @param cedIn * @return */ public static String eliminarCliente(String cedIn) { Cliente clienteOri = buscarClienteByCedula(cedIn); boolean confEli = MemoriaBDD.clientes.remove(clienteOri); if(confEli){ return "Registro eliminado Satisfactoriamente"; }else{ return "No se pudo eliminar el cliente"; } } } [/code] AdminVehiculo.java [code] package com.matoosfe.controlador; import com.matoosfe.modelo.Vehiculo; /** * * Esta clase permite manipular todas las operaciones relacionadas con Vehiculo * @author martosfre * @see www.matoosfe.com * Aug 18, 2010 */ public class AdminVehiculo { /** * Método para guardar un vehículo * @param vehiculoGen * @return */ public String guardarVehiculo(Vehiculo vehiculoGen){ MemoriaBDD.vehiculos.add(vehiculoGen); return "Registro Guardado Satisfactoriamente"; } /** * Método para buscar un vehículo de acuerdo a la placa y tipo * @param placa * @param tipo * @return */ public static Vehiculo buscarVehiculoPorPlaca(String placa) { Vehiculo vehDev = null; for (Vehiculo veh : MemoriaBDD.vehiculos) { if(veh.getPlaca().equals(placa)){ vehDev = veh; break; } } return vehDev; } } [/code] AdminFactura.java [code] package com.matoosfe.controlador; import java.util.ArrayList; import java.util.List; import com.matoosfe.modelo.Factura; /** * * Esta clase permitirá manejar todas las operaciones relacionadas con Factura * @author martosfre * @see www.matoosfe.com * Aug 18, 2010 */ public class AdminFactura { /** * Método para guardar una factura * @param factura * @return */ public static String guardarFactura(Factura factura){ MemoriaBDD.facturas.add(factura); return "Factura registrada Exitosamente"; } /** * Métodos para buscar facturas por cliente de acuerdo * a la cédula * @param cedCliente * @return */ public static List<factura> buscarFacturasPorCliente(String cedCliente){ List<factura> facturasCliente = new ArrayList<factura>(); for (Factura factura : MemoriaBDD.facturas) { if(factura.getCliente().getCedula().equals(cedCliente)){ facturasCliente.add(factura); } } return facturasCliente; } } [/code] En estas clases se puede apreciar que todas las operaciones CRUD están relacionadas directamente con la clase MemoriaBDD.java en sus atributos representados como collections que para este caso son las tablas de la base de datos. Por último se explicará la clase Formulario.java que se encuentra en el package vista que representa el formulario que será manipulado por el usuario final.
Formulario.java [code] package com.matoosfe.vista; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; import com.matoosfe.controlador.AdminCliente; import com.matoosfe.controlador.AdminFactura; import com.matoosfe.controlador.AdminVehiculo; import com.matoosfe.modelo.Cliente; import com.matoosfe.modelo.DetalleFactura; import com.matoosfe.modelo.Factura; import com.matoosfe.modelo.Vehiculo; /** * * Esta clase representa el formulario de ingreso de la información * para la gestión de la compra de los vehículos * @author martosfre * @see www.matoosfe.com * Aug 18, 2010 */ public class Formulario { public void registrarFactura(){ //Recibo los datos del vehiculos que son los detalles, cliente BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Ingrese el cliente que va a comprar:"); try { String cedIn = br.readLine(); Cliente cliente = AdminCliente.buscarClienteByCedula(cedIn); Factura facturaCompra = new Factura(); List<detallefactura> detallesFactura = new ArrayList<detallefactura>(); BigDecimal subtotal = new BigDecimal(0.0d); BigDecimal total = new BigDecimal(0.0d); System.out.println("\n*************DATOS VEHICULO************"); String placaVeh = "1"; //Registro los vehículos que se vayan a comprar while(!placaVeh.equals("0")){ System.out.print("Ingrese vehículo codigo:"); placaVeh = br.readLine(); //Buscamos al vehículo para registrarlo Vehiculo vehTmp = AdminVehiculo.buscarVehiculoPorPlaca(placaVeh); //Verificamos que si se encontró el vehiculo guardamos el detalle if(vehTmp != null){ //Ingresando cada detalle DetalleFactura detalleTmp = new DetalleFactura(); detalleTmp.setCantidad(1); detalleTmp.setFactura(facturaCompra); detalleTmp.setVehiculo(vehTmp); detalleTmp.setPrecio(vehTmp.getPrecio()); detallesFactura.add(detalleTmp); subtotal = subtotal.add(vehTmp.getPrecio()); } } //Añado detalles y calculo el IVA facturaCompra.setDetalles(detallesFactura); total = subtotal.add(subtotal.multiply(new BigDecimal(0.12d))); //Registro la factura siempre que haya minimo un detalle if(facturaCompra.getDetalles().size() &gt; 1){ facturaCompra.setCliente(cliente); facturaCompra.setFechaCompra(new Date()); facturaCompra.setNumeroFactura(String.valueOf(Math.random())); facturaCompra.setDetalles(detallesFactura); facturaCompra.setSubtotal(subtotal); facturaCompra.setTotal(total); } //Guardamos la factura AdminFactura.guardarFactura(facturaCompra); //Imprimir Registro Compra System.out.println("\n*************DATOS COMPRA************"); System.out.println("Cliente:" + cliente.getNombres() + " " + cliente.getApellidos()); for (Factura fac : AdminFactura.buscarFacturasPorCliente(cliente.getCedula())) { System.out.println("Factura:" + fac.getNumeroFactura()); System.out.println("Total Factura:" + fac.getTotal()); //Imprimir Vehiculos comprados for (DetalleFactura det : fac.getDetalles()) { System.out.println("Vehiculo Marca:" + det.getVehiculo().getMarca()); System.out.println("Vehiculo Modelo:" + det.getVehiculo().getModelo()); System.out.println("Vehiculo Placa:" + det.getVehiculo().getPlaca()); } } } catch (NumberFormatException e) { System.out.println("Error Formato"); e.printStackTrace(); } catch (IOException e) { System.out.println("Error Lectura"); e.printStackTrace(); } //Aqui ya tengo el cliente y todos los vehiculos que quiere comprar } public static void main(String[] args) { Formulario pr = new Formulario(); pr.registrarFactura(); } } [/code]
En esta clase se buscará al cliente que va a comprar el vehículo, luego se registrarán todos los vehículos que se comprarán como un ítem del detalle, asociando al final todos los detalles junto con el cliente a la factura que se guardará o procesará.&

Espero les sirve de mucho, no olviden comentar, compartir. Además les recordamos revisar y subscribirse al canal de Youtube. Saludos

Split con .


Estimados amig@s

Al utilizar el método split sobre una cadena para obtener el conjunto de valores por una ocurrencia me tope con el problema que al utilizar el caracter  “.” no funcionaba.  Al analizar el método se comprobó que debido a que el método utiliza una expresión regular regex para buscar la ocurrencia no se podia hacerlo normalmente por que el . es utilizado como un delimitador; se tuvo que añadir el caracter de escape \\

Forma Normal – Incorrecta
[code] String cadena = "1.1.1"; String [] secuencia = cadena.split("."); //No obtiene nada [/code]
Forma Correcta 
[code] String cadena = "1.1.1"; String [] secuencia = cadena.split("\\."); //Obtiene valor [/code]

Consideraciones Migración Hibernate a EclipseLink


Estimad@s amigos,

Actualmente existen varias capas de persistencia que se pueden utilizar ya sea como proveedores de persistencia en JPA o independientes entre las cuales se puede citar a : Hibernate, Toplink, DataNucleos y EclipseLink entre otras.  Las mismas que presentan variaciones un poco sensibles al optar por cambiar de una a otra capa de persistencia, en esta oportunidad se enumerará algunas de las consideraciones que se debe tener en cuenta al migrar de Hibernate a EclipseLink entre las cuales se tiene las siguientes:
  • En Hibernate se puede escribir HQL directamente sin necesidad de poner un alias al objeto cuando se requiere recuperar alguna atributo, mientras que en EclipseLink es obligatorio. 

  • Hibernate [code] Query consulta = sesion.createQuery("SELECT distinct idSuc_fk FROM MatSegEmpresaUsuarioInfo"); [/code]
    EclipseLink [code] Query consulta = sesion.createQuery("SELECT distinct seg.idSuc_fk FROM MatSegEmpresaUsuarioInfo seg"); [/code]
  • En Hibernate se puede escribir HQL para recuperar todas las registros (Select *) obviando la instrucción Select mientras que en EclipseLink se debe colocar.

  • Hibernate [code]Query consulta = sesion.createQuery("from MatSegEmpresaUsuarioInfo usu");[/code] EclipseLink [code]Query consulta = sesion.createQuery("Select usu from MatSegEmpresaUsuarioInfo usu");[/code]
  • En Hibernate se puede utilizar la propiedad false para mapear automáticamente las entidades mientras que en EclipseLink se debe listarlas.
  • En Hibernate el uso de List para relacionar entidades requiere anotaciones adicionales a la relación mientras que en EclipseLink son naturales.

Espero les sea de mucha utilidad esta ayuda, no olviden compartirlo, dar sus comentarios y seguirnos en las redes sociales: facebook, youtube, twitter.

Problema con Estilo Plugin Social Facebook


Estimad@s amig@s,

Al momento de integrar el plugin social de facebook en nuestro sitio web, pueden tener problemas debido a que internamente el plugin crea dentro del div una sección de span que  afecta al diseño del sitio, para lo cual se tiene que modificar el estilo de la siguiente forma: [code] .fb_iframe_widget span { vertical-align: text-bottom !important; height:0px !important; } [/code]

martes, 16 de febrero de 2016

Librerías JDCB en un solo punto


Estimad@s Quisiera compartir con ustedes enlaces a los sitios de descarga de las librerías JDBC para las base de datos más comunes. A continuación se las presento.

Espero que haya sido de utilidad, compartamos la información. No olvides seguirnos/mencionarnos en twitter o facebook https://www.facebook.com/MATOOSFE.

Cadenas de Conexión JDBC


Estimad@s, Al momento de realizar la conexión a la base de datos utilizando JDBC , siempre se necesita tener a la mano las cadenas de conexión de la base de datos.Por lo que en el siguiente post se mostrará la información de las cadenas de conexión con los driver de las base de datos más comunes.

MySQL
Driver Class: com.mysql.jdbc.Driver
Defautl Port: 3306
JDBC URL: jdbc:mysql://[host][:port]/[database]
Postgres
Driver Class: org.postgresql.Driver
Defautl Port: 5432
JDBC URL: jdbc:postgresql://host:port/database
Oracle
Driver Class: oracle.jdbc.driver.OracleDriver
Defautl Port: 1521
JDBC URL:
jdbc:oracle:thin:@machine: port:SID
jdbc:oracle:thin:user/pass@machine:port/SID
SQLServer
Driver Class: com.microsoft.jdbc.sqlserver.SQLServerDriver
Defautl Port: 1433
JDBC URL: jdbc:microsoft:sqlserver://host:port;databasename=name;user=yourUser;password=yourPwd
Espero que haya sido de utilidad, compartamos la información.

Subir imágenes Servidor - Primefaces


Estimad@s amig@s En el siguiente recurso se puede apreciar como subir imágenes al servidor utilizando Primefaces 3.5.
Espero que haya sido de utilidad, compartamos la información.No olvides subscribirse a nuestro canal, un vídeo nuevo del curso cada lunes y vídeo de tips entres semana.

Como manejar el Look and Feel



Les comparto un vídeo donde se muestra como establecer los diferentes Look and Feel que tiene Swing, entre los cuales están los siguientes:
  • Plataforma.
  • Sistema Operativo.
  • API JDK
  • Externos


Espero que les haya servido de utilidad, no olviden compartir, subscribirse y sobre todo comentar.

Problemas versiones Jasper vs IReport


Cuando se esté trabajando con reportes con el diseñador de iReport y JasperReport se debe asegurar que la versión con la cual se compile los reportes debe ser la misma de la librería cargada en su proyecto web; es decir, si se creo los reportes con la versión 3.7.4 de iReport se tiene que cargar la librería 3.7.4 de JasperReport para evitar que se produzca la siguiente error:

net.sf.jasperreports.engine.JRRuntimeException: Unknown hyperlink target 0

Certification Java – Set


Teniendo que la clase NameBean.java es la siguiente:
[code] package com.matoosfe.certification.basico; public class NameBean { private String str; NameBean(String str ){ this.str = str; } /** * @return the str */ public String getStr() { return str; } /** * @param str the str to set */ public void setStr(String str) { this.str = str; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return getStr(); } } [/code]
Cuál es la salida que se muestra al ejecutar el código?
[code] package com.matoosfe.certification.basico; import java.util.HashSet; public class CollClient { public static void main(String []sss) { HashSet myMap = new HashSet(); String s1 = new String("das"); String s2 = new String("das"); NameBean s3 = new NameBean("abcdef"); NameBean s4 = new NameBean("abcdef"); myMap.add(s1); myMap.add(s2); myMap.add(s3); myMap.add(s4); System.out.println(myMap); } } [/code]
Entre las opciones tenemos: a) das abcdef abcdef b) das das abcdef abcdef c) das abcdef d) abcdef abcdef

Para determinar la respuesta correcta deberiamos referirnos a la definición de la colección utilizado en este caso la interfaz Set la cual determina que no se puede tener dos objetos repetidos en la collection, los cuales para ser añadidos a la collection utilizan el método equals con la siguiente sentencia e1.equals(e2). De lo que podemos puntualizar lo siguiente
  • En Java para comparar que dos objetos sean iguales (mismo objeto, misma instancia o referencia) se utiliza el símbolo == que no tiene nada que ver con el contenido.
  • En cambio el método equals sirve para comparar que dos objetos sean iguales por lo general en contenido, no el mismo objeto
  • Adicionalmente en una collection para que dos elementos sean iguales deben de tener el mismo hashCode
Tomando en cuenta lo mencionado anteriormente se concluye lo siguiente.
La opción b) esta incorrecta porque los objetos s1 y s2 a pesar de que tienen el mismo contenido, tienen el mismo hascode (el cual es obtenido en base al contenido) por lo que son iguales, lo que determina que en la collection del tipo Set solo podria estar uno de ellos. A continuación se expone la definición del método hashCode de la clase String donde se puede apreciar lo mencionado. [code] public int hashCode() { int h = hash; if (h == 0) { int off = offset; char val[] = value; int len = count; for (int i = 0; i < len; i++) { h = 31*h + val[off++]; } hash = h; } return h; } [/code]

La opción c) esta incorrecta porque las instancias del Objeto NameBean a pesar de que tienen el mismo contenido no tienen el mismo hashcode ya que son objetos diferentes, diferentes referencias.
La opción d) esta descartada porque en la collection myMap deberia existir al menos un elmento del tipo String y del tipo NameBean
Para terminar por la explicaciones anteriormente expuestas a las anteriores respuestas se concluye que la respuesta correcta es la a) ya que dos objetos son iguales siempre y cuando sean iguales en contenido y referencia (hasCode)

miércoles, 3 de febrero de 2016

Error Cheese GStreamer



Hola amig@s les comparto un error que se me presentó cuando desee utilizar el programa Cheese en mi Centos7 para realizar unas capturas con la webcam. A lo que lo inicialize obtuve el siguiente error


Para solucionar el problema se tiene que verificar que se tenga instalado los paquetes de gstreamer, luego si el problema persiste. Se debe dirigirse a la carpeta de usuario y eliminar el directorio ~/.cache/gstreamer-1.0 y volver a ejecutar Cheese con lo que la webcam se activará.



Saludos

viernes, 7 de agosto de 2015

Con el tiempo aprendes


Meditando un poco en momentos de reflexión escribí esto, espero les guste y puedan compartir amigos.


Con el tiempo aprendes....

Quienes son tus verdaderos amigos.
A valorar más el tiempo con tu familia.
A disfrutar de los momentos y personas.
Que los sueños nunca terminan.
Que la voluntad y sacrificio congratulan el éxito.
A ser agradecido con la vida y sobretodo con Dios por su bondad, paciencia, bendiciones y cuidado.
Que las lágrimas, errores solo son parte del crecimiento.
Que el dinero nunca compensará el éxito y la felicidad.
Que tu bondad y solidaridad no es para todos, sino para la gente que la valora.
Que tus objetivos dejen de ser personales para convertirse en familiares.
Que nunca terminarás de aprender y la mejor forma serán tus experiencias. Que la ilusión y el amor son otra cosa.
Que el éxito no sirve de nada sino tienes humildad.
Que  la religión, profetas, santos no significan nada si no tienes a Dios en tu corazón.
Que necesitas una vida equilibrada, los extremos son malos.
Que disfrutar de la música, el deporte y el sexo son placeres indiscutibles.
Que a veces es mejor estar solo para encontrarse.
Que los verdaderos sueños nacen en el corazón.
Que existen grandes diferencia en trabajar y amar lo que haces.
Que el primer paso para emprender es confiar en ti.
Que las personas, amores pasan pero sus enseñanzas nunca.
Que tu vida siempre será un modelo a seguir o no seguir.
Que tu historia termina cuando dejas de escribir la tuya para escribirla la de otra.
Que no existen secretos para Dios.


Que lo único que no se recupera es el tiempo perdido..........

autor: martosfre

miércoles, 5 de agosto de 2015

Formas de Persistencia


Estimados amig@s les comporto un extracto del libro que JPA que estoy realizando como parte de mi preparación para la certificación OCEJPA Espero sus comentarios.

 1.2 Formas de Persistencia.

La persistencia involucra el almacenamiento permanente de la información sobre un medio físico o lógico asociándolo generalmente con una base de datos. En Java existen varias maneras de persistir un objeto entre las cuales se tiene las siguientes:

  • Persistir un objeto a través del mecanismo de Serialización(proceso para convertir un objeto en una secuencia de bits) sobre un disco duro o a través de una conexión de red; permite obtener un formato independiente que puede ser re-usado en medio de diferentes sistemas operativos. Java provee un mecanismo estandarizado, simple y transparente para serializar objetos a través de la implementación de la interface java.io.Serializable. Sin embargo este mecanismo a pesar de ser muy simple no cuenta con un lenguaje de consulta o una infraestructura que soporte acceso concurrente a la información o clusterización.
  • Otro mecanismo de persistencia es a través de JDBC (Java Database Connectivity), cual es el API estándar para gestionar base de datos relacionales. Permitiendo conectar la base de datos, ejecutar sentencias SQL tanto DML como DDL y obtener los resultados.
  • A pesar de que JDBC es usado ampliamente ha sido desplazada por la utilización de los ORM(Object Relational Mapping) o capas de persistencia, cuya funcionalidad es permitir la representación de un modelo de datos en un modelo de objetos y facilitar las operaciones fundamentales de la base de datos a través de métodos; entre algunas de las capas de persistencia se tiene las siguientes Hibernate, EclipseLink, ToplLink siendo consideradas como otro mecanismo persistencia.
  • Finalmente el esquema de persistencia estándar utilizada independientemente de la capa de persistencia se conoce con el nombre de Java Persistence API(JPA), y es el cual es utilizado para persistir los datos tanto en aplicaciones JEE como aplicaciones de escritorio.

miércoles, 6 de mayo de 2015

Error AbstractMethodError: com.microsoft.sqlserver.jdbc.SQLServerResultSet


Estimad@s amigos, que gusto volver a postear algo luego de tanto tiempo perdido.... lamento no hacerlo. Estuve preparándome para unos exámenes de certificación de java y android... pero ya estoy de vuelta.

En esta oportunidad quiero compartirles la solución a un error que se presentó el día de hoy al subir a producción un módulo de pre-facturación que realice para un cliente. El escenario fue el siguiente:

Problema:
Al subir una aplicación desarrollada en RichFaces 3.4 en un servidor de aplicación glassfish 3.1 que utiliza JEE 5.0 con los motores de base de datos sqlserver 2008 y postgres 9.1, todo estuvo correcta hasta que se genero un reporte que utiliza un procesamiento muy fuerte en primera instancia sobre SQLServer a nivel de JDBC para un tema batch. Generandome el siguiente error:

Error SQLServerResultSet Driver JDBC SQLServer V1.0
Solución:

La solución al problema fue cambiar el driver de SQLServer que se tenia configurado en el Pool de Conexión, el cual era el sqljdbc.jar que correspondía a la versión 1.0 por el driver sqljdbc4.jar correspondiente a la versión 4. Debido a que en el driver inicial no se tenia el método isClosed() del objeto ResultSet.

viernes, 30 de agosto de 2013

Prohibida




"Te encuentro en mis sueños, ironía implacable
Que despierta mis ansias locas por besarte,
Acariciarte, en un sutil suspiro victorioso en la noche
Que enamora y deje abierta la ilusión
De un próximo encuentro en aquella habitación.

Ajena para muchos, pero no prohibida para mis letras
Que con finos versos lograron apartar la ausencia
La misma ausencia que dejas en mi cama cuando te alejas,
Pidiendo una explicación al poeta, como si fuera él
Quien comenzó la historieta"


att: martosfre

jueves, 21 de febrero de 2013

Fraseando



Tan difícil componer una sonrisa en tú rostro
Marchito por la lejanía que marco mi ausencia
Ajeno a tus caricias repentinas en silencio
Suspirando los renglones al viento.

Utópicas punzadas en mi pecho
Que recriminan lentamente al corazón
Y en las tonadas de mi versos
Desahogo con pinceles mi sentimiento

Melódicas palabras escogidas con valor
Se juntan a esas miradas entrelazadas
Para desbordar todo el deseo
Que sigo quemando nuestros cuerpos.

att:martosfre

sábado, 16 de febrero de 2013

Peregrino



Retovado en mis pensamientos ajenos a tí
De siluetas transparentes que vuelven en las noches
Preguntándose si te ame con la pasión que desvordaste
En la madrugada, excitante, silenciosa en el tiempo
Cobijados de un placer incierto.

Las canciones entonadas en tu nombre
Suenan de vez en cuando aquí en mi pecho,
Si la pluma no controlará el movimiento de mis dedos
Dirían que no ha cesado de pensarte ni un solo momento.

Mariposas ensañadas en el recuerdo
Rosas y violetas persignadas por el viento
Esperando un sola tonada de mi boca
Conjugando la palabra de un te quiero
En la madrugada casi despiertos.

Ahora se que debo volver al camino
Que abandone cuando estuve contigo
Solo quedará el recuerdo de un casi peregrino
Que se volvió ajeno a su figura porque amo con locura.


att: martosfre

domingo, 20 de enero de 2013

Silencio en la noche



Reposado en tus mejillas
Saboreando tus labios
Entendí que lo nuestro
Se había esfumado.


Las miradas ya no tienen el brillo
Más el deseo sigue su camino
Cuerpos ajenos,  empapados en sabor
Silenciados en la noche
Más no en su interior.


Han pasado años
Y el perfume de tu cuerpo
Ya no lo siento impregnado
Ni tengo escalofríos
Cuando tocas mis manos.

No recuerdo la fecha
En que dejamos de hablarnos
Ni el motivo el porque
Dejamos de escucharnos
Ajenos e indiferentes hoy
Volvimos a encontrarnos...





att: martosfre

sábado, 29 de diciembre de 2012

Feliz Año 2013


Un año 2012 grandioso!!!, creo que no existen los años malos, solo malas decisiones, malas experiencias pero siempre fortalecedoras de una u otra manera ya que nos enseñan a ser cada día mejores. Seguramente años tristes por la partida de un ser querido pero fue voluntad del señor, y todos algún día partiremos. Disfrutemos la vida con mucha responsabilidad y mesura y sobre todo dando ese toque de amor, respeto, sinceridad y cariño a todos las personas que forman parte de nuestro mundo.

Un año que a Dios gracias nos ha permitido cumplir algunos de nuestros propósitos, metas, sueños o ilusiones como muchos de nosotros los llamamos, o talvés encaminarnos en ellos, o seguir fortaleciéndolos. Pero algo si es cierto y lo he comprobado, que por más difícil que parezca una sueño si trabajas todos los días con amor y perseverancia a pesar de cualquier obstáculo que la vida te ponga en el camino Dios será justo y te dará lo que mereces.

Un año que a muchos nos ha permitido enamorarnos, desilusionarnos, casarnos, formar una familia,  Quererse con defectos y virtudes sería lo más razonable siempre y cuando estemos seguros de que será la mujer o el hombre de nuestras vidas. Como saberlo es la pregunta?  Solo lo sabes.... Caso contrario será preferible terminar la relación por más doloroso que sea, pero no tratarla con un juego y darnos la oportunidad de volver a comenzar, volver a enamorarnos.

Un año de nuevos amigos, aventuras, farras, toda una mezcla de adrenalina, alegría y desorden que da ese toque especial a nuestras vida y nos permite alejarnos de esa tan común enfermedad llamada estrés. Amig@s que no asoman en años pero que al verlos alegran tanto con su presencia, amig@s que siempre los vemos, amig@s que con sus mensajes o un simple me gusten te levantan el ánimo y te ponen nuevamente en onda jejeje. Pero algo  radical es que siempre  estaremos presentes cuando nos necesiten por más ocupados que estemos.

Faltan dos días nada más para recibir al año 2013,  por favor revisemos nuestros vidas, fortalezcamos las cosas buenas, aprendamos de las malas experiencias.  Proyectemos las metas para el año nuevo en todos los aspectos de nuestra vida y trabajemos duro por conseguirle, recuerden vienen 365 días de trabajo.

Demos gracias a Dios por estar aquí con salud y vida, por nuestra familia, por nuestro trabajo, por los amigos y toda la gente maravilloso que formo parte de nuestra vida en este año y que esperamos que forma parte en el viene y todos los restantes.

De todo corazón les deseo lo mejor del mundo, agradezco a todos y cada uno de ustedes por formar parte de mi vida, que Dios les colme de muchas bendiciones para ustedes y su familia. No olviden que cuentan con un amigo. FELIZ AÑO 2013



Finalmente

jueves, 13 de diciembre de 2012

Labrando Hondo



No pretendí ser la luz que guíe tu camino
No pretendí ser el amo de tu destino
No pretendí cambiar tu vida
Más estoy convencido que cambiaste la mía.

Solo te dí lo que mereciste mi vida
Sabiendo que talvés esto acabaría
En una mañana sin saber la hora y el día
Sintiendo la tristeza corriendo por mis mejillas.

Me pregunto el porque....., se la respuesta
Si yo mismo la construí cegada por la utopía
De manifiestos que recorren mi cabeza
Una y otra vez cuando el amor empieza.

Los adioses no existen en mi poesía
Solo los recuerdos hermosos,  pasajeros aún eternos
Que solo se viven una vez en cuerpo y alma
Y que marcan el inicio de algo nuevo.

Contento....porque las palabras no quedaron en el viento
Triste....porque no lucharé contra el tiempo.
Pensativo....recorriendo mis sueños en silencio.
En un mañana que se acerca, siempre respirando un nuevo aliento
Que dará el inicio a una historia semejante o diferente...
Solo él lo sabe....


att: Martosfre