【发布时间】:2014-04-24 02:50:18
【问题描述】:
我有一些问题要让 JndiDataSourceLookup 与 tomcat 一起工作...
我克隆了一个 tomcat,它的所有配置和应用程序从一个 vm 到另一个。
原始安装工作正常,但是当我尝试启动新安装时,它失败了:
Caused by: javax.naming.NameNotFoundException: Name [jdbc/sipreDs] is not bound in this Context. Unable to find [jdbc].
所以我尝试进行一些调试并将我的工厂方法编写为:
@Bean
@SneakyThrows
public DataSource dataSource(){
Context context = new InitialContext();
NamingEnumeration<NameClassPair> names = context.list("java:comp/env/jdbc");
System.out.println("========================================");
System.out.println(" CONTEXT JNDI");
System.out.println("========================================");
while (names.hasMore()){
NameClassPair name = names.next();
System.out.println(name.getName());
}
System.out.println("=========================================");
final JndiDataSourceLookup dsLookup = new JndiDataSourceLookup();
dsLookup.setResourceRef(true);
return dsLookup.getDataSource("jdbc/sipreDs");
}
输出是:
========================================
CONTEXT JNDI
========================================
sipreDs
=========================================
数据源在conf/context.xml文件中定义:
<Resource name="jdbc/sipreDs" auth="Container" type="javax.sql.DataSource"
maxActvive="100" maxIdle="30" maxWait="10000"
username="sipre" password="sipre" driverClassName="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://localhost:3306/sipre"/>
为什么它使用普通的jndi打印数据源但使用spring会抛出异常?
【问题讨论】:
标签: java spring tomcat datasource jndi