绑定默认hsql数据源时启动Jboss 4.3时出错

绑定默认hsql数据源时启动Jboss 4.3时出错,jboss,hsqldb,ucanaccess,Jboss,Hsqldb,Ucanaccess,在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.JDB

在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,其中包含我的主测试程序和依赖项。依赖项包括以下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中配置了我的数据源,并在deploy文件夹中进行了部署。我将名为“servicemsaccessdb.jar”的uber jar保存在服务器lib文件夹以及Ear/lib中。现在,在服务器启动时,我发现上面的错误

现在,如果我将jar重命名为“EService MSAccessDB.jar”,错误就会消失

我觉得问题在于JBoss服务器库已经包含了hsqldb.jar。当我放置uber罐时,会引起一些冲突。在启动时,它试图找到一个方法,即DatabaseURL.parseURL(Ljava/lang/String;ZZ)Lorg/hsqldb/persist/HsqlProperties;它存在于我的uber jar中,但不在hsqldb.jar中。当我重新命名我的uber-jar,使其按字母顺序高于hsqldb.jar时,问题就消失了


现在,我的问题是,为什么在配置JBoss的默认配置DefaultDS时要寻找这样的方法呢。如何解决此问题而不将我的Uber jar重命名为在我的jar名称前添加“E”是没有意义的。

此JBoss服务器包含一份供内部使用的hsqldb.jar版本1.8.0.x。您可以将其替换为hsqldb-2.3.1.jar的副本(重命名为原始jar的名称)以避免冲突。

附带说明,JBoss EAP 4.3已经7年没有更新了,您可能需要更新到EAP的新版本(或者如果您不再支持Wildfly)要修复长达一公里的安全漏洞列表,您的服务器必须具有…@Aaron我没有升级jboss的选项。我有一个很大的团队,他们都有这个服务器设置和应用程序。无论如何,这不是生产服务器。它仅用于培训目的。我的代码也适用于所有培训服务器。谢谢。好吧,所以可能(希望?)没有安全问题。我仍然觉得无许可证的Wildfly 10比EAP 4.3更接近您的prod服务器(假设EAP 6.2+),因此是一个更好的培训工具。在这个版本中,您缺少很多现代功能,无论是JavaEE7还是web控制台或CLI工具等开发工具。当然,只有你知道更新的可行性。请放心,这不是对你问题的批评,我回答这个问题不仅仅是因为我没有必要的知识。谢谢Aaron的关心。我们的生产服务器在WAS 8上。我真的没有任何权力做出改变服务器的决定。此jboss版本仅用于培训和演示目的,以便向客户展示应用程序。谢谢。这不会导致内部使用问题吗?正如我所看到的,两个jar版本都有很大的不同。还有,你知道为什么它指的是我的jar的函数而不是现有的吗?感谢回复。HSQLDB 2.3.0版已在JBoss 3.2.7上成功测试。好了,下一个版本没有大的变化。这种用法适用于JBoss MQ,它不应该出现在测试服务器中。您可能需要删除JBoss数据目录中的localDB.xxx文件。