Vous pourriez peut-être utiliser un CommonJ WorkManager (JSR 237) mise en œuvre comme Foo-CommonJ:
CommonJ − JSR 237 Timer & WorkManager
Foo-CommonJ est un JSR 237 Minuterie et
WorkManager mise en œuvre. Il est
conçu pour être utilisé dans des contenants
ne pas venir avec leur propre
mise en œuvre – essentiellement de la plaine de la servlet
les conteneurs comme Tomcat. Il peut également être
utilisé dans entièrement soufflé applications Java EE
les serveurs qui n'ont pas de WorkManager
API ou non-standard de l'API comme
JBoss.
Pourquoi à l'aide de WorkManagers?
La commune de cas d'utilisation est qu'un Servlet
ou JSP doit regrouper des données provenant de
de multiples sources et de les afficher dans
une seule page. Faire votre propre à enfiler une
géré de l'environnement comme un J2EE
le conteneur est inapproprié et doit
ne jamais être fait au niveau de l'application
code. Dans ce cas, le WorkManager API
peut être utilisé pour récupérer les données dans
en parallèle.
Installation/Déploiement CommonJ
Le déploiement de ressources JNDI
fournisseur de personne à charge. Cette mise en œuvre
vient avec une Usine de classe que
met en œuvre la
javax.naming.spi.ObjectFactory
interface avec le rend facilement
déployable en plus populaire
les conteneurs. Il est également disponible en tant que
Service JBoss. de plus...
Mise à jour: Juste pour préciser, ici, est ce que la Simultanéité des Utilitaires pour Java EE Aperçu (il semble que ce soit le successeur de la JSR-236 & JSR-237) écrit à propos de la non géré threads:
2.1 Container-Managed vs non géré Fils
Serveurs d'applications Java EE
exiger de la gestion des ressources dans l'ordre
afin de centraliser l'administration et de la
protéger les composants de l'application de
consommer des ressources inutiles. Cela peut
être atteint par la mise en commun de
des ressources et de la gestion d'une ressource
cycle de vie. À l'aide de Java SE de la simultanéité
les utilitaires tels que l'
java.util.concurrency
API,
java.lang.Thread
et
java.util.Timer
dans un serveur
demande de composant comme une
servlet ou EJB sont problématiques, puisque
le contenant et le serveur n'ont pas de
la connaissance de ces ressources.
Par l'extension de l'
java.util.concurrent
API,
et des serveurs d'application Java EE
les conteneurs peuvent devenir conscients de l'
les ressources utilisées et de fournir
le contexte de l'exécution correcte pour le
les opérations asynchrones à courir avec.
Cet objectif est largement atteint en fournissant
géré versions de la principale
java.util.concurrent.ExecutorService
les interfaces.
Donc rien de nouveau de l'OMI, le "vieux" problème est le même, non géré fil sont encore non géré threads:
- Ils sont inconnus pour le serveur d'application et n'ont pas accès à Java EE de l'information contextuelle.
- Ils peuvent utiliser des ressources sur l'arrière du serveur d'applications, et sans administration de la capacité de contrôle de leur nombre et de l'utilisation des ressources, ce qui peut influer sur le serveur d'application sa capacité à récupérer les ressources de l'échec, ou à l'arrêt en douceur.
Références