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.

Cambio de servidor.

Recientemente he cambiado el servidor dedicado en donde se hospeda JavaMéxico.com, seguramente habrán notado
que va más rápido y ya no ha tenido caídas.

La principal característica y la noticia que motiva a este post es que ya podemos alojar aplicaciones web en Java.

No estaría mal comenzar algún proyecto aprovechando esta situación, para ir moviendo la comunidad hacia fines más
productivos no solo en cuanto a noticias y conocimiento compartido, sino también hacia la parte de desarrollo en equipo.

Espero que le agrade la idea a más de uno y lo externe en los comentarios de este post.

Hace tiempo iberck me comentó que podríamos desarrollar un proyecto como javablackbelt.com pero para la comunidad
hispana. Me pareció muy interesante el concepto que manejan y creo que es una buena idea.

Como esta idea puede haber algunas más que podemos llevar a cabo, pero lo primero es lo primero: ver quienes están
interesados en participar en este tipo de proyectos.

Agradezco sus comentarios.

Creando mi primer applet... inservible

Pues despues de leer un poco en un libro sobre Java que creo que esta un poco viejo porque dice que se concentrara en las applets... y según me dijeron Ya no se usan las applets u.u

import java.awt.*;
import java.applet.Applet;

public class Holamundoapplet extends Applet{
        public void paint (Graphics g) {
        g.drawString ("Hola Mundo", 50, 50);
        }
}

Evitar que una aplicación java se ejecute mas de una vez

Buenas tardes, antes que nada les felicito por su sitio que es de gran ayuda cuando uno está "naufragando en internet en busca de información" mi consulta es la siguiente:

Tengo un aplicación estándar en java de tipo consola, pero necesito evitar que se ejecute más de una vez al mismo tiempo, ya que cuando lo hace afecta a la funcionalidad para la cual fue desarrollada (envió de trx) y cada instancia los hace más de una vez dando como resultado el duplicado de envió por cada trx.

Cabe mencionar que la aplicación tiene la lógica necesaria por ella misma, para no duplicar el envió de las mismas (actualiza estatus), pero se da el caso si otra instancia de mi mismo programa es iniciada casi inmediatamente, lo cual ocasiona que ambas inicialmente detecten que ciertas trx no se han enviado y ambas lo carguen en una cola donde simplemente envía y actualizan estados de las trx.

Básicamente mi pregunta es: ¿Cómo puedo detectar que ya se está ejecutando un instancia de mi aplicación?

De antemano gracias por sus respuestas y/o comentarios

saludos

Gustavo BECMART.

JDK 6 Update 4 con JAX-WS 2.1

Sun a liberado la actualización número 4 del JDK 6.0, el cual entre otras cosas incluye a JAX-WS 2.1 y JAXB 2.1, por lo que ya no será necesario utilizar el mecanismo de “endorsamiento” (Endorsed Standards Override Mechanism) de éstas APIs para utilizar Metro (WSIT).

Descarga de JDK/JRE 6.0 Update 4 en: Java SE Downloads.

¿Controlar el volumen de un MIDI?

Hace tiempo que tengo la inquietud de los MIDI y poder trabajar con ellos desde Java. Luego de mirar con cuidado la API de java y gran parte del paquete javax.sound.midi, comencé con la tarea, que ha dado sus frutos: un reproductor casi terminado (por lo pronto, es un beta... y yo soy el tester xD).

El problema que tengo ahora es que quiero proveer un control de volumen en el reproductor. Con la API de sonido se puede obtener un mixer, y a partir de él un control de volumen, pero... ¿se puede hacer eso con un MIDI? ¿Cuál sería el dispositivo al que debo "buscarle" el mixer?
Otra posible solución sería trabajar con el Sequence del archivo MIDI, obtener las Track y a cada una subirle el volumen ANTES de reproducirla. Por tiempo no he podido probar lo que ocurre con la reproducción activa si se modifica la Sequence del MIDI...

¿Podrá alguien ayudarme con eso?

Roadmap de Metro

