0

我正在尝试从部署在 WebSphere for Z/OS 上的 war 文件中使用嵌入式 Derby 数据库。当我使用如下代码创建数据库时,我最终使用 WebSphere 服务器 7.0 中包含的 derby.jar 创建了 derby 版本 10.3 数据库,而不是包含在我的 WEB-INF/lib 目录中的版本 10.5 derby.jar。

Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:derby:testDB;create=true");
DatabaseMetaData dbmd = conn.getMetaData();
String productName = dbmd.getDatabaseProductName();
String productVersion = dbmd.getDatabaseProductVersion();

如何强制 WebSphere 使用包含在我的 war 文件中的 derby.jar 文件中的 org.apache.derby.jdbc.EmbeddedDriver 类?

4

2 回答 2

1

在 J2EE 环境中,最好让服务器管理连接,而将 JDBC 提供程序放在 WAR 中通常不是一个好主意。

WAS 7.0 中的新特性是一种称为“隔离资源提供者”的特性,它允许您配置多个版本的 Derby 以在同一个 JVM 中并行运行。

于 2010-05-28T17:32:06.043 回答
1

我认为您需要先切换默认类加载器才能查看网络应用程序。指定此处记录的 PARENT_LAST :请参阅“在 Web 模块中设置类加载器”

但这是一个有风险的选择,因为它会影响所有其他可能在 app 和 war 之间重复的类。

于 2010-05-28T09:42:52.340 回答