db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rick Hillegas (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DERBY-6069) Derby doesn't export the version number in its OSGI exported packages
Date Tue, 26 Mar 2013 13:08:15 GMT

    [ https://issues.apache.org/jira/browse/DERBY-6069?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13613766#comment-13613766
] 

Rick Hillegas commented on DERBY-6069:
--------------------------------------

Thanks, Christian. No, there are no plans to migrate Derby's build machinery to maven. We
may need to write a custom ant task for this. I agree that simply hard-coding today's result
sounds like a brittle solution.

It doesn't appear to me derbynet.jar has any OSGi annotation in it. I suppose that we should
add OSGi annotations to all of the Derby jar files except for the message localizations. The
exports would look like this:

derby.jar:

    org.apache.derby.agg
    org.apache.derby.authentication
    org.apache.derby.catalog
    org.apache.derby.jdbc
    org.apache.derby.mbeans
    org.apache.derby.security
    org.apache.derby.vti

derbynet.jar:

    org.apache.derby.drda
    org.apache.derby.mbeans.drda

derbyclient.jar:

    org.apache.derby.jdbc

derbytools.jar:

    org.apache.derby.tools

I'm troubled by the presence of org.apache.derby.jdbc in both derby.jar and derbyclient.jar.
This seems to be a forbidden practice: http://wiki.osgi.org/wiki/Split_Packages. However,
I don't think that it would give rise to any new problems. I would expect sealing violations
if a classloader actually loaded classes from derbyclient.jar and derby.jar together. From
the Apache ServiceMix manifest which you attached, I see that they have worked around this
problem by dumping the contents of derbyclient.jar and derby.jar into one jar file (along
with the contents of derbynet.jar). I think that this splitting of packages across two jar
files is an awkwardness in Derby's architecture. It doesn't work for OSGi and I don't think
it will work well with the module factoring we'll want to consider when we align ourselves
with Jigsaw in JDK 9.

We could also add OSGi annotations to the localization jars. They would all export the following
packages:

    org/apache/derby/info
    org/apache/derby/loc/drda
    org/apache/derby/loc

Since this would be another example of the split package problem, I would recommend moving
slowly on this one. Let's not bother annotating the localization jars right now.

Thanks,
-Rick
                
> Derby doesn't export the version number in its OSGI exported packages
> ---------------------------------------------------------------------
>
>                 Key: DERBY-6069
>                 URL: https://issues.apache.org/jira/browse/DERBY-6069
>             Project: Derby
>          Issue Type: Bug
>    Affects Versions: 10.9.1.0, 10.8.3.0
>            Reporter: Christian Müller
>              Labels: osgi
>         Attachments: MANIFEST.MF
>
>
> Derby doesn't export the version number in its OSGI exported packages. See the following
exports:
> {noformat}
> karaf@root> headers 259
> Apache Derby 10.8 (259)
> -----------------------
> Manifest-Version = 1.0
> Ant-Version = Apache Ant 1.7.0
> Class-Path = derbyLocale_cs.jar derbyLocale_de_DE.jar derbyLocale_es.jar derbyLocale_fr.jar
derbyLocale_hu.jar derbyLocale_it.jar derbyLocal
> e_ja_JP.jar derbyLocale_ko_KR.jar derbyLocale_pl.jar derbyLocale_pt_BR.jar derbyLocale_ru.jar
derbyLocale_zh_CN.jar derbyLocale_zh_TW.jar
> Sealed = true
> Created-By = 2.4 (IBM Corporation)
> Bundle-Vendor = Apache Software Foundation
> Bundle-Activator = org.apache.derby.osgi.EmbeddedActivator
> Bundle-Name = Apache Derby 10.8
> Bundle-SymbolicName = derby
> Bundle-Version = 10.8.3000000.1405108
> Bundle-ManifestVersion = 2
> DynamicImport-Package =
>         *
> Export-Package =
>         org.apache.derby.authentication,
>         org.apache.derby.database,
>         org.apache.derby.io,
>         org.apache.derby.jdbc,
>         org.apache.derby.vti
> {noformat}
> {noformat}
> karaf@root> headers 250
> Apache Derby 10.9 (250)
> -----------------------
> Manifest-Version = 1.0
> Ant-Version = Apache Ant 1.7.1
> Class-Path = derbyLocale_cs.jar derbyLocale_de_DE.jar derbyLocale_es.jar derbyLocale_fr.jar
derbyLocale_hu.jar derbyLocale_it.jar derbyLocal
> e_ja_JP.jar derbyLocale_ko_KR.jar derbyLocale_pl.jar derbyLocale_pt_BR.jar derbyLocale_ru.jar
derbyLocale_zh_CN.jar derbyLocale_zh_TW.jar
> Sealed = true
> Created-By = 20.6-b01-415 (Apple Inc.)
> Bundle-Vendor = Apache Software Foundation
> Bundle-Activator = org.apache.derby.osgi.EmbeddedActivator
> Bundle-Name = Apache Derby 10.9
> Bundle-SymbolicName = derby
> Bundle-Version = 10.9.1000000.1344872
> Bundle-ManifestVersion = 2
> DynamicImport-Package =
>         *
> Export-Package =
>         org.apache.derby.authentication,
>         org.apache.derby.database,
>         org.apache.derby.io,
>         org.apache.derby.jdbc,
>         org.apache.derby.vti
> {noformat}
> This leads to problems, if other bundles imports derby packages with a specific version
or version range (like spring-jdbc do):
> {noformat}
> karaf@root> headers 251
> Spring JDBC (251)
> -----------------
> Manifest-Version = 1.0
> ...
> Import-Package =
>         ...
>         org.apache.derby.impl.io;resolution:=optional;version="[10.5.0, 11.0.0)",
>         org.apache.derby.jdbc;resolution:=optional;version="[10.5.0, 11.0.0)",
> ...
> {noformat}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message