JAVA NO RESUELVE EL NOMBRE DEL HOST [JMS] [GLASSSFISH]

Posted: miércoles, 16 de febrero de 2011 by Skuarch in Etiquetas: , , ,
0



En ocaciones utilizando JMS en un cliente remoto nos aparece el siguente error


WARNING: [C4003]: Error occurred on connection creation [hostname:7676]. - cause: java.net.UnknownHostException: hostname


Para poder resolverlo en la parte de configuracion >> JMS Host >> default_JMS_host cambia el host a 0.0.0.0

tambien puedes checar este link donde esta la solucion

http://java.net/jira/browse/GLASSFISH-11254

IMPRIMIR STACK TRACE

Posted: miércoles, 9 de febrero de 2011 by Skuarch in Etiquetas: , , , ,
0



Para poder hacer esto puedes seguir este codigo


public String stack2string(Exception e) {
StringWriter sw = null;
PrintWriter pw = null;
try {
sw = new StringWriter();
pw = new PrintWriter(sw);
e.printStackTrace(pw);
return "\r\n" + sw.toString() + "\r\n";
}
catch(Exception e2) {
e.printStackTrace();
}
}

0



En cuando se quiere acceder a un recurso del servidor nos aparece el error

WARNING: "IOP00410201: (COMM_FAILURE) Connection failure: socketType: IIOP_CLEAR_TEXT; hostname: 127.0.1.1; port: 3700"


Para evitarlo checa que en tu archivo de host no tenga la direccion 127.0.1.1, si la tiene quitala, tambien debes de agregar tu ip con tu hostname, el archivo quedaria asi.

127.0.0.1 localhost
1.1.1.1 skuarch-mac


Si no te sirve pues buscale por otro lado

java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' to TIMESTAMP.

Posted: martes, 1 de febrero de 2011 by Skuarch in Etiquetas: ,
0




Para solucionar este problema cuando creas la cadena de conexion agrea esto al ultimo.


?zeroDateTimeBehavior=convertToNull


la cadena de conexion seria mas o menos asi


jdbc:mysql://miServidor/miBaseDeDatos?zeroDateTimeBehavior=convertToNull


Espero que no estes tan estupido y puedas substituir miServidor por la ip o el hostname

SELECT UPDATE crear un update con un select que regrese mas de un registro en mysql

Posted: viernes, 28 de enero de 2011 by Skuarch in Etiquetas: , , ,
0




El update por si mismo solo actualiza un registro, pero con esta consulta puedes actualizar varios registros utilizando un select anidado

si la tabla que se desea actulizar no tiene un campo que se llame igual a la tabla del select anidado se puede utilizar AS para ponerle el mismo nombre


(SELECT campo1 AS campoConLosDatosQueNecesito, id2 AS id FROM otraTable) AS selectAnidado


Al SELECT tambien se le debe de poner un nombre.

Para utilizar USING se debe de poner el campo con el mismo nombre en las dos tablas y obviamente deben de tener los mismos datos (el id puede ser de ayuda)

­

UPDATE mi_tabla
LEFT JOIN
(SELECT campo1 AS campoConLosDatosQueNecesito, idTabla AS id FROM otraTabla) AS selectAnidado
USING (id)
SET campo = selectAnidado.campoConLosDatosQueNecesito
WHERE id = "cualquierCosa";



la palabra reservada USING debe de tener como parametro el campo que coinside en las dos tablas

Todo lo demas es igual que en cualquier update

ABRIR EL NAVEGADOR CON JAVA

Posted: martes, 18 de enero de 2011 by Skuarch in Etiquetas: , , , ,
1



Para poder abrir el navegador que tiene tu sistema operativo por default, solo tienes que usar este pequeño pedaso de codigo


String url = "http://www.google.com";
java.awt.Desktop.getDesktop().browse(java.net.URI.create(url));


esta es otra forma

URLDisplayer.getDefault().showURL(URL url);


si no te sirve pues largate y buscale por otro lado!!!

1




Para poder crear un pool de conexiones y un recurso jdbc puedes seguir estos comandos

Connection Pool
$GLASSFISH_HOME/bin/./asadmin create-jdbc-connection-pool --user admin --datasourceclassname com.mysql.jdbc.jdbc2.optional.MysqlDataSource --restype javax.sql.DataSource --property user=root:password=vitalnoc:DatabaseName=sns_projectName:ServerName=192.168.208.15:port=3306 sns_projectName


Resource JDBC
$GLASSFISH_HOME/bin/asadmin create-jdbc-resource --connectionpoolid test-pool jdbc/test


donde $GLASSFISH_HOME es donde tienes instalado el glassfish, y obviamente modificas los parametros

