You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@karaf.apache.org by ramesh chandra <ta...@gmail.com> on 2012/06/23 02:12:53 UTC

explicitly make one bundle aware of other ?

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.

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

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.findClassOrResourceByDelegation(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

Re: explicitly make one bundle aware of other ?

Posted by ramesh chandra <ta...@gmail.com>.
On 06/22/2012 10:17 PM, Chris Geer wrote:
>
> On Fri, Jun 22, 2012 at 7:46 PM, ramesh chandra <tableters@gmail.com 
> <ma...@gmail.com>> wrote:
>
>     On 06/22/2012 09:08 PM, Chris Geer wrote:
>>     On Fri, Jun 22, 2012 at 5:12 PM, ramesh chandra
>>     <tableters@gmail.com <ma...@gmail.com>> 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 Chris, that helped me verify bundle.

Re: explicitly make one bundle aware of other ?

Posted by ramesh chandra <ta...@gmail.com>.
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<ta...@gmail.com>  wrote:
>> On 06/22/2012 09:08 PM, Chris Geer wrote:
>>> On Fri, Jun 22, 2012 at 5:12 PM, ramesh chandra<ta...@gmail.com>  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

Re: explicitly make one bundle aware of other ?

Posted by Johan Edstrom <se...@gmail.com>.
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 <ta...@gmail.com> wrote:
> On 06/22/2012 09:08 PM, Chris Geer wrote:
>> On Fri, Jun 22, 2012 at 5:12 PM, ramesh chandra <ta...@gmail.com> 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
> 


Re: explicitly make one bundle aware of other ?

Posted by Chris Geer <ch...@cxtsoftware.com>.
On Fri, Jun 22, 2012 at 7:46 PM, ramesh chandra <ta...@gmail.com> wrote:

>  On 06/22/2012 09:08 PM, Chris Geer wrote:
>
> On Fri, Jun 22, 2012 at 5:12 PM, ramesh chandra <ta...@gmail.com>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
>

Re: explicitly make one bundle aware of other ?

Posted by ramesh chandra <ta...@gmail.com>.
On 06/22/2012 09:08 PM, Chris Geer wrote:
> On Fri, Jun 22, 2012 at 5:12 PM, ramesh chandra <tableters@gmail.com 
> <ma...@gmail.com>> 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.

regards,
Ramesh

Re: explicitly make one bundle aware of other ?

Posted by Chris Geer <ch...@cxtsoftware.com>.
On Fri, Jun 22, 2012 at 5:12 PM, ramesh chandra <ta...@gmail.com> 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
>