gpt4 book ai didi

java - 尝试使用 Simple-JNDI 时出错

转载 作者:行者123 更新时间:2023-12-02 10:54:12 25 4
gpt4 key购买 nike

出于单元测试目的,我尝试设置 JNDI 以在不使用 Tomcat 的情况下连接到 HSQLDB。为此,我使用 Simple-JNDI并遵循此website

首先我创建了一个类来初始化 JNDI 数据源:

import org.hsqldb.jdbc.JDBCDataSource;    
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class JndiDataSource {
public void Initialize() throws NamingException {
// Create initial context
System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.osjava.sj.MemoryContextFactory");
System.setProperty("org.osjava.sj.jndi.shared", "true");
InitialContext ic = new InitialContext();

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

// Construct DataSource
JDBCDataSource ds = new JDBCDataSource();
ds.setDatabase("jdbc:hsqldb:hsql://localhost/xdb");
ds.setUser("SA");
ds.setPassword("");

// Put datasource in JNDI context
ic.bind("java:/comp/env/jdbc/myDS", ds);
}
}

然后在单元测试中,我调用 Initialize() 并尝试查找数据源。

import org.junit.jupiter.api.Test;    
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class JndiDataSourceTest {
@Test
public void testInitialize() throws NamingException {
JndiDataSource jds = new JndiDataSource();
jds.Initialize();

InitialContext ic = new InitialContext();
DataSource ds = (DataSource)ic.lookup("java:/comp/env/jdbc/myDS");
}
}

不幸的是,当我尝试调试此单元测试时,它在查找时失败,(DataSource)ic.lookup("java:/comp/env/jdbc/myDS"); 调试器说,

javax.naming.NameNotFoundException:java:/comp/env/jdbc/myDS

所以问题是,我做错了什么?

最佳答案

可能是一个简单的拼写错误 - 恕我直言,它应该是 org.osjava.sj.内存.MemoryContextFactory

关于java - 尝试使用 Simple-JNDI 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51911367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com