Hi Juan
Thanks for responding. Your note implied something I was suspecting..   The
documentation literally says  "Classes implementing this interface can be
placed in the lib/dropins folder of Brooklyn" and that's what I initially
did.  But your note suggested its a jar file containing the implementation
class (and its dependencies) that needs to be put in lib/dropins - not
naked class files

So this morning I created a runnable jar with a no-op main method in the
provider class.  This guarantees that the provider and all its dependencies
are pulled into the jar.

I verified this too, with jar
jar tvf ./lib/dropins/ucsf_auth.jar | grep UcsfSecretsProvider
  9673 Mon Aug 26 08:26:04 PDT 2019
org/ucsf/ctakes_auth/UcsfSecretsProvider.class

So my problem seems to be elsewhere.

In your implementation, did you put your security provider jar in a
./lib/dropins of your Brooklyn install folder?
Did you have to add a whitelist entry for your jar file anywhere else?

Peter




On Mon, Aug 26, 2019 at 2:28 AM Juan Cabrerizo <[email protected]> wrote:

> Hi Peter,
>
> I found a similar problem when I started working in an implementation of
> SecurityProvider. My problem was the configuration of the
> maven-bundle-plugin i wasn't exporting the class. You can check it on the
> Manifest.MF file inside META-INF on the jar file. Look for the package
> "org.ucsf.ctakes_auth" in the block "Export-Package"
>
> I solved it setting brooklyn-downstream-parent as parent project. I't is
> configured by default for exporting the classes built.
>
>  <parent>
>   <groupId>org.apache.brooklyn</groupId>
>   <artifactId>brooklyn-downstream-parent</artifactId>
>   <version>1.0.0-SNAPSHOT</version>
> </parent>
>
> I hope this helps
>
> Juan
>
>
> On Sun, 25 Aug 2019 at 05:08, Peter Abramowitsch <[email protected]>
> wrote:
>
> > Hi All
> >
> > I have created a small secrets provider and unit tested it on it's own
> > first.  But I am having an issue with Brooklyn loading up my class and
> its
> > dependencies.
> >
> > Following the instructions, I put the class file into a new dropins
> folder
> > inside lib.  And added a call to the provider in brooklyn.cfg
> >
> > >> brooklyn.external.ucsfsecrets=org.ucsf.ctakes_auth.UcsfSecretsProvider
> >
> > I then put the class's dependent jars in the lib/boot folder.  Not sure
> > whether they should be there or in lib itself... because I'm not sure
> which
> > classloader the dropins will be using
> >
> > Because I wasn't sure what dropins was expecting, I put the class in
> twice,
> > as you see
> >
> > lib/dropins
> > ├── UcsfSecretsProvider.class
> > └── org
> >     └── ucsf
> >         └── ctakes_auth
> >             └── UcsfSecretsProvider.class
> >
> > My provider needs a couple of JVM defines, so I added these to the setenv
> > script.
> >
> > On startup,  the exception blew up the launch of the Brooklyn container
> >
> > My error message is this Exception   ( I put the entire trace at the
> bottom
> > of this message)
> >
> > ....
> > 2019-08-24T20:47:24,463 ERROR 123
> > o.a.b.c.m.i.BasicExternalConfigSupplierRegistry [FelixStartLevel] Failed
> to
> > instantiate external config supplier named 'ucsfsecrets':
> > java.lang.ClassNotFoundException: Class
> > org.ucsf.ctakes_auth.UcsfSecretsProvider not found on the application
> class
> > path, nor in the bundle white list.
> > java.lang.ClassNotFoundException: Class
> > org.ucsf.ctakes_auth.UcsfSecretsProvider not found on the application
> class
> > path, nor in the bundle white list.
> >
> > The exception mentions a "bundle whitelist" which I don't see among any
> of
> > the config files in $BROOKLYN_HOME/etc.    I also looked at the unit test
> > for drop-ins in the Brooklyn source, but was unable to relate that to my
> > situation.
> >
> > Clearly there is more to a custom provider than I see in the
> > documentation.   Do you have any more information to help me out?
> >
> > Many thanks in advance, Peter
> >
> > -----------------------------------------------------
> >
> > :`Caused by: java.lang.ClassNotFoundException: Class
> > org.ucsf.ctakes_auth.UcsfSecretsProvider not found on the application
> class
> > path, nor in the bundle white list.
> >         at
> >
> >
> org.apache.brooklyn.util.core.ClassLoaderUtils.loadClass(ClassLoaderUtils.java:162)
> > ~[?:?]
> >         at
> >
> >
> org.apache.brooklyn.core.mgmt.internal.BasicExternalConfigSupplierRegistry.updateFromBrooklynProperties(BasicExternalConfigSupplierRegistry.java:116)
> > ~[?:?]
> >         at
> >
> >
> org.apache.brooklyn.core.mgmt.internal.BasicExternalConfigSupplierRegistry.<init>(BasicExternalConfigSupplierRegistry.java:61)
> > ~[?:?]
> >         at
> >
> >
> org.apache.brooklyn.core.mgmt.internal.AbstractManagementContext.<init>(AbstractManagementContext.java:183)
> > ~[?:?]
> >         at
> >
> >
> org.apache.brooklyn.core.mgmt.internal.LocalManagementContext.<init>(LocalManagementContext.java:170)
> > ~[?:?]
> >         at
> >
> >
> org.apache.brooklyn.launcher.common.BasicLauncher.initManagementContext(BasicLauncher.java:524)
> > ~[?:?]
> >         at
> >
> >
> org.apache.brooklyn.launcher.common.BasicLauncher.startPartOne(BasicLauncher.java:392)
> > ~[?:?]
> >         at
> >
> >
> org.apache.brooklyn.launcher.osgi.OsgiLauncherImpl.startPartOne(OsgiLauncherImpl.java:79)
> > ~[?:?]
> >         at
> >
> >
> org.apache.brooklyn.launcher.osgi.OsgiLauncherImpl.initOsgi(OsgiLauncherImpl.java:105)
> > ~[?:?]
> >         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > ~[?:?]
> >         at
> >
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> > ~[?:?]
> >         at
> >
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> > ~[?:?]
> >         at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
> >         at
> >
> >
> org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:299)
> > ~[?:?]
> >         at
> >
> org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:980)
> > ~[?:?]
> >         at
> >
> >
> org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:736)
> > ~[?:?]
> >         ... 37 more
> > 2019-08-24T20:47:24,486 INFO   15 o.a.a.b.c.BlueprintContainerImpl
> > [FelixStartLevel] Bundle org.apache.brooklyn.karaf-start/0.12.0 is
> waiting
> > for dependencies
> > [(objectClass=org.apache.brooklyn.launcher.osgi.OsgiLauncher)]
> >
>
>
> --
> Juan Cabrerizo
> Software Engineer
>
> *Cloudsoft <https://cloudsoft.io/> *| Bringing Business to the Cloud
> E: [email protected]
> L: https://www.linkedin.com/in/juancabrerizo/
>

Reply via email to