首页 文章

如何为JUnit for Jboss环境注册JNDI数据源

提问于
浏览
0

项目使用Hibernate并部署在Jboss 5.1上 . Hibernate使用JNDI来获取数据源 .

我想为DAO层创建JUnit测试,为此我需要创建JNDI数据源和事务管理器来测试而不运行Jboss .

为此我写了代码:

System.out.println(LocateRegistry.getRegistry());
Registry reg = LocateRegistry.createRegistry(1099);


Properties properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
properties.put(Context.URL_PKG_PREFIXES, "org.jboss.naming");
properties.put(Context.PROVIDER_URL, "localhost:1099");

InitialContext initialContextcontext = new InitialContext(properties);

当我尝试查找或绑定命名对象时,应用程序是毛躁的 . 并且经过一段时间抛出超时异常 . 绑定子上下文会抛出相同的异常

在Maven我包含依赖:

<groupId>org.jboss.client</groupId>
  <artifactId>jbossall-client</artifactId>
  <version>4.2.3.GA</version>

经过研究,我已经面对这篇文章http://something-about-tech.blogspot.com/2008/12/injecting-jndi-datasource-for-junit.html . 但是有这样的界线 Registry reg = LocateRegistry.createRegistry(1099); 错过了..我很困惑......

在相关的帖子(Registering MySQL DataSource with JNDI for Hibernate)我对注册表数据源感兴趣,但有

Context.INITIAL_CONTEXT_FACTORY="com.sun.jndi.rmi.registry.RegistryContextFactory"

请帮忙 .

1 回答

  • 1

    org.jnp.interfaces.NamingContextFactory 是JBoss特定的协议,你不能用它连接到RMI注册表 . 试试这个测试

    public class Test1 implements Serializable, Remote {
    
        public static void main(String[] args) throws Exception {
            Registry reg = LocateRegistry.createRegistry(1099);
            Context ctx = new InitialContext();
            ctx.bind("rmi://localhost/xxx", new Test1());
            Test1 t1 = (Test1) ctx.lookup("rmi://localhost/xxx");
            System.out.println(t1);
        }
    }
    

相关问题