On 06/22/2012 10:25 PM, Johan Edstrom wrote:
If you actually want to shade cassandra the following works.
You just need to add the maven bundle plugin to this, you'll have a complete
cassandra bundle that contains all the necessary bits and pieces.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0";
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
  <parent>
    <artifactId>bundles</artifactId>
    <groupId>com.savoirtech</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <artifactId>cassandra-all</artifactId>
  <packaging>bundle</packaging>
  <dependencies>
    <dependency>
      <groupId>org.apache.cassandra</groupId>
      <artifactId>cassandra-all</artifactId>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-shade-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <artifactSet>
                <includes>
                  <include>${pkgGroupId}:${pkgArtifactId}</include>
                </includes>
              </artifactSet>
              <filters>
                <filter>
                  <artifact>${pkgGroupId}:${pkgArtifactId}</artifact>
                  <excludes>
                    <exclude>**</exclude>
                  </excludes>
                </filter>
              </filters>
              
<promoteTransitiveDependencies>true</promoteTransitiveDependencies>
              <createDependencyReducedPom>false</createDependencyReducedPom>
              
<keepDependenciesWithProvidedScope>true</keepDependenciesWithProvidedScope>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <properties>
    <pkgVersion>${cassandra.version}</pkgVersion>
    <pkgArtifactId>commons-codec</pkgArtifactId>
    
<savoirtech.osgi.export.pkg>org.apache.cassandra.*;version=${cassandra.version},
      org.apache.thrift.*;version=${cassandra.version}
    </savoirtech.osgi.export.pkg>
    <pkgGroupId>cassandra-all</pkgGroupId>
  </properties>
</project>

On Jun 22, 2012, at 9:17 PM, Chris Geer wrote:

On Fri, Jun 22, 2012 at 7:46 PM, ramesh chandra<[email protected]>  wrote:
On 06/22/2012 09:08 PM, Chris Geer wrote:
On Fri, Jun 22, 2012 at 5:12 PM, ramesh chandra<[email protected]>  wrote:
I have wrapped an external library ( Cassandra - Hector Client ) as a bundle , 
but I am constantly getting a ClassNotFoundException. So , I tried passing the 
missing (Thrift Library) after wrapping as a bundle, but it does not help 
either.

How did you go about making it a bundle?

Is there any other way I can explicitly make one bundle aware of other ?

You need to make sure two things happen. Your Cassandra bundle exports the 
correct packages and your other bundle imports the correct packages.

Just in case if anyone has see it , this is the error

Caused by: java.lang. ClassNotFoundException: org.apache.thrift.transport. 
TTransportException not found by me.prettyprint.hector [169]

   at org.apache.felix.framework. ModuleImpl. findClassOrResourceByDelegatio 
n(ModuleImpl.java:787)
   at org.apache.felix.framework. ModuleImpl.access$400( ModuleImpl.java:71)
   at org.apache.felix.framework. ModuleImpl$ModuleClassLoader. 
loadClass(ModuleImpl.java: 1768)
   at java.lang.ClassLoader. loadClass(ClassLoader.java: 247)[:1.6.0_26]

   ... 41 more

appreciate any help

kind regards,
Ramesh

Hi Chris,

Thanks for the input. Karaf has a beautiful wrapper for external library
osgi:install wrap:mvn:Group/Artifact/version does a quick and easy install.

Have you checked the imports/exports of your bundles? From the Karaf console 
"headers<bundle-id>".

regards,
Ramesh

Thanks Johan, I will try the same for both cassandra and hector client.

regards,
Ramesh

Reply via email to