style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Bienvenido a Java Mexico

Java México es una comunidad de desarrolladores mexicanos en el lenguaje Java.

Este sitio es colaborativo, automáticamente al registrarte obtienes un Blog para compartir tus conocimientos o información acerca del lenguaje. Antes de publicar en tu blog o los foros por favor lee los lineamientos de publicación.

Para dudas y problemas con respecto al lenguaje Java puedes visitar los Foros de Discusión.

La Fundación Eclipse será el nuevo hogar de la plataforma Java EE


Hace algunas semanas Oracle anunció la iniciativa de buscar un nuevo hogar para la plataforma Java EE. En busca de que la evolución de la misma sea más ágil, flexible y abierta.

El día de hoy se dio a conocer que después de platicar con varias organizaciones, la
a Fundación Eclipse resultó seleccionada para albergar el proyecto y plataforma Java EE.

El repositorio de código de Java EE ahora está en Github: https://github.com/javaee

Aquí el anuncio oficial de Oracle: https://blogs.oracle.com/theaquarium/opening-up-ee-update

**Update**

Anuncio oficial de Red Hat: http://middlewareblog.redhat.com/2017/09/12/java-ee-moves-to-eclipse/

Concurrencia Web Service REST ibatis Spring

Buen día a todos les comento mi problema. Tengo un proyecto web donde se hacen peticiones a los web service entre tantas de la peticiones hay una en particular que me esta dando muchos problemas y es el siguiente: Tengo una query que busca el máximo id de una columna + 1, en el método donde hago varias cosas al final mando a llamar esa query y justo después hago un insert a la base de datos con ese id que me devuelve la primer query. el problema es que hay ocasiones donde parece que se hace una peticion al mismo tiempo hora y segundo y en le asigna el (id + 1) a dos usuarios totalmente distintos cuando yo esperaria que sea el cosecutivo, eh utlizado varias notaciones en el método como este: @Transactional(rollbackFor = ServiceException.class, propagation = Propagation.NESTED, isolation = Isolation.READ_UNCOMMITTED) pero aun así el problema persiste.

Agradecería sus comentarios.

Gracias!!

Spring MVC ... primer ejemplo (REST)

Para este ejemplo crearemos una base de datos (yo uso postgresql) llamada proyecto, agregaremos una tabla usuario con los siguientes campos: id, nombre, password, logeado y area.

CREATE TABLE public.usuario
(
    id INTEGER NOT NULL,
    nombre CHARACTER VARYING NOT NULL,
    password CHARACTER VARYING  NOT NULL,
    logeado BOOLEAN,
    area CHARACTER VARYING,
    CONSTRAINT usuario_pkey PRIMARY KEY (id)
);

Ahora agregaremos unos datos:

INSERT INTO public.usuario(
        id, nombre, password, logeado, area)
        VALUES (1, 'Antony Yung', '00T$@l12', TRUE, 'sistemas'),(2, 'Adrian Uribe', '3EvBb00', FALSE, 'administracion'),
    (3,'Ernestina Pedroza','@22GgHQll',TRUE,'recursos humanos');

Una vez creado la base de datos y su correspondiente tabla nos enfocaremos a crear el ejemplo con Spring MVC.

¿Qués es lo que ncesitaremos?

  1. Archivo: build.gradle , para configurar las dependencias necesarias

Error al guardar Backups MySQL en Java

Buen día,
Tengo un formulario en Java que tiene dos botones: Seleccionar y Guardar. Estos ejecutan un código para seleccionar el destino y guardar el archivo.sql, respectivamente. La cosa es que el archivo.sql solo lo guarda en Escritorio y en Documentos y en el disco C, en otros destinos como carpetas que yo tengo en escritorio o carpetas que tengo en mi partición D, no lo guarda; no me da error el código, voy a mirar la carpeta donde guardé y no está el archivo. ¿ A qué se deberá esto?
Mi código de Seleccionar es:

JFileChooser jfc = new JFileChooser();
        jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        int select0 = jfc.showSaveDialog(this);
        if (select0 == JFileChooser.APPROVE_OPTION) {
            String ruta = jfc.getSelectedFile().getPath();
            jTextField1.setText(ruta);
        }

El de Guardar:

