Hi all.

I was attempting to follow the tutorial here:
http://felix.apache.org/site/combining-ipojo-and-configuration-admin.html

I'm using the latest release of Felix though, and it seems like the
current bundles available in OBR have a few problems...

>From a clean install of felix-1.4.1...


$ java -jar bin/felix.jar
-> obr start "Apache Felix Configuration Admin Service"
Target resource(s):
-------------------
   Apache Felix Configuration Admin Service (1.0.4)

Required resource(s):
---------------------
   Servlet 2.1 API (1.0.0)
   Apache Felix Declarative Services (1.0.6)
   OSGi R4 Compendium Bundle (4.0.0)
   Apache Felix Web Management Console (1.2.0)

Optional resource(s):
---------------------
   Apache Felix Web Management Console (1.0.0)


(Immediate thoughts here... why is it forcing me to install the web
console when I really only wanted/needed the shell commands mentioned
in the tutorial?  And why is it listing v1.0.0 of the web console as
optional when v1.2.0 is already required?  And why is it installing
v1.0.0 despite having called it optional?)


Deploying...*DEBUG* Scheduling task ManagedService Update:
pid=org.apache.felix.webconsole.internal.servlet.OsgiManager
*DEBUG* Running task ManagedService Update:
pid=org.apache.felix.webconsole.internal.servlet.OsgiManager
ERROR: Resolver: Start error - org.apache.felix.webconsole
org.osgi.framework.BundleException: Activator start error in bundle
org.apache.felix.webconsole [9].
        at org.apache.felix.framework.Felix._startBundle(Felix.java:1718)
        at org.apache.felix.framework.Felix.startBundle(Felix.java:1588)
        at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:382)
        at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:363)
        at 
org.apache.felix.bundlerepository.ResolverImpl.deploy(ResolverImpl.java:558)
        at 
org.apache.felix.bundlerepository.ObrCommandImpl._deploy(ObrCommandImpl.java:370)
        at 
org.apache.felix.bundlerepository.ObrCommandImpl.deploy(ObrCommandImpl.java:308)
        at 
org.apache.felix.bundlerepository.ObrCommandImpl.execute(ObrCommandImpl.java:112)
        at 
org.apache.felix.shell.impl.Activator$ShellServiceImpl.executeCommand(Activator.java:276)
        at 
org.apache.felix.shell.tui.Activator$ShellTuiRunnable.run(Activator.java:167)
        at java.lang.Thread.run(Thread.java:637)
Caused by: java.lang.NoClassDefFoundError:
org/apache/felix/webconsole/AbstractWebConsolePlugin
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:675)
        at 
org.apache.felix.framework.searchpolicy.ContentClassLoader.findClass(ContentClassLoader.java:223)
        at 
org.apache.felix.framework.searchpolicy.ContentClassLoader.loadClassFromModule(ContentClassLoader.java:94)
        at 
org.apache.felix.framework.searchpolicy.ContentLoaderImpl.getClass(ContentLoaderImpl.java:166)
        at 
org.apache.felix.framework.searchpolicy.R4SearchPolicyCore.findClassOrResource(R4SearchPolicyCore.java:471)
        at 
org.apache.felix.framework.searchpolicy.R4SearchPolicyCore.findClass(R4SearchPolicyCore.java:185)
        at 
org.apache.felix.framework.searchpolicy.R4SearchPolicy.findClass(R4SearchPolicy.java:45)
        at 
org.apache.felix.framework.searchpolicy.ContentClassLoader.loadClass(ContentClassLoader.java:118)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:675)
        at 
org.apache.felix.framework.searchpolicy.ContentClassLoader.findClass(ContentClassLoader.java:223)
        at 
org.apache.felix.framework.searchpolicy.ContentClassLoader.loadClassFromModule(ContentClassLoader.java:94)
        at 
org.apache.felix.framework.searchpolicy.ContentLoaderImpl.getClass(ContentLoaderImpl.java:166)
        at 
org.apache.felix.framework.searchpolicy.R4SearchPolicyCore.findClassOrResource(R4SearchPolicyCore.java:471)
        at 
org.apache.felix.framework.searchpolicy.R4SearchPolicyCore.findClass(R4SearchPolicyCore.java:185)
        at 
org.apache.felix.framework.searchpolicy.R4SearchPolicy.findClass(R4SearchPolicy.java:45)
        at 
org.apache.felix.framework.searchpolicy.ContentClassLoader.loadClass(ContentClassLoader.java:118)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:169)
        at 
org.apache.felix.webconsole.internal.servlet.OsgiManager.class$(OsgiManager.java:55)
        at 
