2012-03-14 51 views

回答

1

如果你使用的是JBoss,你应该使用minicontainer。它从主应用程序服务器启动(作为J2SE应用程序)。 AFAIK,这个问题没有“标准”解决方案。

另一种方法是建立专门的JUnit测试服务器,在J2SE环境中手动配置您的JNDI环境(您可以,希望能想出如何使用您的应用程序服务器)并连接到远程服务器。

2

下面是来自官方的春天文档http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/testing.html#mock-objects-jndi报价:

org.springframework.mock.jndi包里有一个JNDI SPI,你可以用它来建立一个简单的JNDI环境的实现测试套件或独立应用程序。

从此doc我用它声明一个数据源Spring上下文配置类:

@Configuration 
public class JndiDataConfig { 
    @Bean 
    public DataSource dataSource() throws Exception { 
     Context ctx = new InitialContext(); 
     return (DataSource) ctx.lookup("java:comp/env/jdbc/datasource"); 
    } 
} 
0

如果您喜欢测试一样,您可以使用简单JNDI的应用程序容器特殊的环境以外的类。它为您创建JNDI环境并将属性文件的值绑定到它。因此,如果您将某些配置参数定义为环境对象,则可以模拟应用程序容器的环境。它也可以为你初始化一个DataSource或一个连接池并将它绑定到一个JNDI上下文,这样你的代码就可以照常访问它们了。有关更多信息,请参见http://github.com/h-thurow/Simple-JNDI