JMSAppender - Apache ServiceMix (4.2.0-fuse-01-00)
pstrozyk May 17, 2010 4:22 PMHello,
I have problem with JMSAppender configuration on Apache Service Mix 4.2.0 based on felix framework. I don't have problem with the same configuration described below running on Apache Service Mix 4.2.0 based on equinox framework.
Maybe someone could tell me what's going on?
I have my own bundle with log4j.properties configuration:
log4j.category.log4j.jms.service=DEBUG, jms
log4j.appender.jms=org.apache.log4j.net.JMSAppender
log4j.appender.jms.InitialContextFactoryName=org.apache.activemq.jndi.ActiveMQInitialContextFactory
log4j.appender.jms.ProviderURL=tcp://localhost:61616
log4j.appender.jms.TopicBindingName=dynamicTopics/logTopic
log4j.appender.jms.TopicConnectionFactoryBindingName=ConnectionFactory
My MANIFEST.MF file looks like:
Manifest-Version: 1.0
Export-Package: log4j.jms.service.test;version="0";uses:="org.osgi.fra
mework"
Unversioned-Imports: *
Bundle-Classpath: .,lib/log4j-1.2.12.jar
Built-By: peter
Bundle-Name: log4j-jms-service-test
Created-By: Apache Maven
Build-Jdk: 1.6.0_17
Spring-DM-Version: 0.0.1-SNAPSHOT
Bundle-Activator: log4j.jms.service.test.Log4JServiceTestImpl
Bundle-ManifestVersion: 2
Import-Package: javax.jms,javax.naming,org.apache.activemq.jndi,org.os
gi.framework
Bundle-SymbolicName: log4j-jms-service-test
Archiver-Version: Plexus Archiver
And as I said. Everything work fine with this configuration on Apache Service Mix based on equinox framework. JMS Appender works very well.
But if I have Apache Service Mix based on felix framework I got error where I start my bundle:
(...)
log4j:ERROR Error while activating options for appender named .
javax.naming.NamingException: Argh this should never happen Root exception is java.lang.ClassNotFoundException: org.apache.activemq.jndi.ActiveMQInitialContextFactory
at org.apache.servicemix.naming.OSGiInitialContextFactoryBuilder.createContext(OSGiInitialContextFactoryBuilder.java:159)
at org.apache.servicemix.naming.OSGiInitialContextFactoryBuilder.getInitialContext(OSGiInitialContextFactoryBuilder.java:92)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.init(InitialContext.java:223)
at javax.naming.InitialContext.(InitialContext.java:197)
at org.apache.log4j.net.JMSAppender.activateOptions(JMSAppender.java:200)
at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:257)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:133)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:97)
at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:689)
at org.apache.log4j.PaxLoggingConfigurator.parseAppender(PaxLoggingConfigurator.java:47)
at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:647)
at org.apache.log4j.PropertyConfigurator.parseCatsAndRenderers(PropertyConfigurator.java:568)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:442)
at org.ops4j.pax.logging.internal.PaxLoggingServiceImpl.updated(PaxLoggingServiceImpl.java:180)
at org.ops4j.pax.logging.internal.PaxLoggingServiceImpl$1ManagedPaxLoggingService.updated(PaxLoggingServiceImpl.java:314)
at org.apache.felix.cm.impl.ConfigurationManager$UpdateConfiguration.run(ConfigurationManager.java:1389)
at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:88)
Caused by: java.lang.ClassNotFoundException: org.apache.activemq.jndi.ActiveMQInitialContextFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:315)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at org.apache.servicemix.naming.OSGiInitialContextFactoryBuilder.createContext(OSGiInitialContextFactoryBuilder.java:156)
... 18 more
(...)
Best regards,
Peter