fuente http://docs.sun.com/app/docs/doc/816-6443/6mch3fo6p?l=en&a=view

CENTRAR JFRAME EN LA PANTALLA

Posted: jueves, 6 de enero de 2011 by Skuarch in Etiquetas: ,
0




Para poder centrar en la pantalla un jframe puedes usar esto:


this.setLocationRelativeTo(getRootPane());


donde this es tu jframe

ACCEDER A APPLICATION.RESOURCES DESDE UNA CLASE STRUTS

Posted: miércoles, 15 de diciembre de 2010 by Skuarch in Etiquetas: ,
0



Hola para poder acceder a una propiedad de un archivo properties desde cualquier clase, se tiene que importar import org.apache.struts.validator.Resources y con esto Resources.getMessage(request, "cualquier.cosa") nos regresa un string, usando Struts


import org.apache.struts.validator.Resources
String propiedad = Resources.getMessage(request, "cualquier.cosa");

JMS CON GLASSFISH

Posted: lunes, 29 de noviembre de 2010 by Skuarch in Etiquetas: , , , , , ,
0



Requerimientos
Para poder realizar este ejemplo se nececita de las siguientes apis dentro de tu classpath

appserv-rt.jar
appserv-admin.jar
appserv-deployment-client.jar
appserv-ext.jar
javaee.jar
j2ee.jar (glassfish 3)
imqjmsra.jar

Como ide se uso netbeans

Estas apis las puedes encontrar en la carpeta lib de glassfish, por ejemplo /opt/glassfish/lib y tambien nececitamos el servidor de applicaciones Glassfish 3

Java Message Service, es un sistema de mensajes que consite en dejar un mensaje en el servidor para ser consumido por un cliente (o consumidor), el mensaje puede ser consimido instantaneamente o a la hora que sea. La comunicacion que se realiza es asincrona. La siguiente images ilustra un servicio de mensajes para un chat.



En la imagen se puede apreciar (en una vision general) que el mensaje esta en el servidor y varios clientes/consumidores consultan ese mensaje, el mensaje permanece en el servidor el tiempo necesario, esto se puede configurar, por ejemplo el tiempo de vida del mensaje y la cantidad de clientes/consumidores que lo pueden consultar.

Las colas, los mensajes son guardados en colas. Una cola de mensajes es un lugar común donde algunas aplicaciones publican mensajes, que son consumidos por otras. Existen así 4 componentes principales en un sistema de mensajería:

publicador, es decir, quien publica un Mensaje en una Cola
consumidor, quien consume Mensajes de una Cola
mensaje, que tiene algún formato que tanto publicador como consumidor conocen.
cola, que es el lugar donde publicadores y consumidores se conectan y comunican a través de mensajes.
Es importante destacar que es un sistema asíncrono: el publicador y el consumidor no necesitan estar disponibles a la vez, ya que la cola actúa de intermediario, guardando y distribuyendo los mensajes a medida que el consumidor pueda atenderlos. [esta parte fue extraida de Dos ideas JMS]

Tipo Queue (publicadores y consumidores)

Este tipo de cola sigue la filosofia de el primero que entra es el primero en salir, y los mensajes se van guardando si nadie los consume.Queue es del tipo punto a punto.



Tipo Topic (publicador/subscritor)

Este tipo de cola, es muy similar a la subscripcion a una revista, los consumidores (suscritos a la cola) reciben los mensajes del servidor, y cuando se desconectan se pierden los mensajes.



Tipos de mensajes no solo se pueden mandar mensajes de texto TextMessage si no que tambien se pueden mandar MapMessage que son del tipo clave=valor, tambien existen los ObjectMessage para poder enviar objectos a la cola.

Ejemplo usando Queue

Para este ejemplo se utilizo Glassfish 3, y lo primero que vamos a hacer es crear un recurso JMS, accedemos a nuestro glassfish y en la parte de de Resources >> JMS Resources como se muestra en la imagen



connection factory permite a una aplicacion crear objectos JMS programadamente, seleccionamos esa opcion como se muestra en la imagen anterior. Damos click en el boton de new y ponemos los datos que muestra la imagen



Lo que se realizo fue ponerle un nombre al pool (factoryUno) y el typo (javax.jms.QueueConnectionFactory), los demas parametros se dejaron como estaban y presionar el boton de ok.

Para poder acceder a este recurso es necesario ponerle un nombre. Tenemos que crear el Destination Resource poniendole un nombre JNDI, el destino fisico y el tipo.



Damos click en el botn new y colocamos los parametros como muestra la imagen.



Los parametros configurados son: jndi name = jndi/factoryUno, Physical Destination Name = jndi/factoryUno, Resource Type = javax.jms.Queue y damos en el boton ok.

Clase PublicadorQueue