尝试加载InitialContext

时间:2017-09-06 11:32:37

标签: java gradle junit jboss jndi

我正在测试(使用JUnit)一个休息服务,并且为了保证一切按预期进行,我需要使用一些EJB方法。说,我有:

  • 被测试的课程,这里没有兴趣;
  • 测试课

    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 =-远程处理://本地主机:8080 remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS = FALSE jboss.naming.client.ejb.context =真

    remote.connection.default.username =管理员 remote.connection.default.password =管理员

  • 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'provided project(path: ':dao')(这是我想从中获取EJB的模块)。

但是当我尝试运行测试时,它会失败并显示javax.naming.NoInitialContextException: Cannot instantiate class: org.jboss.naming.remote.client.InitialContextFactory [Root exception is java.lang.ClassNotFoundException: org.jboss.naming.remote.client.InitialContextFactory]

此处和网上的其他类似问题建议将jboss-client添加到CLASSPATH,但是我已经查看了我的发行版中jboss-client附近的README,它说不要这样做并做一个gradle相反的依赖。所以我做到了。

另一个奇怪的事情是:我从测试中获得了代码和属性到同一项目中的另一个模块(由另一个编码器编写)。我尝试运行这些测试,它们按预期工作。我复制了一切甚至更多(gradle依赖),但得到了这个例外。

我试图简化代码以便说明,我可能有一些重要的缺失。如果需要,我可以复制一些设置和代码部分。

1 个答案:

答案 0 :(得分:0)

我将ejb-client的依赖关系从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',然后就开始工作了。不确定它是否有用。