Hi guys

I am using weblogic 12.1.2 that uses a felix (standard shipped with oracle) so 
that developers can embed osgi applications into a j2ee application.
So far, I am able to boot certain osgi bundles and activate them. However, 
loading of the log4j infrastructure creates some struggle:
1) Either, the main bundle with its activator is not loaded due to missing 
log4j jars (scope: provided)
2) Or the init of the log4j appenders fail because there are two log4j jars on 
the classpath. However, the bundle is active but does not write logfiles, so 
tracking errors is hard.

The question here is: How can I tell the osgi bundles to use the container 
provided jar files instead of explicitly requesting the jars to be shipped with 
the web application?
I already have tried to tell the application to prefer libraries that are 
shipped with the app over the container libs, but this creates more issues than 
it solves with other libraries (weblogic.xml):
    <wls:container-descriptor>
        <prefer-web-inf-classes>true</prefer-web-inf-classes>
    </wls:container-descriptor>
So this is not a solution. Any idea appreciated!

Details:

1)
POM.xml:
========
          <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
            <scope>provided</scope>
        </dependency>

Error during starting of the main bundle:
==================================
Current bundle com.kuka.vms.server has state START_ACTIVATION_POLICY Failed:
org.osgi.framework.BundleException: Unresolved constraint in bundle 
com.kuka.vms.server [85]: Unable to resolve 85.0: missing requirement [85.0] 
osgi.wiring.package; 
(&(osgi.wiring.package=com.kuka.nav.multicast)(version>=1.0.0)) [caused by: 
Unable to resolve 44.0: missing requirement [44.0] osgi.wiring.package; 
(&(osgi.wiring.package=com.kuka.util)(version>=2.0.0)) [caused by: Unable to 
resolve 12.0: missing requirement [12.0] osgi.wiring.package; 
(&(osgi.wiring.package=org.slf4j)(version>=1.7.0))]] at 
org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:3826) at 
org.apache.felix.framework.Felix.startBundle(Felix.java:1868) at 
org.apache.felix.framework.BundleImpl.start(BundleImpl.java:944) at 
org.apache.felix.framework.BundleImpl.start(BundleImpl.java:931) at 
com.swisslog.wm6.test.TestServlet.processRequest(TestServlet.java:78) at 
com.swisslog.wm6.test.TestServlet.doGet(TestServlet.java:276) at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:844) at 
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:280)
 at 
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:254)
 at 
weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136)
 at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:341) 
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:238) 
at 
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3363)
 at 
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3333)
 at 
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
 at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) 
at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57) at 
weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2220)
 at 
weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2146)
 at 
weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2124)
 at 
weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1564) 
at 
weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:254)
 at weblogic.work.ExecuteThread.execute(ExecuteThread.java:295) at 
weblogic.work.ExecuteThread.run(ExecuteThread.java:254)



2)
POM.xml (no scope any longer)
=========
<dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.0</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.0</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>


Error during start of the main bundle:
===============================
java.lang.ClassCastException: org.apache.log4j.RollingFileAppender cannot be 
cast to org.apache.log4j.Appender
at org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.java:248)
at 
org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMConfigurator.java:176)
at 
org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfigurator.java:191)
at 
org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement(DOMConfigurator.java:523)
at org.apache.log4j.xml.DOMConfigurator.parseRoot(DOMConfigurator.java:492)
at org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:1006)
at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:872)
at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:778)
at org.apache.log4j.xml.DOMConfigurator.configure(DOMConfigurator.java:906)
at com.kuka.internal.VMSActivator.start(VMSActivator.java:41)
at 
org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:645)
at org.apache.felix.framework.Felix.activateBundle(Felix.java:1977)
at org.apache.felix.framework.Felix.startBundle(Felix.java:1895)
at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:944)
at weblogic.osgi.internal.OSGiBundleImpl.start(OSGiBundleImpl.java:35)
[...]
log4j:ERROR Could not create an Appender. Reported error follows.
java.lang.ClassCastException: org.apache.log4j.ConsoleAppender cannot be cast 
to org.apache.log4j.Appender
at org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.java:248)
at 
org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMConfigurator.java:176)
at 
org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfigurator.java:191)
at 
org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement(DOMConfigurator.java:523)
at org.apache.log4j.xml.DOMConfigurator.parseRoot(DOMConfigurator.java:492)
at org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:1006)
at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:872)
at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:778)
at org.apache.log4j.xml.DOMConfigurator.configure(DOMConfigurator.java:906)
at com.kuka.internal.VMSActivator.start(VMSActivator.java:41)
at 
org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:645)
at org.apache.felix.framework.Felix.activateBundle(Felix.java:1977)
at org.apache.felix.framework.Felix.startBundle(Felix.java:1895)
at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:944)
at weblogic.osgi.internal.OSGiBundleImpl.start(OSGiBundleImpl.java:35)
at 
weblogic.osgi.internal.OSGiAppDeploymentExtension.startAll(OSGiAppDeploymentExtension.java:61)
at 
weblogic.osgi.internal.OSGiAppDeploymentExtension.deployBundlesIntoFramework(OSGiAppDeploymentExtension.java:146)
at 
weblogic.osgi.internal.OSGiAppDeploymentExtension.prepare(OSGiAppDeploymentExtension.java:229)
at 
weblogic.application.internal.flow.AppDeploymentExtensionFlow.prepare(AppDeploymentExtensionFlow.java:23)
[...]


Thanks,
Remo
This message may contain legally privileged or confidential information and is 
therefore addressed to the named persons only. The recipient should inform the 
sender and delete this message, if he/she is not named as addressee. The sender 
disclaims any and all liability for the integrity and punctuality of this 
message. The sender has activated an automatic virus scanning, but does not 
guarantee the virus free transmission of this message.

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

Reply via email to