Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Aplicacion de escritorio escuchando alguna petición

Buenas tardes.

Tengo una aplicación de escritorio instalada en cada cliente y necesito poder enviar un mensaje y que automaticamente se le abra un panel con dicho mensaje.

Actualmente tenemos un hilo que cada X minutos comprueba si tiene mensajes y los muestra.

¿qué solución me podeis dar para que el mensaje aparezca al instante? Hay algún tipo de listener o api de java que permita hacer algo parecido? Supongo que si.

Gracias de antemano.

abril 10, 2014 | Registered Commenterfootmaniac84

Como no des más información...
¿Quién envía ese mensaje, y cómo?

abril 10, 2014 | Registered Commenterchoces

Actualmente tenemos un hilo que cada X minutos comprueba si tiene mensajes y los muestra.

En lugar de mirar cada X minutos podeis mirar cada segundo.
Como crees que funciona un listener?

Un saludo

abril 10, 2014 | Unregistered CommenterUnoPorAhi

Ese mensaje ahora mismo solo contiene un texto a mostrar pero estamos pensando en que pueda transportar objetos quizás.

Entiendo que puede preguntar cada 1 segundo pero creo que habrá alguna herramienta que te evite tener que hacer tú esa petición cada segundo. ¿qué opinais del JMS?

abril 10, 2014 | Registered Commenterfootmaniac84

"Preguntar"? Estamos hablando de push o de pull? En el cliente no tienes un hilo con un socket a la escucha? Si no es asi, como se realiza dicha consulta actualmente y con que protocolo?
Necesitamos saber mas detalles de la solucion actual que teneis desarrollada, porque si no es dar palos de ciego


Un saludo

abril 10, 2014 | Unregistered CommenterUnoPorAhi

La solución que está (MAL) implementada hace peticiones HTTP cada 5 minutos preguntando por cierta información al servidor.

Lo que buscamos es una solución nueva para poder tener a un cliente a la escucha de algún tipo de mensaje (texto u objeto java). Y si puede ser algún framework sencillo mejor claro.

Estoy leyendo sobre JMS pero no se si es la mejor solución.

Gracias.

abril 10, 2014 | Registered Commenterfootmaniac84

Buenas,

De cuantos clientes hablamos? Son en la misma red? Pueden estar en el exterior? Teneis separacion DMZ/LAN? Firewalls?

La solución HTTP no me parece mal, como comentas. Por varias razones:
-Al trabajar con el puerto 80 (normalmente) es muy amigable con los firewalls.
-Es tecnología neutra, por lo que puede ser invocado desde una aplicación en C, Java, PHP, perl , Python, etc
-Es una conexión stateless, se abre y se cierra, por lo que consume muchos menos recursos que una conexión continua punto a punto.
-Es una conexión relativamente facil de securizar con SSL/TSL
-Algunos servidores HTTP como nginx están muy optimizados y son extremadamente rápidos.

Como punto negativo tiene que supone cierta sobrecarga respecto a trabajar directamente TCP, ya que el protocolo HTTP tiene que llevar cabeceras tanto en la petición como en la respuesta. Sin embargo estamos hablando algunos cientos de bytes en cada petición, nada excesivo. Hacer una petición cada 5 segundos, por ejemplo, no debería representar apenas actividad en la red si hablamos de un número de clientes razonable (10, 20?).
Si el problema es que hoy en día las peticiones tardan en hacerse, entonces debereis revisar vuestra red, ya que el mismo problema os lo encontrareis con otras tecnologías.

Si quereis tener la capacidad de transmitir objetos, yo usaría JSON (http://www.json.org/) como formato de intercambio, que es fácilmente convertible en objeto y a la inversa y de forma neutral respecto al lenguaje usando una librería llamada Jackson http://www.mkyong.com/java/how-to-convert-java-object-to-from-json-jackson/

Cierto que podéis utilizar un software orientado a middleware como JMS, pero ya os digo de antemano que estáis poniendo un arco gótico para hacer la entrada a la caseta del perro, con perdón. Seguro que ya os habréis dado cuenta si habéis mirado un poco. Es complejo. Por otro lado, es una tecnología ligada a Java, y este mundo cambia muy rápido. El día de mañana os pedirán cambiar los clientes a Python y tendreis que tirarlo todo a la basura, clientes y servidor.

Es mi humilde opinión.

Un saludo y suerte,

abril 10, 2014 | Unregistered CommenterUnoPorAhi