org.apache.felix.webconsole.internal.servlet.OsgiManager.<clinit>(OsgiManager.java:105)
        at 
org.apache.felix.webconsole.internal.OsgiManagerActivator.start(OsgiManagerActivator.java:35)
        at 
org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:589)
        at org.apache.felix.framework.Felix._startBundle(Felix.java:1671)
        ... 10 more
Caused by: java.lang.ClassNotFoundException:
org.apache.felix.webconsole.AbstractWebConsolePlugin
        at 
org.apache.felix.framework.searchpolicy.R4SearchPolicyCore.findClass(R4SearchPolicyCore.java:198)
        at 
org.apache.felix.framework.searchpolicy.R4SearchPolicy.findClass(R4SearchPolicy.java:45)
        at 
org.apache.felix.framework.searchpolicy.ContentClassLoader.loadClass(ContentClassLoader.java:118)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374)
        ... 39 more
Caused by: java.lang.ClassNotFoundException:
org.apache.felix.webconsole.AbstractWebConsolePlugin
        at 
org.apache.felix.framework.searchpolicy.R4SearchPolicyCore.findClass(R4SearchPolicyCore.java:198)
        at 
org.apache.felix.framework.searchpolicy.R4SearchPolicy.findClass(R4SearchPolicy.java:45)
        at 
org.apache.felix.moduleloader.ModuleImpl.getClass(ModuleImpl.java:216)
        at 
org.apache.felix.framework.searchpolicy.R4Wire.getClass(R4Wire.java:116)
        at 
org.apache.felix.framework.searchpolicy.R4SearchPolicyCore.searchImports(R4SearchPolicyCore.java:505)
        at 
org.apache.felix.framework.searchpolicy.R4SearchPolicyCore.findClassOrResource(R4SearchPolicyCore.java:466)
        at 
org.apache.felix.framework.searchpolicy.R4SearchPolicyCore.findClass(R4SearchPolicyCore.java:185)
        ... 43 more
Caused by: java.lang.ClassNotFoundException:
org.apache.felix.webconsole.AbstractWebConsolePlugin
        at 
org.apache.felix.framework.searchpolicy.R4Wire.getClass(R4Wire.java:124)
        at 
org.apache.felix.framework.searchpolicy.R4SearchPolicyCore.searchImports(R4SearchPolicyCore.java:505)
        at 
org.apache.felix.framework.searchpolicy.R4SearchPolicyCore.findClassOrResource(R4SearchPolicyCore.java:466)
        at 
org.apache.felix.framework.searchpolicy.R4SearchPolicyCore.findClass(R4SearchPolicyCore.java:185)
        ... 49 more
done.


Clearly some dependency is wrong somewhere, if it has gone and
supposedly installed its dependencies, and then *still* can't find a
class it needs.

Current state is now:


-> ps
START LEVEL 1
   ID   State         Level  Name
[   0] [Active     ] [    0] System Bundle (1.4.1)
[   1] [Active     ] [    1] Apache Felix Shell Service (1.0.2)
[   2] [Active     ] [    1] Apache Felix Shell TUI (1.0.2)
[   3] [Active     ] [    1] Apache Felix Bundle Repository (1.2.1)
[   4] [Active     ] [    1] Servlet 2.1 API (1.0.0)
[   5] [Active     ] [    1] Apache Felix Declarative Services (1.0.6)
[   6] [Active     ] [    1] Apache Felix Configuration Admin Service (1.0.4)
[   7] [Active     ] [    1] OSGi R4 Compendium Bundle (4)
[   8] [Active     ] [    1] Apache Felix Web Management Console (1.0.0)
[   9] [Resolved   ] [    1] Apache Felix Web Management Console (1.2.0)


If I uninstall 8 (which claimed to be "Optional"), shutdown and start
up again, I get a different error:


-> *DEBUG* Scheduling task ManagedService Update:
pid=org.apache.felix.webconsole.internal.servlet.OsgiManager
*DEBUG* Running task ManagedService Update:
pid=org.apache.felix.webconsole.internal.servlet.OsgiManager
*DEBUG* Scheduling task ManagedService Update:
pid=org.apache.felix.webconsole.internal.deppack.DepPackServlet
*DEBUG* Running task ManagedService Update:
pid=org.apache.felix.webconsole.internal.deppack.DepPackServlet
ERROR: EventDispatcher: Error during dispatch.
(java.lang.NoClassDefFoundError:
org/osgi/service/deploymentadmin/DeploymentException)
java.lang.NoClassDefFoundError:
org/osgi/service/deploymentadmin/DeploymentException
        at java.lang.Class.getDeclaredConstructors0(Native Method)
        at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
        at java.lang.Class.getConstructor0(Class.java:2699)
        at java.lang.Class.newInstance0(Class.java:326)
        at java.lang.Class.newInstance(Class.java:308)
        at 
