You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@felix.apache.org by Markus Joschko <ma...@gmail.com> on 2011/07/21 12:13:01 UTC

IllegalArgumentException with bind method

Hi list,
I am struggling with a problem where I can't use a service within
another service. The exception is:


21.07.2011 11:59:11.254 *ERROR* [FelixStartLevel] com.etc.pp.core
[com.etc.pp.PostValidator] The bindValidationService method has thrown
an exception (java.lang.IllegalArgumentException: argument type
mismatch) java.lang.IllegalArgumentException: argument type mismatch
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.felix.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:227)
        at org.apache.felix.scr.impl.helper.BaseMethod.access$500(BaseMethod.java:38)
        at org.apache.felix.scr.impl.helper.BaseMethod$Resolved.invoke(BaseMethod.java:591)
        at org.apache.felix.scr.impl.helper.BaseMethod$NotResolved.invoke(BaseMethod.java:548)
        at org.apache.felix.scr.impl.helper.BaseMethod.invoke(BaseMethod.java:472)
        at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:1028)
        at org.apache.felix.scr.impl.manager.DependencyManager.bind(DependencyManager.java:944)
        at org.apache.felix.scr.impl.manager.DependencyManager.open(DependencyManager.java:868)
        at org.apache.felix.scr.impl.manager.ImmediateComponentManager.createImplementationObject(ImmediateComponentManager.java:200)
        at org.apache.felix.scr.impl.manager.ImmediateComponentManager.createComponent(ImmediateComponentManager.java:118)
        at org.apache.felix.scr.impl.manager.DelayedComponentManager.createRealComponent(DelayedComponentManager.java:95)
        at org.apache.felix.scr.impl.manager.AbstractComponentManager$Registered.getService(AbstractComponentManager.java:1148)
        at org.apache.felix.scr.impl.manager.DelayedComponentManager.getService(DelayedComponentManager.java:88)
        at org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked(ServiceRegistrationImpl.java:306)
        at org.apache.felix.framework.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:220)
        at org.apache.felix.framework.ServiceRegistry.getService(ServiceRegistry.java:322)
        at org.apache.felix.framework.Felix.getService(Felix.java:2913)
        at org.apache.felix.framework.BundleContextImpl.getService(BundleContextImpl.java:330)
        at org.apache.felix.scr.impl.manager.DependencyManager.getService(DependencyManager.java:785)
        at org.apache.felix.scr.impl.manager.ComponentContextImpl.locateService(ComponentContextImpl.java:76)
        at org.apache.sling.servlets.post.impl.SlingPostServlet.registerPostProcessor(SlingPostServlet.java:490)
        at org.apache.sling.servlets.post.impl.SlingPostServlet.bindPostProcessor(SlingPostServlet.java:463)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.felix.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:227)
        at org.apache.felix.scr.impl.helper.BaseMethod.access$500(BaseMethod.java:38)
        at org.apache.felix.scr.impl.helper.BaseMethod$Resolved.invoke(BaseMethod.java:591)
        at org.apache.felix.scr.impl.helper.BaseMethod.invoke(BaseMethod.java:472)
        at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:1028)
        at org.apache.felix.scr.impl.manager.DependencyManager.serviceAdded(DependencyManager.java:308)
        at org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:170)
        at org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:864)
        at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:732)
        at org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:662)
        at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:3619)
        at org.apache.felix.framework.Felix.access$000(Felix.java:39)
        at org.apache.felix.framework.Felix$2.serviceChanged(Felix.java:667)
        at org.apache.felix.framework.ServiceRegistry.registerService(ServiceRegistry.java:97)
        at org.apache.felix.framework.Felix.registerService(Felix.java:2760)
        at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:252)
        at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:449)
        at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerComponentService(AbstractComponentManager.java:460)
        at org.apache.felix.scr.impl.manager.AbstractComponentManager$Unsatisfied.activate(AbstractComponentManager.java:1009)
        at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:333)
        at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:157)
        at org.apache.felix.scr.impl.config.ConfiguredComponentHolder.enableComponents(ConfiguredComponentHolder.java:256)
        at org.apache.felix.scr.impl.BundleComponentActivator.loadDescriptor(BundleComponentActivator.java:253)
        at org.apache.felix.scr.impl.BundleComponentActivator.initialize(BundleComponentActivator.java:147)
        at org.apache.felix.scr.impl.BundleComponentActivator.<init>(BundleComponentActivator.java:111)
        at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:285)
        at org.apache.felix.scr.impl.Activator.bundleChanged(Activator.java:203)
        at org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:800)
        at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:728)
        at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:610)
        at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:3608)
        at org.apache.felix.framework.Felix.startBundle(Felix.java:1706)
        at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1124)
        at org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:264)
        at java.lang.Thread.run(Thread.java:662)

The service is referenced via a @Reference annotation on top of a
variable declaration.
And it is exported in another bundle with the @Service annotation. The
type of the variable and the service interface match.
The console shows that the service is available and that the component
that uses it has satisfied dependencies.

But why then there is a problem with the autogenerated bindmethod? I
guess it is a stupid error somewhere because I have used similar
service setups successfully.
However I have no idea how to further debug this one. Maybe anybody else?

Regards,
 Markus

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Re: IllegalArgumentException with bind method

Posted by Markus Joschko <ma...@gmail.com>.
OK, found it.
Both bundles contained the same package. The importing bundle had
marked this package as private while the service in the exporting
bundle was exactly in that package.
After I moved the service class to another (non "shared") package it works fine.


