Actualmente tenemos una aplicación web que carga un contexto de aplicación Spring que crea una instancia de una pila de objetos comerciales, objetos DAO e Hibernate. Nos gustaría compartir esta pila con otra aplicación web, para evitar tener múltiples instancias de los mismos objetos.¿Cuál es la mejor forma de compartir instancias de objetos comerciales entre aplicaciones web Java usando JBoss y Spring?
Hemos examinado varios enfoques; exponer los objetos usando JMX o JNDI, o usando EJB3.
Los diferentes enfoques tienen todos sus problemas, y estamos buscando un método liviano.
¿Alguna sugerencia para resolver este problema?
Edición: He recibido, solicitar observaciones que yo elaborar un poco, así que aquí va:
El principal problema que queremos resolver es que queremos tener sólo una instancia de hibernación. Esto se debe a problemas con la invalidación de la memoria caché de segundo nivel de Hibernate cuando se ejecutan varias aplicaciones cliente que trabajan con la misma fuente de datos. Además, la pila de negocios/DAO/Hibernate está creciendo bastante grande, por lo que no duplicarlo tiene más sentido.
En primer lugar, tratamos de ver cómo la capa de negocios por sí sola podría estar expuesta a otras aplicaciones web, y Spring ofrece JMX envolviendo al precio de una pequeña cantidad de XML. Sin embargo, no pudimos vincular las entidades JMX al árbol JNDI, por lo que no pudimos buscar los objetos desde las aplicaciones web.
Luego intentamos unir la capa de negocios directamente a JNDI. Aunque Spring no ofreció ningún método para esto, usar JNDITemplate para vincularlos también era trivial. Pero esto dio lugar a varios problemas nuevos: 1) El administrador de seguridad niega el acceso al cargador de clases RMI, por lo que el cliente falló una vez que intentamos invocar métodos en el recurso JNDI. 2) Una vez que se resolvieron los problemas de seguridad, JBoss lanzó IllegalArgumentException: object no es una instancia de declaración de clase. Un poco de lectura revela que necesitamos implementaciones de stub para los recursos JNDI, pero esto parece una gran molestia (¿quizás Spring nos puede ayudar?)
Aún no hemos analizado demasiado a EJB, pero después del primero Dos intentos Me pregunto si lo que estamos tratando de lograr es posible.
Para resumir lo que estamos tratando de lograr: una instancia de JBoss, varias aplicaciones web que utilizan una pila de objetos comerciales sobre la capa DAO e Hibernate.
Saludos,
Nils
Podría comentar 1. ¿Qué problema está tratando de resolver? 2. Los problemas que encontraste con los enfoques respectivos que mencionas. Esto permitiría una respuesta más centrada ... – johnstok
Era difícil decirlo todo en 300 caracteres, así que edité la pregunta para agregar más detalles :-) –