Tengo esta aplicación web que se ha convertido en un desastre inmanejable.Ampliación de aplicaciones web Java con complementos
Quiero dividirlo en una parte común de "estructura" (que todavía incluye elementos web como páginas e imágenes) y varios módulos que agregan funciones y pantallas adicionales. Quiero que esta refactorización también sea útil como un sistema de complemento para extensiones de terceros.
Todos los módulos deben ser unidades separadas de implementaciones, idealmente un archivo war o jar.
Intenté simplemente hacer varios archivos de guerra normales, pero Tomcat mantiene (de acuerdo con la especificación del servlet) estos archivos de guerra completamente separados el uno del otro, por lo que no pueden compartir sus clases, por ejemplo.
Necesito complementos para poder ver el classpath "principal".
Necesito la aplicación principal para tener cierto control sobre los complementos, como poder enumerarlos y establecer su configuración.
Me gustaría mantener una separación completa entre los complementos (a menos que especifiquen dependencias) y cualquier otra aplicación web no relacionada que pueda estar ejecutándose en el mismo Tomcat.
Me gustaría que se enruten bajo el prefijo de URL de la aplicación "principal", pero eso no es necesario.
Me gustaría utilizar Tomcat (los grandes cambios arquitectónicos deben coordinarse con demasiadas personas), pero también para escuchar acerca de una solución limpia en el mundo EJB u OSGi, si los hay.
Yo y un hombre de mi trabajo hemos estado hablando de hacer esto también. – Konrad
¿Alguien realmente lo ha hecho con éxito con osgi? Si es así, ¿qué orientación tendría sobre cómo comenzar? – harmanjd
Actualmente estoy trabajando con un equipo que usó OSGi para implementar la capa de servicio de la aplicación. Utilizaron Apache Felix e incrustaron un contenedor Jetty para exponer los servicios como servicios web RESTful. Hubo problemas debido al hecho de que Apache Felix no admitía fragmentos completamente hasta la versión 1.8. –