Ошибка при запуске Jboss 4.3 при привязке источника данных hsql по умолчанию

Я получаю сообщение об ошибке при запуске JBoss.

[ServiceController] Problem starting service jboss:service=Hypersonic,database=localDB
java.lang.NoSuchMethodError: org.hsqldb.DatabaseURL.parseURL(Ljava/lang/String;ZZ)Lorg/hsqldb/persist/HsqlProperties;
    at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source)
    at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at org.jboss.jdbc.HypersonicDatabase.getConnection(HypersonicDatabase.java:768)
    at org.jboss.jdbc.HypersonicDatabase.startStandaloneDatabase(HypersonicDatabase.java:618)
    at org.jboss.jdbc.HypersonicDatabase.startService(HypersonicDatabase.java:564)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
    at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
    at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
    at com.sun.proxy.$Proxy0.start(Unknown Source)
    at org.jboss.system.ServiceController.start(ServiceController.java:417)

Предыстория: я добавил новый источник данных MS Access DB. Для этого я использую библиотеку ucanaccess. Теперь, чтобы связать свой код, я создал исполняемый файл uber jar, который содержит мою основную тестовую программу вместе с зависимостями. Зависимости включают следующие банки:

ucanaccess-4.0.1.jar
commons-lang-2.6.jar
commons-logging-1.1.3.jar
hsqldb-2.3.1.jar
jackcess-2.1.6.jar

Кроме того, я настроил свой источник данных в MSAccess-ds.xml и развернул его в папке развертывания. И я сохранил свой uber jar с именем «Service-MSAccessDB.jar» внутри папки lib сервера, а также Ear / lib. Теперь при запуске сервера я получаю ошибку выше.

Теперь, если я переименую свою банку в «EService-MSAccessDB.jar», ошибка исчезнет.

Проблема, которую я чувствую, заключается в том, что библиотека сервера JBoss уже содержит hsqldb.jar. И когда я ставлю свою убер-банку, это вызывает некоторый конфликт. При запуске он пытается найти метод, например DatabaseURL.parseURL (Ljava / lang / String; ZZ) Lorg / hsqldb / persist / HsqlProperties; который присутствует в моем uber jar, но не в hsqldb.jar. И когда я переименовываю свой uber jar так, что он в алфавитном порядке выше по порядку относительно hsqldb.jar, проблема исчезает.

Теперь у меня вопрос, почему он ищет такой метод при настройке DefaultDS, которая является конфигурацией JBoss по умолчанию. Как решить эту проблему, не переименовывая мою банку Uber, добавляя букву «E» перед именем Jar, не имеет смысла.


person Manish Bansal    schedule 12.02.2018    source источник
comment
В качестве побочного примечания JBoss EAP 4.3 не обновлялся уже 7 лет, вы можете обновить до более новой версии EAP (или Wildfly, если у вас больше нет поддержки), чтобы исправить многолетний список недостатков безопасности. на вашем сервере должен быть ...   -  person Aaron    schedule 12.02.2018
comment
@Aaron У меня нет возможности обновить jboss. У меня большая команда, и у всех есть эта настройка сервера вместе с приложением. В любом случае, это не рабочий сервер. Он используется только в учебных целях. И мой код также предназначен для работы на всех обучающих серверах. Спасибо.   -  person Manish Bansal    schedule 12.02.2018
comment
Хорошо, возможно (надеюсь?) Никаких проблем с безопасностью. Мне все еще кажется, что Wildfly 10 без лицензии будет ближе к вашим продуктам (при условии EAP 6.2+), чем этот EAP 4.3, и, следовательно, будет лучшим средством обучения. В этой версии вам не хватает многих современных функций, будь то JavaEE7 или инструменты эксплуатации, такие как веб-консоль или инструмент CLI. Конечно, только вы знаете о возможности обновления. Будьте уверены, что это не критика вашего вопроса, я не отвечаю на него просто потому, что у меня нет необходимых знаний.   -  person Aaron    schedule 12.02.2018
comment
Спасибо Аарону за беспокойство. Наши производственные серверы находятся на WAS 8. И у меня действительно нет никаких полномочий принимать такое решение о смене сервера. Эта версия jboss используется просто для обучения и демонстрации, чтобы продемонстрировать приложение клиентам. Спасибо.   -  person Manish Bansal    schedule 12.02.2018


Ответы (1)


Этот сервер JBoss содержит копию hsqldb.jar версии 1.8.0.x для внутреннего использования. Вы можете заменить его копией hsqldb-2.3.1.jar (переименованной в имя исходного jar-файла), чтобы избежать конфликта.

person fredt    schedule 12.02.2018
comment
Не приведет ли это к внутренней проблеме использования? Как я вижу, в обеих версиях jar есть большая разница. Кроме того, есть идеи, почему это относится к функции моей банки вместо существующей? Спасибо за ответ. - person Manish Bansal; 13.02.2018
comment
HSQLDB версии 2.3.0 был успешно протестирован с JBoss 3.2.7. AFAIK в следующих версиях не было серьезных изменений. Используется для JBoss MQ, чего не должно происходить на тестовом сервере. Возможно, вам потребуется удалить файлы localDB.xxx в каталоге данных JBoss. - person fredt; 13.02.2018