You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@sling.apache.org by Markus Joschko <ma...@gmail.com> on 2011/11/15 22:44:09 UTC

OSGI woes

Hi,
maybe someone with a bit more OSGI experience can help me with my current issue.
I currently play around with a custom extension to the
DefaultAccessManager and ACLProvider which works fine when I use it
without OSGI and sling just in combination with jackrabbit.
However when I use it in the sling context it already fails on startup.

I implemented the access manager as a fragment to the
org.apache.sling.jcr.jackrabbit.server bundle.

<Fragment-Host>
 org.apache.sling.jcr.jackrabbit.server
</Fragment-Host>
 <Export-Package>!*</Export-Package>
<Import-Package>!*</Import-Package>

Then I directly set references to the access manager classes in the
repository.xml, omitting the pluggable access manager.

However when I now start sling, I get the following exception:

1.2011 21:54:10.278 *ERROR* [Repository Pinger]
org.apache.sling.jcr.jackrabbit.server startRepository: Uncaught
Throwable trying to access Repository, calling stopRepository()
(java.lang.NoClassDefFoundError:
org/apache/jackrabbit/core/security/authorization/AccessControlObserver)
java.lang.NoClassDefFoundError:
org/apache/jackrabbit/core/security/authorization/AccessControlObserver
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
        at org.apache.felix.framework.ModuleImpl$ModuleClassLoader.findClass(ModuleImpl.java:1907)
        at org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:727)
        at org.apache.felix.framework.ModuleImpl.access$400(ModuleImpl.java:71)
        at org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1768)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
        at java.lang.Class.privateGetPublicMethods(Class.java:2547)
        at java.lang.Class.getMethods(Class.java:1410)
        at org.apache.jackrabbit.core.config.BeanConfig.getSetters(BeanConfig.java:226)
        at org.apache.jackrabbit.core.config.BeanConfig.newInstance(BeanConfig.java:189)
        at org.apache.jackrabbit.core.security.authorization.AccessControlProviderFactoryImpl.createProvider(AccessControlProviderFactoryImpl.java:77)
        at org.apache.jackrabbit.core.DefaultSecurityManager.getAccessControlProvider(DefaultSecurityManager.java:558)
        at org.apache.jackrabbit.core.DefaultSecurityManager.getAccessManager(DefaultSecurityManager.java:267)
        at org.apache.jackrabbit.core.SessionImpl.createAccessManager(SessionImpl.java:373)
        at org.apache.jackrabbit.core.SessionImpl.<init>(SessionImpl.java:290)
        at org.apache.jackrabbit.core.SessionImpl.<init>(SessionImpl.java:259)
        at org.apache.jackrabbit.core.XASessionImpl.<init>(XASessionImpl.java:107)
        at org.apache.jackrabbit.core.RepositoryImpl.createSessionInstance(RepositoryImpl.java:1602)
        at org.apache.jackrabbit.core.RepositoryImpl.createSession(RepositoryImpl.java:1010)
        at org.apache.jackrabbit.core.RepositoryImpl.login(RepositoryImpl.java:1500)
        at org.apache.sling.jcr.base.AbstractSlingRepository.login(AbstractSlingRepository.java:214)
        at org.apache.sling.jcr.base.AbstractSlingRepository.loginAdministrative(AbstractSlingRepository.java:180)
        at org.apache.sling.jcr.base.AbstractSlingRepository.pingAndCheck(AbstractSlingRepository.java:517)
        at org.apache.sling.jcr.base.AbstractSlingRepository.startRepository(AbstractSlingRepository.java:804)
        at org.apache.sling.jcr.base.AbstractSlingRepository.run(AbstractSlingRepository.java:925)
        at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ClassNotFoundException:
org.apache.jackrabbit.core.security.authorization.AccessControlObserver
not found by org.apache.sling.jcr.jackrabbit.server [8]
        at org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:787)
        at org.apache.felix.framework.ModuleImpl.access$400(ModuleImpl.java:71)
        at org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1768)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        ... 30 more

The AccessControlObserver is needed by one of the classes used in the
new accessmanager.
I don't understand, why it is not available to the server bundle, as
it is contained in the jackrabbit core jar which is embedded into the
server bundle.
Any header I am missing in my fragment?

Thanks,
 Markus