You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Arnoud Glimmerveen (JIRA)" <ji...@apache.org> on 2013/02/12 07:27:13 UTC

[jira] [Commented] (ZOOKEEPER-1334) Zookeeper 3.4.x is not OSGi compliant - MANIFEST.MF is flawed

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

Arnoud Glimmerveen commented on ZOOKEEPER-1334:
-----------------------------------------------

I've tested this patch on a locally build zookeeper (3.4.5 + patch from ZOOKEEPER-1334) using Karaf 2.2.8 and 2.3.0 (both Equinox and Felix) with a simple test bundle that creates a ZooKeeper connection upon the bundle being started. 
In my tests this patch only works for the combination Karaf 2.2.8 + Equinox. In the other scenario's I ran into some NoClassDefFoundErrors on classes located in the packages {{javax.security.auth.callback}} , {{javax.security.auth.login}} and {{javax.security.sasl}} . I resolved this by adding these packages to the Import-Package section of the ZooKeeper bundle.

@Claus: should these packages be added to the Import-Package section of the MANIFEST of the ZooKeeper bundle or are users expected to expose these packages to ZooKeeper bundle through OSGi framework configuration?
                
> Zookeeper 3.4.x is not OSGi compliant - MANIFEST.MF is flawed
> -------------------------------------------------------------
>
>                 Key: ZOOKEEPER-1334
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1334
>             Project: ZooKeeper
>          Issue Type: Bug
>    Affects Versions: 3.4.0
>            Reporter: Claus Ibsen
>            Assignee: Claus Ibsen
>             Fix For: 3.5.0, 3.4.6
>
>         Attachments: zookeeper-1334-osgi.patch, zookeeper-1334-osgi.patch, ZOOKEEPER-1334.patch
>
>
> In Zookeeper 3.3.x you use log4j for logging, and the maven dep is
> eg from 3.3.4
> {code}
>     <dependency>
>       <groupId>log4j</groupId>
>       <artifactId>log4j</artifactId>
>       <version>1.2.15</version>
>       <scope>compile</scope>
>     </dependency>
> {code}
> Now in 3.4.0 or better you changed to use slf4j also/instead. The maven pom.xml now includes:
> {code}
>   <dependency>
>       <groupId>org.slf4j</groupId>
>       <artifactId>slf4j-api</artifactId>
>       <version>1.6.1</version>
>       <scope>compile</scope>
>     </dependency>
>     <dependency>
>       <groupId>org.slf4j</groupId>
>       <artifactId>slf4j-log4j12</artifactId>
>       <version>1.6.1</version>
>       <scope>compile</scope>
>     </dependency>
>     <dependency>
>       <groupId>log4j</groupId>
>       <artifactId>log4j</artifactId>
>       <version>1.2.15</version>
>       <scope>compile</scope>
>     </dependency>
> {code}
> But the META-INF/MANIFEST.MF file in the distribution did not change to reflect this.
> The 3.3.4 MANIFEST.MF, import packages
> {code}
> Import-Package: javax.management,org.apache.log4j,org.osgi.framework;v
>  ersion="[1.4,2.0)",org.osgi.util.tracker;version="[1.1,2.0)"
> {code}
> And the 3.4.1 MANIFEST.MF, import packages:
> {code}
> Import-Package: javax.management,org.apache.log4j,org.osgi.framework;v
>  ersion="[1.4,2.0)",org.osgi.util.tracker;version="[1.1,2.0)"
> {code}
> This makes using zookeeper 3.4.x in OSGi environments not possible, as we get NoClassDefFoundException for slf4j classes.

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