Metro es un stack para servicios web propuesto por Sun, el cual contiene a JAX-WS (lo que incluye a JAXB, JAXP, StAX, SAAJ, etc.) y WSIT (WS-*). Se trata pues de una “ventanilla única” con todo lo necesario para construir servicios web, desde el más simple “hola mundo” hasta servicios web confiables, seguros y transaccionales que involucran a servicios WCF del . NET Framework.

Algunos puntos clave acerca de los futuros releases de Metro son:

Comet / Push Server Technology

Hola, les comento, estaba haciendo lo que mejor se hacer... (....nada...) y bueno me puse a programar un rato con GWT haciendo una especie de chat, y me encontre con un problema, "como puedo enviar cosas desde el servidor hacia el cliente, sin tener que estar preguntando cada cierto tiempo desde el cliente hacia el servidor?" bueno, realize un post (no muy explicativo) en el foro de GWT y pues me comentaron sobre esta tecnologia Comet / Push.

me puse a leer en wikipedia sobre esto, la idea es basica simplemente, se usa un mecanismo donde se mantiene una conexion con el servidor http en lugar de cerrarla como usualmente pasa, y se envia la informacion desde cualquier lado, sin gastar muchos recursos, eso es mas que todo la base, ando investigando como puedo implementarlo ya que no tengo la mas minima idea, pero para los interesados pueden leer estos links.

http://alex.dojotoolkit.org/?p=545
http://en.wikipedia.org/wiki/Comet_%28programming%29

Saludos,

Manejo de XML

Una de las cosas que los programadores en java usan mas es la configuracion por archivos XML o Properties, los properties se pueden leer facilmente usando java.util.Properties, pero los XML requieren un poco mas de trabajo.

Aqui coloco lo que utilizo yo cuando tengo que manipular archivos XML

primero hay que diferenciar 2 cosas una es leer un XML y la 2da es ubicar elementos en un XML

El leer un archivo XML se puede realizar utilizando SAX (Simple API XML). El cual se realiza creando una clase que extienda de org.xml.sax.helpers.DefaultHandler, la idea es sobreescribir ciertos metodos como startElement, endElement los cuales tienen como parametro String namespaceURI, String localName y String qName, Attributes attr.

El utilizar esto significa leer todo el archivo XML y mucha de las veses solo queremos localizar ciertos tags ya que es mas rapido que leer todo el documento.
para hacerlo no hay que utilizar un handler, solo objetos.

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.traversal.NodeIterator;
impor java.io.*;

....

Servicios Web con Java SE 6 (Parte 4)

Creando un Cliente muy simple para un Servicio Web muy simple

Ahora crearemos (en un directorio/proyecto distinto) el cliente para nuestro Servicio Web el cual debe estar publicado y en ejecución.

Primero necesitamos generar los artefactos cliente. Para ello utilizaremos la herramienta wsimport incluida en Java SE 6.0, a la cual le pasamos como argumento la ubicación del contrato del servicio, es decir el WSDL:

>wsimport http://localhost:8080/hello?wsdl

Esto generará las clases que encapsulan las operaciones para la invocación de los métodos del Servicio Web. En nuestro caso se generarán seis clases dentro del paquete ‘hello’, entre ellas estan las clases hello.HelloService y hello.Hello que utilizaremos directamente en nuestro cliente.

Una vez generados los artefactos cliente solo resta crear el cliente en sí, una simple aplicación de consola:

Soy un newbe en BD.

Hola, como estan, pues como sabran yo soy certificado en java y blah blah blah pero aun asi, hace poco me entere que si no cierras los statements o preparedstatemens de una conexion puedes tener un error parecido a que se te acabaron los statements.

Realize cambios al programa ya que cuando se hacian queries no se estaba cerrando el preparedstatement, realizamos una prueba masiva y voila!, todo funciono perfecto.

Asi que si no saben, pues ya sabem no solo se pueden quedar sin conexiones (si usan datasources) tambien se pueden quedar sin statements o preparedstatements si no los cierran, por eso es muy importante cerrar los resultsets, statementes / preparedstatemenes o lo que sea parecido y las conexiones (en caso de usar conexiones directas en lugar de datasources, que por lo general lo maneja el servidor web)

Saludos,

Distribuir contenido