Manish Bansal
Manish Bansal

Reputation: 2681

Error during starting Jboss 4.3 while binding default hsql datasource

I get below error during JBoss start up.

[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)

Background: I have added a new MS Access DB data source. For that, i am using ucanaccess library. Now, to bundle my code, i have created an executable uber jar which contains my main test program along with dependencies. Dependencies include following jars:

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

Further, I have configured my data source in MSAccess-ds.xml and deployed in deploy folder. And i have kept my uber jar named "Service-MSAccessDB.jar" inside server lib folder as well as Ear/lib. Now, on server startup i get above error.

Now, if i rename my jar to "EService-MSAccessDB.jar", The error goes away.

The issue I feel is that JBoss server lib already contains hsqldb.jar. And when i place my uber jar, it causes some conflict. On startup, it tries to find a method i.e. DatabaseURL.parseURL(Ljava/lang/String;ZZ)Lorg/hsqldb/persist/HsqlProperties; which is present in my uber jar but not in hsqldb.jar. And when i rename my uber jar such that it is alphabetically higher in order with respect to hsqldb.jar, issue goes away.

Now, my question is, why is it looking for such a method while configuring DefaultDS which is default configuration of JBoss. How to resolve this issue without renaming my Uber jar as appending "E" in front of my Jar name does not make sense.

Upvotes: 2

Views: 295

Answers (1)

fredt
fredt

Reputation: 24372

This JBoss server contains a copy of hsqldb.jar version 1.8.0.x for its internal use. You can replace it with a copy of hsqldb-2.3.1.jar (renamed to the name of the original jar) to avoid the conflict.

Upvotes: 2

Related Questions