Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Won't Fix
-
10.15.1.3
-
None
-
None
-
Normal
-
Regression
Description
Between versions 10.14.X and 10.15.X the DataSource implementation classes under the org.apache.derby.jdbc package were removed from the derby.jar. It looks like the DataSource classes were moved to derbytools.jar, which has a dependency on the derbynetwork.jar: https://db.apache.org/derby/docs/10.15/publishedapi/org.apache.derby.tools/module-summary.html
This makes it impossible to use just a Derby Embedded DataSource, without pulling in all of the Derby Network Client code too.
It appears this change was made for the sake of modularity, since split packages are not allowed in JPMS modules, and the org.apache.derby.jdbc package contains DataSource classes for both Embedded and Network usage. I am not sure what the best way to untangle this dependency issue is, but ideally it can be done in a way that doesn't require dependencies on Derby Embedded and Network clients in order to use DataSource at all.
One possible suggestion is to introduce new DataSource classes in new packages, such as:
org.apache.derby.jdbc.embedded // for Embedded DataSource classes
org.apache.derby.jdbc.network // for Network Client DataSources
Then, gut out the DataSource classes in org.apache.derby.jdbc and have them extend from their respective embedded/network implementations. This will allow existing users to add more dependencies and leave their code unchanged, or it will allow users who just want to depend on Embedded or Network clients to update the DataSource class name.
Attachments
Issue Links
- is related to
-
DERBY-7040 Add dependency stanzas to maven poms
- Closed
- relates to
-
DERBY-6945 Re-package Derby as a collection of jigsaw modules
- Closed