2017-09-06 2 views
-1

Je teste (avec JUnit) un service de repos et pour que tout fonctionne comme prévu, j'ai besoin d'utiliser des méthodes EJB. Dites, j'ai:ClassNotFoundException: org.jboss.naming.remote.client.InitialContextFactory lors du chargement de InitialContext

  • la classe à tester, qui ne présente aucun intérêt ici;
  • test classe

    public class UploadServiceTest { 
        private final String RemoteBeanLookupKey = "/project/dao/TaskManager!ru.project.dao.TaskManager"; 
        @EJB private TaskManager taskManager; 
    
        @Before 
        public void startEverythingNeeded() throws Exception { 
         InitialContext ctx = null; 
         Properties jndiProp = new Properties(); 
    
         InputStream testConfStream = getClass().getClassLoader().getResourceAsStream("jndi.properties"); 
         jndiProp.load(testConfStream); 
    
         ctx = new InitialContext(jndiProp); 
    
         taskManager = ((TaskManager) ctx.lookup(RemoteBeanLookupKey)); 
        } 
        @Test 
        public void blablabla(){ 
        } 
    } 
    
  • jndi.properties

    java.naming.factory.initial = org.jboss.naming.remote.client.InitialContextFactory java.naming.provider.url = http-Remoting: // localhost: 8080 = false remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS jboss.naming.client.ejb.context = true

    remote.connection.default.username = admin remote.connection.default.password = admin

  • dépendances Gradle: testCompile group: 'org.wildfly', name: 'wildfly-ejb-client-bom', version: '8.2.0.Final', ext: 'pom', testCompile group: 'junit', name: 'junit', version: '4.11' et provided project(path: ':dao') (ce qui est le module que je veux obtenir EJB à partir).

Mais lorsque je tente de réaliser des essais, il échoue avec javax.naming.NoInitialContextException: Cannot instantiate class: org.jboss.naming.remote.client.InitialContextFactory [Root exception is java.lang.ClassNotFoundException: org.jboss.naming.remote.client.InitialContextFactory]

D'autres questions similaires sur ce site et sur le net suggère d'ajouter jboss-client à CLASSPATH, mais je l'ai regardé dans README près jboss -client dans ma distribution et il a dit de ne pas agir comme ça et de faire une dépendance à la place. Donc j'ai fait.

Une autre chose étrange à ce sujet: J'ai obtenu le code et les propriétés des tests à un autre module dans le même projet (écrit par un autre codeur). J'ai essayé d'exécuter ces tests et ils fonctionnent comme prévu. J'ai tout copié et même plus (dépente de gradle), mais obtenir cette exception.

J'ai essayé de simplifier le code afin d'illustrer, je peux avoir quelque chose d'important manquant. Si nécessaire, je peux copier d'autres parties de l'installation et du code.

Répondre

0

J'ai changé la dépendance sur ejb-client de testCompile group: 'org.wildfly', name: 'wildfly-ejb-client-bom', version: '8.2.0.Final', ext: 'pom' à testCompile 'org.wildfly:wildfly-ejb-client-bom:10.0.0.Final' et il a commencé à fonctionner. Je ne sais pas si c'est utile.