[ https://issues.apache.org/jira/browse/DERBY-4944?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Myrna van Lunteren closed DERBY-4944. ------------------------------------- Resolution: Fixed Fix Version/s: 10.7.1.4 Assignee: Dag H. Wanvik (was: Myrna van Lunteren) Closing again. Although the build at apache failed, that seemed to be because of a problem with ant, not with derby, and it worked fine in my environment when I ran suites.All. > Embedded Derby does not start when derby.jar is dynamically uploaded / added > to the classpath > --------------------------------------------------------------------------------------------- > > Key: DERBY-4944 > URL: https://issues.apache.org/jira/browse/DERBY-4944 > Project: Derby > Issue Type: Bug > Components: Store > Affects Versions: 10.6.2.1 > Environment: various windows versions, jdk1.6.0 and 1.5.0 > Reporter: Michael Dobrovnik > Assignee: Dag H. Wanvik > Priority: Minor > Fix For: 10.7.1.4, 10.8.1.2 > > Attachments: BDFF.diff > > > Hi, > For our workflow-system, we can use a variety of DBMS as the store engine. > Derby is one of them especially popular > for test and development purposes. During setup of our system, we allow to > upload a jar file with the JDBC-Driver for the DBMS. > In case of derby, we use the embedded mode and upload derby.jar. After that > we add the jar to the repositories of our class loader > and call > Class drc = Class.forName("org.apache.derby.jdbc.EmbeddedDriver", true, > ourclassloader); > Driver drv = (Driver)drc.newInstance(); > this worked perfectly for many years up to version 10.6.1.0, but ceased to > work in 10.6.2.1; > i assume the unreleased future versions are affected, too > when derby.jar is placed in the classpath manually before starting our setup, > everything works fine regardless of the derby version. > investigations lead to the following conclusion: > - since rev. 982370 this is broken, in the immediate predecessor rev. 980035 > it worked. > - rev. 982370 in the > org.apache.derby.impl.store.raw.data.BaseDataFileFactory class introduced a > new method > private static String jarClassPath(final Class cls) which tries to find > the jarfile from which derby was loaded. > it contains the following lines: > if ( cs == null ) > return null; > URL result = cs.getLocation(); > return result.toString(); > but in the case, when we dynamically load derby, > cs is not null but cs.getLocation() is null. so i propose to change the > line with the if to: > ... > if ( cs == null || cs.getLocation()==null) > return null; > ... > or maybe it would be better to surround the whole body of the method with a > try catch, since it is not essential, and a null > return value is also ok? > thank you for your efforts concerning derby at large, > Michael -- This message was sent by Atlassian JIRA (v6.3.4#6332)