Estamos creando una aplicación web en la que necesitamos concurrencia para algunos casos comerciales. Esta aplicación se implementaría en un contenedor Tomcat. Sé que la creación de subprocesos definidos por el usuario en el contenedor web es una mala idea y estoy tratando de explorar las opciones que tengo.Implementación de concurrencia en la aplicación web Java EE
- Haga que mi biblioteca multiproceso se utilice como un componente JCA. Somos reacios a utilizar este enfoque debido a la curva de aprendizaje que podría estar involucrada.
- Sé que hay API de WorkManager disponible, pero supongo que eso no está implementado por tomcat, por lo que esta opción se apaga.
- Hice algunas investigaciones y descubrí que se recomienda la biblioteca CommonJ para Tomcat. ¿Alguien lo ha usado?
- Además, veo que hay ManagedExecutorService disponible, pero no estoy seguro de cómo usarlo y ¿es diferente de la API de WorkManager (y de la biblioteca commonJ)?
Cualquier ayuda sobre esto apreciada. Por cierto, el uso de JMS está fuera de toda duda debido al entorno de despliegue. Me inclino por los puntos 3 y 4, pero no tengo mucho conocimiento al respecto. Podría alguien guiar a los pls.
No estoy seguro de que los hilos de desove sean una buena idea. si tomcat no conoce los hilos, ¿cómo lo controlaría? p.ej. cerrar el contenedor sería un problema si los subprocesos se están ejecutando y tampoco hay que olvidar que, dado que los hilos están fuera del control de tomcat, los hilos estarán compitiendo con Tomcat por la memoria. – arya
Arya, Will tiene razón, administre sus propios hilos y (confíe en mi dolor) no vaya por la ruta EJB/JCA. El hecho de estar en un contenedor Servlet no cambia la necesidad de controlar su grupo de subprocesos. El servicio de Ejecutor puede ayudarlo fácilmente a hacer esto. Al vincular el ciclo de vida de sus ejecutores con el de sus servlets, garantiza una inicialización y un apagado limpios. –
BGR, ¿tienen alguna idea sobre ManagedExecutorService? ¿Sería eso más apropiado en este contexto? – arya