String ruta = jTextField1.getText();
        String nombre = "\\RespaldoBD.sql";
        String backus = "";
        if (ruta.trim().length() != 0) {
            try {

Crear sello de CFDI con java

El sello de un CFDI es en realidad la firma electrónica de algunos campos en conjunto(cadena original) del CFDI. La firma digital brinda varios servicios de seguridad:

  • No repudio. La entidad que emite el CFDI no puede rechazar que ella/él lo emitió puesto que en teoría sólo ella/él conoce la llave privada y nadie mas.
  • Autenticación. Al verificar la firma de un CFDI sabemos quién lo emitio ya que se utiliza la correspondiente llave pública del emisor. En Criptografía de llave pública,
    siempre existen un par de llaves, la pública y privada, las cuales sirven para cifrar y descifrar el mensaje.
  • Integridad. Al firmar el CFDI se realiza un subproceso que genera una cadena única, producto del uso de funciones hash. Si se altera el documento posteriormente o al menos los
    campos que se uilizan para generar la cadena original, la cadena única generada debe cambiar completamente y el resultado de la firma será diferente a la original.

Hay dos procesos principales en la generación del sello:

Creación de cadena original CFDI 3.3 con java

Pasos para creación de la cadena original del CFDI 3.3:

1. Tener anotadas las clases con javax, como en el blog.
2. Obtener el archivo cadenaoriginal_3_3.xslt del SAT.
3. Generar la cadena original con el siguiente código:

...
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.util.JAXBSource;
import javax.xml.transform.Result;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
...

JAXBContext jaxBContext = JAXBContext.newInstance("mx.gob.sat.v33"); //El paquete donde se encuentra la clase Comprobante
StreamSource ss = new StreamSource(getClass().getResourceAsStream("/xslt33/cadenaoriginal_3_3.xslt")); //La ruta donde se encuentra el archivo xslt

Generar clases java del CFDI versión 3.3 con comando xjc

Hola,

Les dejo los pasos para la generación de las clases java del CFDI 3.3:

1. Obtener el archivo cfdv33.xsd (http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd)
2. Crear un directorio donde se crearan las clases java (ejemplo: testing)
3. Ejecutar el comando (Se encuentra en la distribución de java, a partir de la versión 6):
xjc -d ./testing/ cfdv33.xsd
4. Los warnings son debido a que esos catálogos son demasiado grandes. Sin embargo, se han generado la mayoría de las clases.
No he podido generar estos enums con esta herramienta (xjc) ya que son demasiado grandes y me sale un OutOfMemoryError. Si desean generar estos enum hice un script en python, espero les sirva.

Spring Framework ... Spring MVC

¿Qué es Spring Framework?

Es un marco de trabajo que se apoya en algunos estándares Java EE para el desarrollo de aplicaciones y contenedor de inversión de control. Nos permite, entre otras cosas, crear aplicaciones web, servicios REST, persistencia de bases de datos relacionales y no relacionales, etc. En este post hablaremos de Spring MVC, el cual es un marco de trabajo que nos permite crear aplicaciones web con la arquitectura MVC.

Arquitectura Modelo-Vista-Controlador (Model-View-Control)

Esta arquitectura se compone de tres principales conceptos:

  • A. Modelo: Objetos Java.
  • B. Vista: Plantilla que genera la HTML.
  • C. Controlador: Controlador que atiende las peticiones HTTP que llegan al servidor desde el navegador; si resuelve la petición, devuelve una respuesta, en este caso la página HTML.

Supongamos que un cliente quiere saber el estado actual de sus movimientos bancarios.

  1. El cliente hace una solicitud al servidor.

¿Has desarrollado una aplicación para facturación electrónica?

Uno generalmente madura con el tiempo y muchas de las ideas que tiene uno cambian con el tiempo. A mi siempre me ha parecido fabulosa la ideologia del open source, donde la gente colabora por el mero gusto de hacerlo, pero bueno eso es harina de otro costal.

Me gustaria saber en particular cuantos de ustedes han implementado sistemas de facturación electrónica, ya sea para venta directa a un cliente o como parte de su trabajo para una empresa. Ultimamente he sabido de bastantes PAC's que estan cerrando su negocio por falta de clientes y estan quedando solo algunos monstruos. La pregunta que yo siempre me he hecho es, ¿por que el SAT no brinda un web service para tal fin en lugar de hacernos pagar cada timbre? Su infraestructura ya muy decente a comparación de hace años que empezó, entonces, ¿no sería logico que se volviera gratuito?.

Saludos.

Seguridad en aplicaciones WEB

Hola!

A lo largo de mi trayectoria siempre he trabajado con frameworks comos spring, struts, hibernate, etc.

Hoy día me encuentro con algo nuevo, implementar una aplicación web usando estandarés de JEE 7 y me he encontrado con un problema, no he podido implementar la seguridad, he leído en varios lugares sobre JAAS, pero no me encuentro mucha ayuda (a diferencia de spring-security).

Alguién ya lo ha podido implementar en aplicaciones WEB?

Distribuir contenido

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">