org.apache.felix.scr.impl.ImmediateComponentManager.createImplementationObject(ImmediateComponentManager.java:185)
        at 
org.apache.felix.scr.impl.ImmediateComponentManager.createComponent(ImmediateComponentManager.java:133)
        at 
org.apache.felix.scr.impl.DelayedComponentManager.getService(DelayedComponentManager.java:83)
        at 
org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked(ServiceRegistrationImpl.java:272)
        at 
org.apache.felix.framework.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:196)
        at 
org.apache.felix.framework.ServiceRegistry.getService(ServiceRegistry.java:300)
        at org.apache.felix.framework.Felix.getService(Felix.java:2921)
        at 
org.apache.felix.framework.BundleContextImpl.getService(BundleContextImpl.java:357)
        at 
org.osgi.util.tracker.ServiceTracker.addingService(ServiceTracker.java:385)
        at 
org.apache.felix.webconsole.internal.servlet.OsgiManager$PluginServiceTracker.addingService(OsgiManager.java:491)
        at 
org.osgi.util.tracker.ServiceTracker$Tracked.trackAdding(ServiceTracker.java:1030)
        at 
org.osgi.util.tracker.ServiceTracker$Tracked.track(ServiceTracker.java:1008)
        at 
org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:933)
        at 
org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:820)
        at 
org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:678)
        at 
org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:609)
        at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:3640)
        at org.apache.felix.framework.Felix.access$200(Felix.java:38)
        at org.apache.felix.framework.Felix$2.serviceChanged(Felix.java:841)
        at 
org.apache.felix.framework.ServiceRegistry.fireServiceChanged(ServiceRegistry.java:568)
        at 
org.apache.felix.framework.ServiceRegistry.registerService(ServiceRegistry.java:81)
        at org.apache.felix.framework.Felix.registerService(Felix.java:2773)
        at 
org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:252)
        at 
org.apache.felix.scr.impl.AbstractComponentManager.registerComponentService(AbstractComponentManager.java:698)
        at 
org.apache.felix.scr.impl.AbstractComponentManager.activateInternal(AbstractComponentManager.java:506)
        at 
org.apache.felix.scr.impl.AbstractComponentManager.enableInternal(AbstractComponentManager.java:398)
        at 
org.apache.felix.scr.impl.AbstractComponentManager.access$000(AbstractComponentManager.java:36)
        at 
org.apache.felix.scr.impl.AbstractComponentManager$1.run(AbstractComponentManager.java:99)
        at 
org.apache.felix.scr.impl.ComponentActorThread.run(ComponentActorThread.java:85)
Caused by: java.lang.ClassNotFoundException:
org.osgi.service.deploymentadmin.DeploymentException
        at 
org.apache.felix.framework.searchpolicy.R4SearchPolicyCore.findClass(R4SearchPolicyCore.java:198)
        at 
org.apache.felix.framework.searchpolicy.R4SearchPolicy.findClass(R4SearchPolicy.java:45)
        at 
org.apache.felix.framework.searchpolicy.ContentClassLoader.loadClass(ContentClassLoader.java:118)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374)
        ... 34 more
Caused by: java.lang.ClassNotFoundException:
org.osgi.service.deploymentadmin.DeploymentException
        at 
org.apache.felix.framework.searchpolicy.R4SearchPolicyCore.findClassOrResource(R4SearchPolicyCore.java:486)
        at 
org.apache.felix.framework.searchpolicy.R4SearchPolicyCore.findClass(R4SearchPolicyCore.java:185)
        ... 38 more


Granted, it is quite possible I'm doing something wrong, as I only
started looking into OSGi less than a week ago.  But it seems to me
the bundles in the repository might be a bit flaky.

Does anyone here have this working on the current version?

A side-question, since I'm making a post anyway (and most of this post
is stack traces...)  I'm trying to make a system where I have a
Connection class with multiple implementations for different chat
protocols.  I figured I would use @ServiceProperty on each of the
properties I care about for the service (host, port, username,
password, ...), ship no instances out of the box (thus removing the
need to use the XML metadata file at all) but have the user create
them through Configuration Admin.  I am led to believe that such
configurations will be persistent, so next time the container starts
up, it should automatically call my @Validate method which will make
the connection connect.

Am I on the right track here?  There sure are a lot of hoops to jump
through just to get something working without having to use the actual
(awful, and inconvenient) OSGi API... though I'm glad I did the
tutorials for the native OSGi API, as it gives me an appreciation for
what iPOJO allows me to skip coding.

TX

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to