我正在尝试运行一个连接到后端DB2数据库(IBM dashdb)的简单java Web应用程序来获取一些数据。
当我尝试在ubuntu托管的tomcat 8.5上运行此应用程序时,我收到一条奇怪的错误消息。 我设法让这个应用程序在Windows上托管的tomcat v8上运行。
实际的错误消息是:
找不到合适的jdbc驱动程序:db2:// yp-dashdb ......
我真的不明白为什么会这样,因为我有db2jcc4。在我的web-inf \ lib文件夹中。
我认为库有问题所以我创建了一个单独的Java应用程序来简单地连接并从数据库中检索一些数据。对于同一个库,这个工作正常。
这是用于设置连接的代码(我修剪了一些细节)。
private Connection conn = null;
conn= DriverManager.getConnection("jdbc:db2://yp-dashdb...");
请记住,这个完全相同的代码适用于标准Java应用程序,因此连接详细信息可以正常工作,并且连接信息中没有拼写错误。
有什么明显的东西让我在这里俯瞰吗?
答案 0 :(得分:1)
花了一些时间试图弄清楚这一点后,我发现了问题。我的驱动程序没有被DriverManager注册。我发现的快速修复是在尝试加载驱动程序之前手动注册它。
DriverManager.registerDriver(new com.ibm.db2.jcc.DB2Driver());
这解决了我的问题。我发现这个的方法是打印出所有已注册的驱动程序并打印出来。不是最优雅的解决方案,但它帮助我找出了我所缺少的东西。
/*
System.out.println("checking for drivers");
Enumeration<Driver> myDrivers = DriverManager.getDrivers();
System.out.println(myDrivers.hasMoreElements());
while(myDrivers.hasMoreElements()){
System.out.println(myDrivers.nextElement().toString());
}
*/
答案 1 :(得分:0)
WEB-INF / lib在您的应用程序中。可能是因为tomcat在你的应用加载之前需要这个驱动程序?尝试将其放入tomcat的lib文件夹并重新启动...
以下是关于同一主题的另一个问题:Why must the JDBC driver be put in TOMCAT_HOME/lib folder?