12
votes

Méthode d'appel en EJB sur JBoss Startup

Je recherche un point d'entrée dans un EJB déployé sur JBoss.

Servlets a la balise LOAD-ON-STARTUP à utiliser dans son web.xml .

Je cherche à la recherche de la même fonctionnalité init () pour un EJB.


0 commentaires

5 Réponses :


25
votes

Cela n'existait pas pour EJB avant 3.1. Avec EJB 3.1, vous pouvez utiliser un haricot Singleton pour simuler que:

de Application Démarrage / arrêt Callbacks < / a>: xxx

Sinon, vous devrez compter sur le bon vieux truc pour utiliser un servletContextinitializer .

Il existe une certaine extension spécifique à l'application, par exemple Listencycle Listener pour Glassfish. Peut-être qu'il y a une telle chose pour JBoss.

Mais si j'étais vous, j'essaierais de compter sur les caractéristiques standard autant que possible. Le problème avec une extension non standard est que vous ne savez jamais exactement ce qui peut être fait ou non, par ex. Pouvez-vous commencer la transaction ou non, etc.


3 commentaires

En variante, on peut toujours utiliser un MBean avec des méthodes de cycle de vie start / stop. Le MBean est injecté avec l'EJB nécessaire et appelle quelles que soient les méthodes de celui-ci requises.


Merci. Deux superpositions. J'ai fini avec un "servletwrapper" à la place. Mais un refacteur est à l'ordre du jour. Acclamations!


J'utilise JBoss 5.1 (pas sûr s'il prend en charge EJB3.1), je peux utiliser cette technique pour invoquer la méthode sur Déployer? Merci.



1
votes

Les haricots gérés peuvent être utilisés pour effectuer un certain processus au démarrage JBoss, vous devez ajouter une entrée de ce haricot géré dans le fichier de configuration.


0 commentaires

1
votes

Vous devriez pouvoir ajouter la ligne suivante en haut de la méthode que vous souhaitez exécuter au démarrage:

@Observer("org.jboss.seam.postInitialization")


0 commentaires

4
votes

Cet article décrit sept manières différentes d'invoquer la fonctionnalité au démarrage du serveur. Tous ne fonctionneront pas avec JBoss cependant.

Sept façons de commencer . Java EE CLASSES DE STARTUPS AVEC GLAUVIS ET WELLOGIC


0 commentaires

4
votes

Si vous ciblez JBoss comme 5.1, et cela ne vous dérange pas d'utiliser le Extensions JBoss EJB 3.0 , vous pouvez construire un haricot de service à bootstrap votre EJB. Si votre service implémente une interface annotée avec la @management code> Annotation et déclare une méthode avec la signature Start annulation du public () jette une exception code>, jboss appellera cette méthode lorsqu'il commence service. Vous pouvez ensuite appeler une méthode dédiée init () code> sur l'EJB que vous souhaitez initialiser:

@Service
public class BeanLauncher implements BeanLauncherManagement
{
    @EJB private SessionBeanLocal sessionBean;

    @Override
    public void start() throws Exception
    {
        sessionBean.init();
    }
}

@Management
public interface BeanLauncherManagement
{
    public void start() throws Exception;
}


0 commentaires