[ https://issues.apache.org/jira/browse/ZOOKEEPER-425?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12782351#action_12782351 ]
David Bosschaert commented on ZOOKEEPER-425: -------------------------------------------- Hi Patrick, You can already use this as-is in Felix or Equinox (or any other OSGi container). The value that the metadata in the buildxml.patch provides is that it exports (and imports) packages the OSGi way, which means that you can build a zookeeper client in its own bundle that pulls in the zookeeper classes using OSGi dependency management. Here's a quick example of how to use it (using Felix 2.0.0): {code}.../felix-framework-2.0.0>java -jar bin/felix.jar Welcome to Felix ================ -> start http://www.springsource.com/repository/app/bundle/version/download?name=com.springsource.org.apache.log4j&version=1.2.15&type=binary Bundle ID: 4 -> start file:///.../zookeeper/build/zookeeper-3.3.0.jar -> ps START LEVEL 1 ID State Level Name [ 0] [Active ] [ 0] System Bundle (2.0.0) [ 1] [Active ] [ 1] Apache Felix Bundle Repository (1.4.1) [ 2] [Active ] [ 1] Apache Felix Shell Service (1.4.0) [ 3] [Active ] [ 1] Apache Felix Shell TUI (1.4.0) [ 4] [Active ] [ 1] Apache Log4J (1.2.15) [ 5] [Active ] [ 1] ZooKeeper Bundle (3.3.0) -> inspect package requirement 5 org.apache.hadoop.zookeeper [5] imports packages: ------------------------------------------------- org.osgi.framework; version=1.5.0 -> org.apache.felix.framework [0] org.osgi.util.tracker; version=1.4.0 -> org.apache.felix.framework [0] javax.management; version=1.6.0 -> org.apache.felix.framework [0] org.apache.log4j; version=1.2.15 -> com.springsource.org.apache.log4j [4] -> inspect package capability 5 org.apache.hadoop.zookeeper [5] exports packages: ------------------------------------------------- org.apache.zookeeper; version=3.3.0 org.apache.zookeeper.data; version=3.3.0 org.apache.zookeeper.version; version=3.3.0 org.apache.zookeeper.server; version=3.3.0 org.apache.zookeeper.server.quorum; version=3.3.0 {code} As you can see the Log4J dependency is provided through a Log4J bundle. I'm using one straight from the SpringSource bundle repository (the SpringSource guys have turned many libraries into OSGi bundles), but you may also be able to find a Log4J bundle elsewhere. After installing the Zookeeper Bundle (the jar is now also an OSGi bundle) you can see that it uses OSGi imports to satisfy its dependencies (e.g. it links to bundle 4 for its log4j imports) and it exports the zookeeper packages. The way to use them in OSGi-based clients is simply through imports (as [here|http://svn.apache.org/repos/asf/cxf/dosgi/trunk/discovery/distributed/cxf-discovery/src/main/java/org/apache/cxf/dosgi/discovery/zookeeper/FindInZooKeeperCustomizer.java]), but additionally the client bundle will have Import-Package statements for the zookeeper packages in its manifest. > Add OSGi metadata to zookeeper.jar > ---------------------------------- > > Key: ZOOKEEPER-425 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-425 > Project: Zookeeper > Issue Type: Improvement > Components: build > Reporter: David Bosschaert > Assignee: David Bosschaert > Fix For: 3.3.0 > > Attachments: buildxmlpatch.patch, MANIFEST.MF, zk_patch3.patch > > > After adding OSGi metadata to zookeeper.jar it can be used as both an OSGi > bundle as well as an ordinary jar file. > In the CXF/DOSGi project the buildsystem does this using the > maven-bundle-plugin: > http://svn.apache.org/repos/asf/cxf/dosgi/trunk/discovery/distributed/zookeeper-wrapper/pom.xml > The MANIFEST.MF generated by maven-bundle-plugin is attached to this bug, > this works for the CXF/DOSGi project. > If your buildsystem isn't using maven, I would advise to use bnd > (http://www.aqute.biz/Code/Bnd). BND defines its own ant task in which you > should be able to use more or less the same instructions as were used in > maven: > <instructions> > <Bundle-Name>ZooKeeper bundle</Bundle-Name> > <Bundle-Description>This bundle contains the ZooKeeper > library</Bundle-Description> > <Bundle-SymbolicName>org.apache.hadoop.zookeeper</Bundle-SymbolicName> > <Bundle-Version>3.1.1</Bundle-Version> > <Import-Package>*</Import-Package> > <Export-Package>*;version=3.1.1</Export-Package> > </instructions> > Oh and one other thing. Is it really necessary to put the source code in the > Jar file too? I would put that in a separate source distribution :) > See also: > http://mail-archives.apache.org/mod_mbox/hadoop-zookeeper-user/200905.mbox/%3c4a2009b1.3030...@yahoo-inc.com%3e -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.