我正在创建一个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();
代码有什么问题?
答案 0 :(得分:0)
首先,您需要使用
创建上下文ic.createSubcontext("java:comp/env/jdbc");
...
ic.bind("java:comp/env/jdbc/mentorweb", ds);