2010-12-02 30 views
1

J'ai besoin de lancer une tâche en arrière-plan à partir d'une servlet dans un serveur GlassFish, et j'ai pensé que WorkManager était en quelque sorte compatible avec Java EE pour y parvenir. Auparavant, dans Glassfish v2, cela fonctionnait raisonnablement bien: j'ai utilisé la méthode statique WorkManagerFactory.createWorkManager (String poolName) qui m'a donné un WorkManager que je pouvais utiliser pour démarrer un travail avec startWork (Work).Comment utiliser WorkManager avec GlassFish 3?

Dans GlassFish v3.0.1, l'API a été modifiée: il n'y a plus de méthode static createWorkManager() dans WorkManagerFatory, et createWorkManager prend 2 paramètres supplémentaires: un nom d'adaptateur de ressources et un ClassLoader. Je suis confus: comment suis-je censé obtenir un WorkManager maintenant ??

J'ai essayé de instancier le WorkManagerFactory moi-même et appeler createWorkManager() mais je reçois l'exception suivante:

Une erreur est survenue lors de l'instanciation du gestionnaire de travail pour les ressources adaptateur [JMSRA] java.lang. NullPointerException à com.sun.enterprise.connectors.work.WorkManagerFactory.getConnectorRuntime (WorkManagerFactory.java:202) à com.sun.enterprise.connectors.work.WorkManagerFactory.createWorkManager (WorkManagerFactory.java:122)

La documentation disponible sur ce sujet est très rare pour le moins ... donc toute aide sera grandement appréciée.

Répondre

1

Pour ce que ça vaut, j'ai fini par utiliser l'API TaskExecutor de Spring, qui a l'avantage de me permettre de choisir quelle implémentation utiliser. Fonctionne comme un charme.

L'interface était suffisamment proche de WorkManager pour que je puisse apporter très peu de modifications dans le code.