I have included apache camel inside my application to forward requests
matching a string pattern. 

When I try to deploy the packaged web application inside the jetty
application server (version  7.6.1.v20120215), the application crashes out
throwing Linkage error. 

I tried to compile the camel source with a few changes in the camel-parent,
pom.xml so that it uses the same version of dependencies as used by the
jetty server and the web application. 

Below are the changes I have done inside the camel-parent, pom.xml:

     <project xmlns="http://maven.apache.org/POM/4.0.0";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd";>
      <parent>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel</artifactId>
        <version>2.10.3</version>
      </parent>
      <modelVersion>4.0.0</modelVersion>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-parent</artifactId>
      <version>2.10.3</version>
      <packaging>pom</packaging>
      <name>Camel :: Parent</name>
      <description>Camel Parent POM</description>
      <properties>
        <jetty-version>7.6.1.v20120215</jetty-version>
        <log4j-version>1.2.16</log4j-version>
        <slf4j-api-version>1.6.1</slf4j-api-version>
        <slf4j-version>1.6.1</slf4j-version>
    

Below are the list of imported dependencies added to my web application's
pom.xml:

    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-core</artifactId>
        <version>2.10.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-spring</artifactId>
        <version>2.10.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-servlet</artifactId>
        <version>2.10.3</version>
    </dependency>


The error which I get everytime I deploy the webapp is:


    2013-02-21 13:06:43.138: org.springframework.web.context.ContextLoader
ERROR - Context initialization failed
    org.springframework.beans.factory.BeanDefinitionStoreException:
Unexpected exception parsing XML document from ServletContext resource
[/WEB-INF/applicationContext.xml]; nested exception is
org.springframework.beans.FatalBeanException: Invalid NamespaceHandler class
[org.apache.camel.spring.handler.CamelNamespaceHandler] for namespace
[http://camel.apache.org/schema/spring]: problem with handler class file or
dependent class; nested exception is java.lang.LinkageError: loader
constraint violation: when resolving method
"org.slf4j.impl.StaticLoggerBinder.getLoggerFactory()Lorg/slf4j/ILoggerFactory;"
the class loader (instance of org/eclipse/jetty/webapp/WebAppClassLoader) of
the current class, org/slf4j/LoggerFactory, and the class loader (instance
of sun/misc/Launcher$AppClassLoader) for resolved class,
org/slf4j/impl/StaticLoggerBinder, have different Class objects for the type
org/slf4j/ILoggerFactory used in the signature
        at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:412)
        at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
        at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
        at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)
        at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)
        at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
        at
org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)
        at
org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
        at
org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131)
        at
org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:527)
        at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:441)
        at
org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:383)
        at
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
        at
org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
        at
org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:733)
        at
org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:233)
        at
org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1214)
        at
org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:676)
        at
org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:455)
        at com.myclass.appserver.ContextWrapper.doStart(ContextWrapper.java:73)
        at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
        at com.myclass.appserver.JettyServer.startHandler(JettyServer.java:274)
        at com.myclass.appserver.JettyServer.deployApp(JettyServer.java:203)
        at com.myclass.appserver.JettyServer.deployApp(JettyServer.java:138)
        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 sun.reflect.misc.Trampoline.invoke(MethodUtil.java:37)
        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 sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:244)
        at
javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1074)
        at
javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:955)
        at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
        at
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
        at
javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1427)
        at
javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectionImpl.java:72)
        at
javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1265)
        at
javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1360)
        at
javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:788)
        at sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
        at sun.rmi.transport.Transport$1.run(Transport.java:159)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
        at
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
        at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
        at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
    Caused by: org.springframework.beans.FatalBeanException: Invalid
NamespaceHandler class
[org.apache.camel.spring.handler.CamelNamespaceHandler] for namespace
[http://camel.apache.org/schema/spring]: problem with handler class file or
dependent class; nested exception is java.lang.LinkageError: loader
constraint violation: when resolving method
"org.slf4j.impl.StaticLoggerBinder.getLoggerFactory()Lorg/slf4j/ILoggerFactory;"
the class loader (instance of org/eclipse/jetty/webapp/WebAppClassLoader) of
the current class, org/slf4j/LoggerFactory, and the class loader (instance
of sun/misc/Launcher$AppClassLoader) for resolved class,
org/slf4j/impl/StaticLoggerBinder, have different Class objects for the type
org/slf4j/ILoggerFactory used in the signature
        at
org.springframework.beans.factory.xml.DefaultNamespaceHandlerResolver.resolve(DefaultNamespaceHandlerResolver.java:139)
        at
org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1414)
        at
org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1409)
        at
org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:184)
        at
org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:140)
        at
org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:111)
        at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)
        at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)
        ... 55 more


I have looked around a lot trying to figure out the linkage error, but
without any result. 

Any help would be appreciated.



--
View this message in context: 
http://camel.465427.n5.nabble.com/Apache-camel-throwing-linkage-error-tp5727964.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to