You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@avro.apache.org by Bernd Wiswedel <be...@knime.com> on 2016/01/22 17:15:50 UTC
Avro in OSGi environment
Has anyone successfully run Avro in an OSGi environment? There was an
issue fixed for release 1.7.6 [1] and I also see the 'correct'
MANIFEST.MF in the build. This is what it looks like (from [2]):
> 29 Implementation-Title: Apache Avro
> 30 Implementation-Version: 1.7.7
> 31 Built-By: cutting
> 32 Specification-Vendor: The Apache Software Foundation
> 33 Tool: Bnd-0.0.357
> 34 Bundle-Name: Apache Avro
> 35 Created-By: Apache Maven Bundle Plugin
> 36 Implementation-Vendor: The Apache Software Foundation
> 37 Bundle-Vendor: The Apache Software Foundation
> 38 Implementation-Vendor-Id: org.apache.avro
> 39 Bundle-Version: 1.7.7
> 40 Build-Jdk: 1.7.0_45
> 41 Bnd-LastModified: 1405714122455
> 42 Bundle-ManifestVersion: 2
> 43 Specification-Title: Apache Avro
> 44 Bundle-Description: Avro core components
> 45 Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
> 46 Bundle-DocURL: http://www.apache.org/
> 47 Import-Package: com.thoughtworks.paranamer,org.apache.commons.compress
> 48 .compressors.bzip2;version="1.4",org.apache.commons.compress.compress
> 49 ors.xz;version="1.4",org.apache.commons.compress.utils;version="1.4",
> 50 org.codehaus.jackson;version="1.9",org.codehaus.jackson.io;version="1
> 51 .9",org.codehaus.jackson.map;version="1.9",org.codehaus.jackson.node;
> 52 version="1.9",org.codehaus.jackson.util;version="1.9",org.slf4j;versi
> 53 on="1.6",org.xerial.snappy;resolution:=optional;version="1.0",sun.mis
> 54 c
> 55 Bundle-SymbolicName: avro
> 56 Specification-Version: 1.7.7
But then in line 53 it imports a package 'sun.misc', which is part of
the java environment (and therefore not provided by any other standard
bundle). Package not available = bundle will not start. I know how to
work around it but shouldn't that be excluded?
Thanks!
[1] https://issues.apache.org/jira/browse/AVRO-987
[2]
http://search.maven.org/remotecontent?filepath=org/apache/avro/avro/1.7.7/avro-1.7.7.jar
Re: Avro in OSGi environment
Posted by Bernd Wiswedel <be...@knime.com>.
Thanks, both hints are very useful. I ended up putting this into a
custom library bundle along with some other non-osgi jars. (I'm looking
at integrating Parquet and it has 10+ other dependencies including avro
and some hadoop libs - it seemed overkill to wrap each in a bundle).
I didn't do it but for the sake of completeness: I found you could use
the following when provisioning an p2 site via p2-maven-plugin
(https://github.com/reficio/p2-maven-plugin)
> <artifact>
> <id>org.apache.avro:avro:1.7.7</id>
> <source>true</source>
> <override>true</override>
> <instructions>
> <Import-Package>!sun.misc,*;resolution:=optional</Import-Package>
> </instructions>
> <Bundle-SymbolicName>org.apache.avro</Bundle-SymbolicName>
> </artifact>
Thanks again.
On 01/24/2016 05:56 PM, Fady wrote:
> On 22/01/2016 17:15, Bernd Wiswedel wrote:
>> Has anyone successfully run Avro in an OSGi environment? There was an
>> issue fixed for release 1.7.6 [1] and I also see the 'correct'
>> MANIFEST.MF in the build. This is what it looks like (from [2]):
>>
>>> 29 Implementation-Title: Apache Avro
>>> 30 Implementation-Version: 1.7.7
>>> 31 Built-By: cutting
>>> 32 Specification-Vendor: The Apache Software Foundation
>>> 33 Tool: Bnd-0.0.357
>>> 34 Bundle-Name: Apache Avro
>>> 35 Created-By: Apache Maven Bundle Plugin
>>> 36 Implementation-Vendor: The Apache Software Foundation
>>> 37 Bundle-Vendor: The Apache Software Foundation
>>> 38 Implementation-Vendor-Id: org.apache.avro
>>> 39 Bundle-Version: 1.7.7
>>> 40 Build-Jdk: 1.7.0_45
>>> 41 Bnd-LastModified: 1405714122455
>>> 42 Bundle-ManifestVersion: 2
>>> 43 Specification-Title: Apache Avro
>>> 44 Bundle-Description: Avro core components
>>> 45 Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
>>> 46 Bundle-DocURL: http://www.apache.org/
>>> 47 Import-Package:
>>> com.thoughtworks.paranamer,org.apache.commons.compress
>>> 48
>>> .compressors.bzip2;version="1.4",org.apache.commons.compress.compress
>>> 49
>>> ors.xz;version="1.4",org.apache.commons.compress.utils;version="1.4",
>>> 50
>>> org.codehaus.jackson;version="1.9",org.codehaus.jackson.io;version="1
>>> 51
>>> .9",org.codehaus.jackson.map;version="1.9",org.codehaus.jackson.node;
>>> 52
>>> version="1.9",org.codehaus.jackson.util;version="1.9",org.slf4j;versi
>>> 53
>>> on="1.6",org.xerial.snappy;resolution:=optional;version="1.0",sun.mis
>>> 54 c
>>> 55 Bundle-SymbolicName: avro
>>> 56 Specification-Version: 1.7.7
>> But then in line 53 it imports a package 'sun.misc', which is part of
>> the java environment (and therefore not provided by any other standard
>> bundle). Package not available = bundle will not start. I know how to
>> work around it but shouldn't that be excluded?
>>
>> Thanks!
>>
>> [1] https://issues.apache.org/jira/browse/AVRO-987
>> [2]
>> http://search.maven.org/remotecontent?filepath=org/apache/avro/avro/1.7.7/avro-1.7.7.jar
>>
>>
>>
> I managed to use avro-1.7.7 in an OSGi environment. You can either use
> it directly and get the sun.misc OSGified version here:
>
> <dependency>
> <groupId>com.github.livesense</groupId>
> <artifactId>org.liveSense.fragment.sun.misc</artifactId>
> <version>1.0.5</version>
> </dependency>
>
> Or use the servicemix rebundling of avro which has less mandatory
> dependencies:
>
> <dependency>
> <groupId>org.apache.servicemix.bundles</groupId>
> <artifactId>org.apache.servicemix.bundles.avro</artifactId>
> <version>1.7.7_1</version>
> </dependency>
>
Re: Avro in OSGi environment
Posted by Fady <fa...@legsem.com>.
On 22/01/2016 17:15, Bernd Wiswedel wrote:
> Has anyone successfully run Avro in an OSGi environment? There was an
> issue fixed for release 1.7.6 [1] and I also see the 'correct'
> MANIFEST.MF in the build. This is what it looks like (from [2]):
>
>> 29 Implementation-Title: Apache Avro
>> 30 Implementation-Version: 1.7.7
>> 31 Built-By: cutting
>> 32 Specification-Vendor: The Apache Software Foundation
>> 33 Tool: Bnd-0.0.357
>> 34 Bundle-Name: Apache Avro
>> 35 Created-By: Apache Maven Bundle Plugin
>> 36 Implementation-Vendor: The Apache Software Foundation
>> 37 Bundle-Vendor: The Apache Software Foundation
>> 38 Implementation-Vendor-Id: org.apache.avro
>> 39 Bundle-Version: 1.7.7
>> 40 Build-Jdk: 1.7.0_45
>> 41 Bnd-LastModified: 1405714122455
>> 42 Bundle-ManifestVersion: 2
>> 43 Specification-Title: Apache Avro
>> 44 Bundle-Description: Avro core components
>> 45 Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
>> 46 Bundle-DocURL: http://www.apache.org/
>> 47 Import-Package: com.thoughtworks.paranamer,org.apache.commons.compress
>> 48 .compressors.bzip2;version="1.4",org.apache.commons.compress.compress
>> 49 ors.xz;version="1.4",org.apache.commons.compress.utils;version="1.4",
>> 50 org.codehaus.jackson;version="1.9",org.codehaus.jackson.io;version="1
>> 51 .9",org.codehaus.jackson.map;version="1.9",org.codehaus.jackson.node;
>> 52 version="1.9",org.codehaus.jackson.util;version="1.9",org.slf4j;versi
>> 53 on="1.6",org.xerial.snappy;resolution:=optional;version="1.0",sun.mis
>> 54 c
>> 55 Bundle-SymbolicName: avro
>> 56 Specification-Version: 1.7.7
> But then in line 53 it imports a package 'sun.misc', which is part of
> the java environment (and therefore not provided by any other standard
> bundle). Package not available = bundle will not start. I know how to
> work around it but shouldn't that be excluded?
>
> Thanks!
>
> [1] https://issues.apache.org/jira/browse/AVRO-987
> [2]
> http://search.maven.org/remotecontent?filepath=org/apache/avro/avro/1.7.7/avro-1.7.7.jar
>
>
I managed to use avro-1.7.7 in an OSGi environment. You can either use
it directly and get the sun.misc OSGified version here:
<dependency>
<groupId>com.github.livesense</groupId>
<artifactId>org.liveSense.fragment.sun.misc</artifactId>
<version>1.0.5</version>
</dependency>
Or use the servicemix rebundling of avro which has less mandatory
dependencies:
<dependency>
<groupId>org.apache.servicemix.bundles</groupId>
<artifactId>org.apache.servicemix.bundles.avro</artifactId>
<version>1.7.7_1</version>
</dependency>