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'
etprovided 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.