java comp env system_对于java:comp / env的junit测试

这篇博客探讨了如何在JUnit测试和独立应用中模拟`java:comp/env`来测试服务器端代码。作者尝试通过设置系统属性和创建命名上下文来建立环境,但在执行过程中遇到了`NameNotFoundException`。问题可能在于每次创建新的`InitialContext`时,先前创建的子上下文被清除。
摘要由CSDN通过智能技术生成

我的服务器端有一个如下代码的方法

Context ctx = (Context)new InitialContext().lookup("java:comp/env");如何在使用JUnit甚至独立应用程序的客户端中测试此方法?

我试图做到以下,但仍然失败

@BeforeClass

public static void setUpClass() throws Exception {

// rcarver - setup the jndi context and the datasource

try {

// Create initial context

System.setProperty(Context.INITIAL_CONTEXT_FACTORY,

"org.apache.naming.java.javaURLContextFactory");

System.setProperty(Context.URL_PKG_PREFIXES,

"org.apache.naming");

InitialContext ic = new InitialContext();

ic.createSubcontext("java:");

ic.createSubcontext("java:/comp");

ic.createSubcontext("java:/comp/env");

ic.createSubcontext("java:/comp/env/jdbc");

// Construct DataSource

OracleConnectionPoolDataSource ds = new OracleConnectionPoolDataSource();

ds.setURL("jdbc:oracle:thin:@host:port:db");

ds.setUser("MY_USER_NAME");

ds.setPassword("MY_USER_PASSWORD");

ic.bind("java:/comp/env/jdbc/nameofmyjdbcresource", ds);

} catch (NamingException ex) {

Logger.getLogger(MyDAOTest.class.getName()).log(Level.SEVERE, null, ex);

}

}例外是

javax.naming.NameNotFoundException:其余名称:env

实际上,我认为在服务器端,一旦新的InitialContext(),客户端的所有以前的创建子上下文都清楚了,是吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值