查找后无法使用DataSource

时间:2016-02-10 19:03:45

标签: java sql-server junit jndi

我正在创建一个JUnit来测试使用Apache Shiro进行身份验证的应用程序的一部分,为此我创建了一个SQLServerConnectionPoolDataSource并绑定它。

当我尝试查找DataSource并获得连接时,问题就出现了,它无法对SQLServerConnectionPoolDataSource中配置的用户进行身份验证。

在分析之后分析DataSource之后和查找之后,唯一的区别是我从查询中得到的那个没有密码数据。

这是我正在使用的代码:

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("jdbc");

// Construct DataSource
SQLServerConnectionPoolDataSource ds = new SQLServerConnectionPoolDataSource();

ds.setURL("URL");
ds.setUser("USER");
ds.setPassword("PASSWORD");

ic.bind("jdbc/mentorweb", ds);

DataSource dsb = (DataSource) ic.lookup("jdbc/mentorweb");

Connection conn = dsb.getConnection();

代码有什么问题?

1 个答案:

答案 0 :(得分:0)

首先,您需要使用

创建上下文
ic.createSubcontext("java:comp/env/jdbc");
...
ic.bind("java:comp/env/jdbc/mentorweb", ds);