We made an Uber bundle of the whole ES stack, then only exposed enough to
make one of add-on web uis work.

- Ray

On Wed, Jan 2, 2019, 11:41 Alain Picard <pic...@castortech.com wrote:

> Raymond,
>
> I think this is a good idea but some of their comment was that they were
> not even willing to get PR for it since they would then have to support it.
>
> Curious, did you just do it via Bundle-ClassPath or via some
> Require-bundle re-export or via Export restriction and a bridge bundle or
> other mean?
>
> Alain
>
>
> On Wed, Jan 2, 2019 at 11:33 AM Raymond Auge <raymond.a...@liferay.com>
> wrote:
>
>> There appears to be a lot of us who've repackaged lucene/ES (my company
>> has done so also).
>>
>> I wonder if we could perhaps exert so upstream influence and maybe some
>> contributions to make it a better OSGi citizen.
>>
>> I happen to have a friend who recently works at Elasticsearch that has a
>> lot of OSGi experience that may be willing to help.
>>
>> Thoughts?
>>
>> - Ray
>>
>> On Wed, Jan 2, 2019, 06:38 Alain Picard via osgi-dev <
>> osgi-dev@mail.osgi.org wrote:
>>
>>> Mark,
>>>
>>> Thanks for the info. Just looked up <Embed-Dependency> in the
>>> documentation and it does what I've done manually with Bundle-ClassPath,
>>> which is a bit what I was trying to avoid. At least if it's the way to go,
>>> using this instruction, I could still automate the process like I wanted.
>>>
>>> Alain
>>>
>>>
>>> On Wed, Jan 2, 2019 at 5:40 AM Mark Hoffmann via osgi-dev <
>>> osgi-dev@mail.osgi.org> wrote:
>>>
>>>> Hi Alain,
>>>>
>>>> I know that Lucene itself contains split-packages in lucene-core.jar
>>>> and lucene-analyzer-common.jar. The split-package there is e.g.
>>>> org.apache.lucene.analysis.standard. When OSGi-fying them, we put the two
>>>> jars into one OSGi bundle.
>>>>
>>>> Currently we use bnd, to do that. In former times we used the
>>>> maven-bundle-plugin with this instruction e.g.
>>>>
>>>>
>>>> <Embed-Dependency>lucene-analyzers-common;inline=true,lucene-core;inline=true</Embed-Dependency>
>>>>
>>>> You also have to take care about all external dependencies of e.g.
>>>> lucene analyzers or spatial, like morfologic, uima, spatial4j,
>>>> jakarta-regexp. You may need to OSGi-fy these dependencies and their
>>>> transient dependencies too.
>>>>
>>>> After OSGi-fying the jars, we executed an additional build step to
>>>> create the p2 update site using maven-tycho. In addition to the OSGi-fied
>>>> jars there are other transient dependencies. For Lucene we identified:
>>>>
>>>>         <dependency>
>>>>             <groupId>com.ibm.icu</groupId>
>>>>             <artifactId>icu4j</artifactId>
>>>>         </dependency>
>>>>         <dependency>
>>>>             <groupId>org.ow2.asm</groupId>
>>>>             <artifactId>asm</artifactId>
>>>>         </dependency>
>>>>         <dependency>
>>>>             <groupId>org.ow2.asm</groupId>
>>>>             <artifactId>asm-commons</artifactId>
>>>>         </dependency>
>>>>         <dependency>
>>>>             <groupId>org.antlr</groupId>
>>>>             <artifactId>antlr4-runtime</artifactId>
>>>>         </dependency>
>>>>         <dependency>
>>>>             <groupId>commons-codec</groupId>
>>>>             <artifactId>commons-codec</artifactId>
>>>>         </dependency>
>>>>         <dependency>
>>>>             <groupId>org.apache.commons</groupId>
>>>>             <artifactId>commons-compress</artifactId>
>>>>         </dependency>
>>>>
>>>> We took these bundles from the standard Eclipse repository or the
>>>> Eclipse Orbit update site.
>>>>
>>>> This belongs only to the Lucene stuff. Maybe you have to do the same
>>>> work for the ES stuff. We never used require-bundle, it worked well out of
>>>> the box with package ex- and imports. Using a mega-lucene bundle with all
>>>> dependencies, was our first approach ad worked well too. But don't forget,
>>>> to put the Java service files as well in the bundles, because Lucene uses
>>>> the service loader.
>>>>
>>>> I hope this helps.
>>>>
>>>> Mark
>>>> Am 31.12.18 um 12:19 schrieb Alain Picard via osgi-dev:
>>>>
>>>> I am trying to convert a bundle of ours that now simply imports jars
>>>> for Elasticsearch and make it a p2 site with p2-maven-plugin that usesthe
>>>> maven-bundle-plugin/bnd to wrap non-OSGi jars.
>>>>
>>>> I ended up with resolution errors since ES has about 7-8 split
>>>> packages, most notably org.elasticsearch.client and
>>>> org.elasticsearch.common. So I went searching for solutions that I've seen
>>>> before but never had to use them. I cam across
>>>> https://eclipsesource.com/blogs/2008/08/22/tip-split-packages-and-visibility/
>>>> from Chris and http://web.ist.utl.pt/ist162500/?p=65.
>>>>
>>>> I first tried to simply create a "bridge" bundle that simply requires
>>>> the ES bundles and re-export them and import the bridge bundle from my
>>>> "search bundle". That didn't solve the problem, same issue with imports of
>>>> split-packages.
>>>>
>>>> Next I added attribute and mandatory, even if here I was relying on
>>>> require-bundle (not what I normally do). In my bridge bundle I added all
>>>> the over 300 export-package for the 5 ES bundles, w/o any extra. This
>>>> resulted in an error for each export of the form: Package
>>>> 'org.elasticsearch.action.admin.cluster.allocation' does not exist in this
>>>> plug-in. In the search bundle, with a require bundle of the bridge bundle,
>>>> w/o the export packages it would not resolve any ES package and with them
>>>> in (even with the error) the only issues were with the split package. I
>>>> also tried in the search bundle to instead import the packages, with the
>>>> same result.
>>>>
>>>> I'm getting to the point where I feel I might just have to either go
>>>> back to the original approach or create a bundle that just handles the ES
>>>> dependencies with bundle-classpath and export-pacakges of all those.
>>>>
>>>> Any idea where I'm going wrong?
>>>>
>>>> Thanks
>>>> Alain
>>>>
>>>>
>>>> _______________________________________________
>>>> OSGi Developer Mail 
>>>> listosgi-...@mail.osgi.orghttps://mail.osgi.org/mailman/listinfo/osgi-dev
>>>>
>>>> _______________________________________________
>>>> OSGi Developer Mail List
>>>> osgi-dev@mail.osgi.org
>>>> https://mail.osgi.org/mailman/listinfo/osgi-dev
>>>
>>> _______________________________________________
>>> OSGi Developer Mail List
>>> osgi-dev@mail.osgi.org
>>> https://mail.osgi.org/mailman/listinfo/osgi-dev
>>
>>
_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to