Thanks Tim,
The strings are URL's for configuration files, from the client.
I'll go with the additional level of indirection.
It's interesting that you're from Paremus, this was the last part of the
codebase that needed to be converted to OSGi, everything has now been
converted to bundles and all ServiceFactory's converted to OSGi services.
So here's why I thought it interesting; the codebase is a fork of Apache
River, most of it will make its way back to River. Of course, there
have been a lot of changes since when Paremus was using it in the Jini
days, many, many, many bug fixes, no need for codebase annotations in
streams, proxy bundles are identical at both endpoints, the service
depends on the proxy bundle, the client and the proxy bundle both depend
on the service interface. No more proxy verification after
deserialization, authentication first, followed by hardened atomic
deserialization (using constructors), then constraints. Supports the
latest TLS protocols. There's also a lookup service that returns results
without causing service proxy downloads, that now happens after
authentication and local filtering. It also has an extremely fast and
parallel policy provider,it avoids unnecessary DNS calls, has a RFC3986
compliant Uri class that also normalizes IPv6 addresses following
RFC5952 recommendations. It has an RFC3986URLClassLoader, so
SecureClassLoader doesn't make unnessary DNS calls. Oh it also has IPv6
muticast discovery. Built with Maven now, no more ClassDepandJar.
That's just a summary of course. Never really did get why many Jini
people didn't recognise the benefit OSGi would have provided way back.
Thanks for your help, perhaps if you're interest you might cast an eye
over it for me. :)
Cheers,
Peter.
On 22/08/2019 7:40 PM, Tim Ward wrote:
Hello,
When you say that each client needs a different service instance, would a
bundle need more than one instance (i.e. would a ServiceFactory be sufficient
or does it need to be a PrototypeServiceFactory)?
Also, where are the Strings in the String array coming from? If those are
passed in by the client then you may need an intermediate “factory service”
from which the bundles request instances of the provider.
Otherwise, it sounds as though this would be pretty simple to achieve. The
ServiceFactory gives you access to the requesting bundle, which in turn gives
you the class loader that you need.
All the best,
Tim
On 22 Aug 2019, at 05:58, Peter Firmstone via osgi-dev<osgi-dev@mail.osgi.org>
wrote:
Hello,
I'm trying to migrate a custom provider interface to register OSGi services.
This is a pre existing implementation, functionally similar to Java's SPI, with
one caveat; it doesn't use a zero arg constructor.
The constructor has two arguments an array of strings, and a ClassLoader.
Otherwise for all intents and purposes, it's an SPI, implementing services use
a META-INF services file.
The interface for the service exists and has implementations.
The ClassLoader passed in is used to resolve classes from the service client.
It doesn't use the Java SPI mechanism, so we have access to the code that
creates the service.
Each client will require a different Service instance.
I was thinking something like a Service Factory might do the job, any thoughts
or advice?
Thanks in adv,
Peter.
_______________________________________________
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