Foros del Web » Programación para mayores de 30 ;) » Java »

Pool de Conexiones MultiProceso

Estas en el tema de Pool de Conexiones MultiProceso en el foro de Java en Foros del Web. Chavos... tengo experiencia con esta chachara de JAVA pero necesito hacer algo que almenos a mi nunca se me había ocurrido y no se como ...
  #1 (permalink)  
Antiguo 21/02/2008, 10:43
 
Fecha de Ingreso: febrero-2008
Mensajes: 14
Antigüedad: 16 años, 2 meses
Puntos: 0
Pool de Conexiones MultiProceso

Chavos... tengo experiencia con esta chachara de JAVA pero necesito hacer algo que almenos a mi nunca se me había ocurrido y no se como hacerlo... se los platico...

Tengo una aplicacion que genera sus propios hilos, esa clase tiene su propio pool de conexiones el cual solo permite abrir 3 conexiones a un servidor de MQ ( Podemos dejarlo como si fuera a Base de Datos ), en ese momento todo esta perfecto, pero si creo tres instancias del mismo proyecto en diferentes maquinas se me crean tres conexiones por cada instancia con lo cual tendria 9 conexiones en total... lo que necesito hacer es......

Que independientemente de cuantas instancias en diferentes maquinas o incluso en la misma solo se generen tres conexiones y se las compartan entre todos los procesos.....

Mi duda es....

¿Se pueden compartir las conexiones entre ellos, teniendo en cuenta que no se los ids de cada thread ya que estan en diferentes maquinas?

¿Si ya existe una instancia con una conexion abierta, las demas instancias pueden ocupar esa misma conexion... como la pasarian ?

La única restriccion es de que solo debe haber tres conexiones abiertas y de preferencia que no se cierre, es decir, una vez que la conexión ha sido abierta así se debe conservar y todas las demas instancias asi esten corriendo en China busque si existe alguna conexion abierta y la reutilice ....

Cualquier idea es bien recibida.... help me !!!!!
  #2 (permalink)  
Antiguo 21/02/2008, 12:12
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Re: Pool de Conexiones MultiProceso

Tal ves (tal ves no) esto te podría servir...

La primera opción sería configurar la cantidad máxima de connexiones en el servidor mq que estés usando.

La segunda opción sería comunicarse entre todos los clientes a través de RMI o simple TCP para sincronizarlos manualmente con flags.
Pero tendrías que saber cuales clientes estén conectados o descubrirlos con otra tecnología como JNDI o "udp broadcast".

La tercera opción sería crear una aplicación de servidor que se anteponga a tu servidor mq (como proxy) y sea el encargado de realizar las conexiones, implementado con RMI si el alcance está en la intranet. (Las "verdaderas conexiones" estarían instanciadas (estarian corriendo) en el servidor, puesto que no podrías "pasar" una conexión TCP abierta de una PC a otra)

El inconveniente de que "así esté en China" sería un problema de seguridad con RMI, a menos que tengas un servidor ssl o algo parecido. Me imagino que también podrías implementar "Web Services" que hagan proxy con mq. (Desventaja : tendrías que implementar todas la funciones que usas en mq).

No se me ocurren otros métodos, pero sería interesante leer varias opiniones al respecto.

(Si solo necesitas pasar la conexión entre threads solo tienes que usar variables publicas en la clase que crea los threads y syncronizarlas)

Última edición por HackmanC; 21/02/2008 a las 12:26 Razón: edit
  #3 (permalink)  
Antiguo 21/02/2008, 12:49
 
Fecha de Ingreso: febrero-2008
Mensajes: 14
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Pool de Conexiones MultiProceso

Cita:
Iniciado por HackmanC Ver Mensaje
Tal ves (tal ves no) esto te podría servir...

La primera opción sería configurar la cantidad máxima de connexiones en el servidor mq que estés usando.

La segunda opción sería comunicarse entre todos los clientes a través de RMI o simple TCP para sincronizarlos manualmente con flags.
Pero tendrías que saber cuales clientes estén conectados o descubrirlos con otra tecnología como JNDI o "udp broadcast".

La tercera opción sería crear una aplicación de servidor que se anteponga a tu servidor mq (como proxy) y sea el encargado de realizar las conexiones, implementado con RMI si el alcance está en la intranet. (Las "verdaderas conexiones" estarían instanciadas (estarian corriendo) en el servidor, puesto que no podrías "pasar" una conexión TCP abierta de una PC a otra)

El inconveniente de que "así esté en China" sería un problema de seguridad con RMI, a menos que tengas un servidor ssl o algo parecido. Me imagino que también podrías implementar "Web Services" que hagan proxy con mq. (Desventaja : tendrías que implementar todas la funciones que usas en mq).

No se me ocurren otros métodos, pero sería interesante leer varias opiniones al respecto.

(Si solo necesitas pasar la conexión entre threads solo tienes que usar variables publicas en la clase que crea los threads y syncronizarlas)

De antemano muchas gracias por tus opiniones. Estoy pensando hacer el desarrollo por medio de RMI, ya que almenos mi experiencia si genero algun web service ( SOAP ) el performance se veria afectado ( por muy poco ). Todas las aplicaciones estaran bajo JAVA. Otra razón por la que estoy pensando en RMI es por que algunas instancias serán diferentes pero correran en la misma máquina Virtual...... creo que RMI si lo puede manejar.... aún así.. continuo escuchando sugerencias u opiniones
  #4 (permalink)  
Antiguo 21/02/2008, 13:38
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Pool de Conexiones MultiProceso

Yo apuesto por la tercera opcion. Sincronizar el acceso concurrente de 3 pools diferentes puede ser una pesadilla para conseguir un equilibrio y que ademas sea fiable.

Si los tres "clientes" y el servidor los controlas de forma facil, usando RMI no te deberia dar problemas (solo puede darlos si se actualizan por separado y hay incompatibilidad de versiones entre las clases que se intercambian) y mucho mejor que usar WebServices que dan pobre rendimiento y solo tienen sentido para otros casos.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:19.