[
https://issues.apache.org/jira/browse/HBASE-11875?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ayache khettar updated HBASE-11875:
-----------------------------------
Description:
Hi
HbaseZeroCopyByteString class isn't accessible in OSGI based environment. The
reason is that it ends up in a separate route package within an OSGI bundle. As
such the class isn't viewable by the classLoader.
I understand that the hbase-module isn't an osgi bundle, but there is another
project which makes use of this module to generate an osgi bundle for the OSGI
container:
https://github.com/apache/servicemix4-bundles/tree/trunk/hbase-0.98.0-hadoop2.
If you get hold of the binary or source artefact from maven, unzip the jar and
you will see the structure of the project:
com/google/ (classes defined in this package are not visible by the
classLoader).
org/apache/hbase
I understand the reason of having a foreign package cause goggle base class
defines package level methods. It would be nice to work out another way of
extending google protobuf classes. I would recommend going for composition as
opposed to inheritance that will solve the problem.
Regards,
Ayache
Caused by: java.lang.NoClassDefFoundError:
com/google/protobuf/HBaseZeroCopyByteString
at
org.apache.hadoop.hbase.protobuf.RequestConverter.buildRegionSpecifier(RequestConverter.java:908)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
at
org.apache.hadoop.hbase.protobuf.RequestConverter.buildGetRowOrBeforeRequest(RequestConverter.java:132)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
at
org.apache.hadoop.hbase.protobuf.ProtobufUtil.getRowOrBefore(ProtobufUtil.java:1466)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
at
org.apache.hadoop.hbase.client.HTable$2.call(HTable.java:701)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
at
org.apache.hadoop.hbase.client.HTable$2.call(HTable.java:699)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
at
org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:121)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
... 56 more
was:
Hi
HbaseZeroCopyByteString class isn't accessible in OSGI based environment. The
reason is that it ends up in a separate route package within an OSGI bundle. As
such the class isn't viewable by the classLoader.
I understand that the hbase-module isn't an osgi bundle, but there is another
project which makes use of this module to generate an osgi bundle for the OSGI
container:
https://github.com/apache/servicemix4-bundles/tree/trunk/hbase-0.98.0-hadoop2.
If you get hold of the binary or source artefact from maven, unzip the jar and
you will see the structure of the project:
com/google/ (classes defined in this package are not visible by the
classLoader).
org/apache/hbase
I understand the reason of having a foreign package cause goggle base class
defines package level methods. It would be nice to work out another way of
extending google protobuf classes.
Regards,
Ayache
Caused by: java.lang.NoClassDefFoundError:
com/google/protobuf/HBaseZeroCopyByteString
at
org.apache.hadoop.hbase.protobuf.RequestConverter.buildRegionSpecifier(RequestConverter.java:908)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
at
org.apache.hadoop.hbase.protobuf.RequestConverter.buildGetRowOrBeforeRequest(RequestConverter.java:132)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
at
org.apache.hadoop.hbase.protobuf.ProtobufUtil.getRowOrBefore(ProtobufUtil.java:1466)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
at
org.apache.hadoop.hbase.client.HTable$2.call(HTable.java:701)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
at
org.apache.hadoop.hbase.client.HTable$2.call(HTable.java:699)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
at
org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:121)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
... 56 more
> Referencing external package com/google/protobuf/ inside hbase-protcol module
> won't work in OSGI environment
> ------------------------------------------------------------------------------------------------------------
>
> Key: HBASE-11875
> URL: https://issues.apache.org/jira/browse/HBASE-11875
> Project: HBase
> Issue Type: Improvement
> Components: Protobufs
> Affects Versions: 0.98.6
> Environment: OSGI container
> Reporter: ayache khettar
>
> Hi
> HbaseZeroCopyByteString class isn't accessible in OSGI based environment. The
> reason is that it ends up in a separate route package within an OSGI bundle.
> As such the class isn't viewable by the classLoader.
> I understand that the hbase-module isn't an osgi bundle, but there is another
> project which makes use of this module to generate an osgi bundle for the
> OSGI container:
> https://github.com/apache/servicemix4-bundles/tree/trunk/hbase-0.98.0-hadoop2.
> If you get hold of the binary or source artefact from maven, unzip the jar
> and you will see the structure of the project:
> com/google/ (classes defined in this package are not visible by the
> classLoader).
> org/apache/hbase
> I understand the reason of having a foreign package cause goggle base class
> defines package level methods. It would be nice to work out another way of
> extending google protobuf classes. I would recommend going for composition as
> opposed to inheritance that will solve the problem.
> Regards,
> Ayache
> Caused by: java.lang.NoClassDefFoundError:
> com/google/protobuf/HBaseZeroCopyByteString
> at
> org.apache.hadoop.hbase.protobuf.RequestConverter.buildRegionSpecifier(RequestConverter.java:908)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
> at
> org.apache.hadoop.hbase.protobuf.RequestConverter.buildGetRowOrBeforeRequest(RequestConverter.java:132)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
> at
> org.apache.hadoop.hbase.protobuf.ProtobufUtil.getRowOrBefore(ProtobufUtil.java:1466)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
> at
> org.apache.hadoop.hbase.client.HTable$2.call(HTable.java:701)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
> at
> org.apache.hadoop.hbase.client.HTable$2.call(HTable.java:699)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
> at
> org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:121)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
> ... 56 more
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)