Использовать другую версию derby.jar, чем та, которая включена в WebSphere? - PullRequest
0 голосов
/ 28 мая 2010

Я пытаюсь использовать встроенную базу данных Derby из файла war, развернутого в WebSphere для Z / OS. Когда я использую код, подобный следующему, для создания базы данных, я заканчиваю тем, что создаю базу данных derby версии 10.3, используя derby.jar, включенный в WebSphere server 7.0 вместо derby.jar версии 10.5, который я включаю в свой каталог WEB-INF / lib. 1001 *

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 использовать класс org.apache.derby.jdbc.EmbeddedDriver, включенный в файл derby.jar, который я упаковал в файл war?

Ответы [ 2 ]

1 голос
/ 28 мая 2010

В среде J2EE лучше разрешить серверу управлять соединениями, и обычно не стоит помещать провайдеров JDBC в вашу WAR.

Новое в WAS 7.0 - это функция, известная как «изолированные поставщики ресурсов», которая позволяет настроить несколько версий Derby для параллельной работы в одной и той же JVM.

1 голос
/ 28 мая 2010

Я думаю, вам нужно будет переключить загрузчик классов по умолчанию, чтобы сначала посмотреть в веб-приложение. Укажите PARENT_LAST, как задокументировано здесь : см. «Настройка загрузчиков классов в веб-модуле»

Но это рискованный вариант, поскольку он может повлиять на все другие классы, которые могут дублироваться между app и war.

...