Использовать версию derby.jar, отличную от той, которая входит в состав WebSphere?

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

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, который я упаковываю в свой военный файл?


person Jared    schedule 27.05.2010    source источник


Ответы (2)


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

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

person JoseK    schedule 28.05.2010

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

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

person Brett Kail    schedule 28.05.2010