2 votes

Conteneur GlassFish intégré pour le test unitaire des sessions beans dans NetBeans pointant vers un mauvais domaine

J'ai écrit des tests unitaires pour plusieurs beans de session que j'ai créés. Cependant, lorsque j'essaie de les exécuter, NetBeans me donne l'erreur suivante :

Aucun fournisseur EJBContainer n'est disponible. Les fournisseurs suivants : org.glassfish.ejb.embedded.EJBContainerProviderImpl a retourné null à l'appel createEJBContainer.

Je soupçonne fortement que c'est la cause première du problème :

SEVERE : EJB6004:Emplacement d'installation du serveur d'applications spécifié [ C:\Development\GlassFish\3.1\glassfish\domains\domain1 ] n'existe pas.

C'est vrai. Le domaine 1 n'existe pas. J'ai moi-même créé un domaine de "développement" et supprimé domain1 mais il semble qu'il y ait une référence persistante dont je n'ai aucune idée de l'endroit où la modifier. Le conteneur non intégré auquel le conteneur intégré fait référence est également enregistré dans NetBeans et correctement relié au domaine de développement. Il n'y a aucun problème avec les déploiements réguliers du projet.

Toute aide est la bienvenue !

3voto

Matthew Cornell Points 734

Je crois que ScatteredWar est dépassé. Après un tas de recherches, j'ai trouvé ce post incroyablement utile Introduction rapide à l'embarquabilité de GlassFish Open Source Edition 3.1 ce qui donne cet extrait :

Si votre archive n'est pas pré-construite, mais que ses composants sont dispersés dans plusieurs répertoires, vous pouvez être intéressé par l'utilisation des API d'archives dispersées :

import org.glassfish.embeddable. ; import org.glassfish.embeddable.archive. ;

Deployer deployer = glassfish.getDeployer();
// Create a scattered web application.
ScatteredArchive archive = new ScatteredArchive("testapp", ScatteredArchive.Type.WAR);
// target/classes directory contains my complied servlets
archive.addClassPath(new File("target", "classes"));
// resources/sun-web.xml is my WEB-INF/sun-web.xml
archive.addMetadata(new File("resources", "sun-web.xml"));
// resources/MyLogFactory is my META-INF/services/org.apache.commons.logging.LogFactory
archive.addMetadata(new File("resources", "MyLogFactory"), "META-INF/services/org.apache.commons.logging.LogFactory");
deployer.deploy(archive.toURI())

Autres docs : Guide du serveur embarqué Oracle GlassFish Server 3.1 et La mise à jour API .

1voto

Tim Sparg Points 1985

Adam Bien y Arun Gupta parler des moyens d'intégrer GlassFish pour les tests unitaires.

La pièce principale est la suivante :

        GlassFish glassfish = new GlassFish(port);
        ScatteredWar war = new ScatteredWar(NAME,
            new File("src/main/resources"),
            new File("src/main/resources/WEB-INF/web.xml"),
            Collections.singleton(new File("build/classes").toURI().toURL()));
        glassfish.deploy(war);

Une autre approche consisterait à utiliser OpenEJB pour effectuer vos tests unitaires, car cela vous permettra de vous assurer que vous respectez les normes. Adam comme a a un entrée pour mettre ça en place.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X