On Thu, Jul 21, 2011 at 12:13 PM, Markus Joschko
<ma...@gmail.com> wrote:
> Hi list,
> I am struggling with a problem where I can't use a service within
> another service. The exception is:
>
>
> 21.07.2011 11:59:11.254 *ERROR* [FelixStartLevel] com.etc.pp.core
> [com.etc.pp.PostValidator] The bindValidationService method has thrown
> an exception (java.lang.IllegalArgumentException: argument type
> mismatch) java.lang.IllegalArgumentException: argument type mismatch
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at org.apache.felix.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:227)
>        at org.apache.felix.scr.impl.helper.BaseMethod.access$500(BaseMethod.java:38)
>        at org.apache.felix.scr.impl.helper.BaseMethod$Resolved.invoke(BaseMethod.java:591)
>        at org.apache.felix.scr.impl.helper.BaseMethod$NotResolved.invoke(BaseMethod.java:548)
>        at org.apache.felix.scr.impl.helper.BaseMethod.invoke(BaseMethod.java:472)
>        at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:1028)
>        at org.apache.felix.scr.impl.manager.DependencyManager.bind(DependencyManager.java:944)
>        at org.apache.felix.scr.impl.manager.DependencyManager.open(DependencyManager.java:868)
>        at org.apache.felix.scr.impl.manager.ImmediateComponentManager.createImplementationObject(ImmediateComponentManager.java:200)
>        at org.apache.felix.scr.impl.manager.ImmediateComponentManager.createComponent(ImmediateComponentManager.java:118)
>        at org.apache.felix.scr.impl.manager.DelayedComponentManager.createRealComponent(DelayedComponentManager.java:95)
>        at org.apache.felix.scr.impl.manager.AbstractComponentManager$Registered.getService(AbstractComponentManager.java:1148)
>        at org.apache.felix.scr.impl.manager.DelayedComponentManager.getService(DelayedComponentManager.java:88)
>        at org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked(ServiceRegistrationImpl.java:306)
>        at org.apache.felix.framework.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:220)
>        at org.apache.felix.framework.ServiceRegistry.getService(ServiceRegistry.java:322)
>        at org.apache.felix.framework.Felix.getService(Felix.java:2913)
>        at org.apache.felix.framework.BundleContextImpl.getService(BundleContextImpl.java:330)
>        at org.apache.felix.scr.impl.manager.DependencyManager.getService(DependencyManager.java:785)
>        at org.apache.felix.scr.impl.manager.ComponentContextImpl.locateService(ComponentContextImpl.java:76)
>        at org.apache.sling.servlets.post.impl.SlingPostServlet.registerPostProcessor(SlingPostServlet.java:490)
>        at org.apache.sling.servlets.post.impl.SlingPostServlet.bindPostProcessor(SlingPostServlet.java:463)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at org.apache.felix.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:227)
>        at org.apache.felix.scr.impl.helper.BaseMethod.access$500(BaseMethod.java:38)
>        at org.apache.felix.scr.impl.helper.BaseMethod$Resolved.invoke(BaseMethod.java:591)
>        at org.apache.felix.scr.impl.helper.BaseMethod.invoke(BaseMethod.java:472)
>        at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:1028)
>        at org.apache.felix.scr.impl.manager.DependencyManager.serviceAdded(DependencyManager.java:308)
>        at org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:170)
>        at org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:864)
>        at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:732)
>        at org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:662)
>        at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:3619)
>        at org.apache.felix.framework.Felix.access$000(Felix.java:39)
>        at org.apache.felix.framework.Felix$2.serviceChanged(Felix.java:667)
>        at org.apache.felix.framework.ServiceRegistry.registerService(ServiceRegistry.java:97)
>        at org.apache.felix.framework.Felix.registerService(Felix.java:2760)
>        at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:252)
>        at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:449)
>        at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerComponentService(AbstractComponentManager.java:460)
>        at org.apache.felix.scr.impl.manager.AbstractComponentManager$Unsatisfied.activate(AbstractComponentManager.java:1009)
>        at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:333)
>        at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:157)
>        at org.apache.felix.scr.impl.config.ConfiguredComponentHolder.enableComponents(ConfiguredComponentHolder.java:256)
>        at org.apache.felix.scr.impl.BundleComponentActivator.loadDescriptor(BundleComponentActivator.java:253)
>        at org.apache.felix.scr.impl.BundleComponentActivator.initialize(BundleComponentActivator.java:147)
>        at org.apache.felix.scr.impl.BundleComponentActivator.<init>(BundleComponentActivator.java:111)
>        at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:285)
>        at org.apache.felix.scr.impl.Activator.bundleChanged(Activator.java:203)
>        at org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:800)
>        at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:728)
>        at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:610)
>        at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:3608)
>        at org.apache.felix.framework.Felix.startBundle(Felix.java:1706)
>        at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1124)
>        at org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:264)
>        at java.lang.Thread.run(Thread.java:662)
>
> The service is referenced via a @Reference annotation on top of a
> variable declaration.
> And it is exported in another bundle with the @Service annotation. The
> type of the variable and the service interface match.
> The console shows that the service is available and that the component
> that uses it has satisfied dependencies.
>
> But why then there is a problem with the autogenerated bindmethod? I
> guess it is a stupid error somewhere because I have used similar
> service setups successfully.
> However I have no idea how to further debug this one. Maybe anybody else?
>
> Regards,
>  Markus
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org