Camel
  1. Camel
  2. CAMEL-3519

camel-web-console feature for Apache Karaf

    Details

    • Type: New Feature New Feature
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Won't Fix
    • Affects Version/s: None
    • Fix Version/s: Future
    • Component/s: camel-web, karaf
    • Labels:
      None
    1. WorkingOSGiMultipleContexts2.diff
      110 kB
      Yaytay
    2. WorkingOSGiMultipleContexts.diff
      113 kB
      Yaytay
    3. MultipleContextsButNoOSGi.diff
      90 kB
      Yaytay
    4. GettingItWorking.diff
      5 kB
      Yaytay
    5. Karaf-2.1.99-SNAPSHOT-walkthrough
      4 kB
      Achim Nierbeck

      Issue Links

        Activity

        Hide
        Claus Ibsen added a comment -

        The web console is deprecated, and to be removed in Camel 3.0

        Show
        Claus Ibsen added a comment - The web console is deprecated, and to be removed in Camel 3.0
        Hide
        Heath Kesler added a comment -

        Has this actually been resolved? I just tested this, it seems to build and deploy fine (without error), but I can not access the page from Servicemix 4.4.1 (fuse) using the Camel 2.8.4 build. Am I using in compatible builds or is there something wrong.

        I built using the mvn clean install -Posgi in the camel-web component and tried to deploy the generated war using:

        install war:mvn:org.apache.camel/camel-web/2.8.4-SNAPSHOT/war

        Again, this appears to install and start without issue. But the web page does not come up using:
        http://localhost:8181/camelweb/
        or
        http://localhost:8181/camelweb/routes
        or
        any other combination of previously suggested URLS.

        NOTE: mvn jetty:run works as expected.

        Show
        Heath Kesler added a comment - Has this actually been resolved? I just tested this, it seems to build and deploy fine (without error), but I can not access the page from Servicemix 4.4.1 (fuse) using the Camel 2.8.4 build. Am I using in compatible builds or is there something wrong. I built using the mvn clean install -Posgi in the camel-web component and tried to deploy the generated war using: install war:mvn:org.apache.camel/camel-web/2.8.4-SNAPSHOT/war Again, this appears to install and start without issue. But the web page does not come up using: http://localhost:8181/camelweb/ or http://localhost:8181/camelweb/routes or any other combination of previously suggested URLS. NOTE: mvn jetty:run works as expected.
        Hide
        Claus Ibsen added a comment -

        It just a reminder that the web console must be useable out of the box for non-osgi users as well.

        Show
        Claus Ibsen added a comment - It just a reminder that the web console must be useable out of the box for non-osgi users as well.
        Hide
        Yaytay added a comment -

        Claus,
        I'm confused by your first statement, it was running in Jetty (I didn't test in tomcat).

        Show
        Yaytay added a comment - Claus, I'm confused by your first statement, it was running in Jetty (I didn't test in tomcat).
        Hide
        Claus Ibsen added a comment -

        The web console must also be deployable for non osgi environments such as a Apache Tomcat, Jetty, JEE servers and whatnot.
        Also we have no interrest in creating new CamelContext's. Only to view the existing contexts in the JVM.

        Show
        Claus Ibsen added a comment - The web console must also be deployable for non osgi environments such as a Apache Tomcat, Jetty, JEE servers and whatnot. Also we have no interrest in creating new CamelContext's. Only to view the existing contexts in the JVM.
        Hide
        Yaytay added a comment -

        A revised patch with fixed links and based on an up-to-date trunk (1133735).

        This should be ready for reviewing now.

        Show
        Yaytay added a comment - A revised patch with fixed links and based on an up-to-date trunk (1133735). This should be ready for reviewing now.
        Hide
        Yaytay added a comment -

        Just found some broken URLs (those returned via "seeOther" after a form submission won't work with a non-root servlet path).
        I'll get a fixed patch (from an up to date trunk) tomorrow.

        Show
        Yaytay added a comment - Just found some broken URLs (those returned via "seeOther" after a form submission won't work with a non-root servlet path). I'll get a fixed patch (from an up to date trunk) tomorrow.
        Hide
        Yaytay added a comment -

        Attached is a patch that gives a fully working camel-web for both OSGi and standalone.

        I don't know how the build process handles running the OSGI profile and putting the results somewhere special, so I leave that bit as an excercise for someone else.

        There is much more that can be done here, one concern I've got is that the current architecture gives JAX-RS resources direct access to CamelContexts managed by OSGi, which may disappear rudely.

        Also, I'll probably create another jira for getting more details of endpoints from camel-web.

        Show
        Yaytay added a comment - Attached is a patch that gives a fully working camel-web for both OSGi and standalone. I don't know how the build process handles running the OSGI profile and putting the results somewhere special, so I leave that bit as an excercise for someone else. There is much more that can be done here, one concern I've got is that the current architecture gives JAX-RS resources direct access to CamelContexts managed by OSGi, which may disappear rudely. Also, I'll probably create another jira for getting more details of endpoints from camel-web.
        Hide
        Yaytay added a comment -

        This attachment is still very much a work in progress.
        It supports multiple contexts outside of OSGi, but I haven't yet written the tracker for OSGi instances.

        The main purpose of this attachment is to make up for svn not being a DVCS

        Show
        Yaytay added a comment - This attachment is still very much a work in progress. It supports multiple contexts outside of OSGi, but I haven't yet written the tracker for OSGi instances. The main purpose of this attachment is to make up for svn not being a DVCS
        Hide
        Yaytay added a comment -

        What I was thinking was:
        1. Change the API so that it supports multiple contexts (i.e. something like 'camelweb/context/route').
        2. Add a public function to allow external code to register contexts with camel-web.
        3. Add an OSGi service tracker to tracke camel context services and register those.

        I'm not sure how non-OSGi users actually use camel-web, do they extend it somehow to specify their own contexts?

        What do you think?

        Show
        Yaytay added a comment - What I was thinking was: 1. Change the API so that it supports multiple contexts (i.e. something like 'camelweb/context/route'). 2. Add a public function to allow external code to register contexts with camel-web. 3. Add an OSGi service tracker to tracke camel context services and register those. I'm not sure how non-OSGi users actually use camel-web, do they extend it somehow to specify their own contexts? What do you think?
        Hide
        Claus Ibsen added a comment -

        Yaytay good work. Yeah keep it working.

        The bigger problem is that the camel-web in osgi/karaf, is not embedded with each web application anymore (as in a WAR). But it should instead be able to discover and lookup existing Camel apps from the OSGi service registry. So that requires osgi related code. So we may have to add an osgi layer in there, that is only used when installed in osgi.

        Bottom line camel-web should work in both worlds: non osgi and osgi.

        Show
        Claus Ibsen added a comment - Yaytay good work. Yeah keep it working. The bigger problem is that the camel-web in osgi/karaf, is not embedded with each web application anymore (as in a WAR). But it should instead be able to discover and lookup existing Camel apps from the OSGi service registry. So that requires osgi related code. So we may have to add an osgi layer in there, that is only used when installed in osgi. Bottom line camel-web should work in both worlds: non osgi and osgi.
        Hide
        Yaytay added a comment -

        I've spent the last couple of days trying to get the basic camel-web working in Karaf 2.2.0 (most of the time being spent trying to work out how jersey and scalate interact).
        Anyway, the attached diff (based on Revision: 1124198) gets the basic camel-web working in Karaf.

        Is this useful and going in the right direction?
        I'm happy to spend some more time working on this if it is.

        Show
        Yaytay added a comment - I've spent the last couple of days trying to get the basic camel-web working in Karaf 2.2.0 (most of the time being spent trying to work out how jersey and scalate interact). Anyway, the attached diff (based on Revision: 1124198) gets the basic camel-web working in Karaf. Is this useful and going in the right direction? I'm happy to spend some more time working on this if it is.
        Hide
        Achim Nierbeck added a comment -

        @Yaytay,
        you are certainly right. This is only the first half of the problem. There is surely also something missing to support multiple Camel contexts.

        Show
        Achim Nierbeck added a comment - @Yaytay, you are certainly right. This is only the first half of the problem. There is surely also something missing to support multiple Camel contexts.
        Hide
        Yaytay added a comment -

        Isn't the problem bigger than discussed above, in that for a web console to work in OSGi it should support multiple Camel contexts?
        Should a properly OSGi-fied camel-web be completely separate from the non-OSGi camel-web?

        Show
        Yaytay added a comment - Isn't the problem bigger than discussed above, in that for a web console to work in OSGi it should support multiple Camel contexts? Should a properly OSGi-fied camel-web be completely separate from the non-OSGi camel-web?
        Hide
        Ben O'Day added a comment -

        any update on this issue?

        Show
        Ben O'Day added a comment - any update on this issue?
        Hide
        Guillaume Nodet added a comment -

        Well, even with fixing the first exceptions, both camel and jersey do some classpath scanning in order to find several things. And classpath scanning is not well supported in OSGi, so the web app can't be used directly. The only way would be to hack the OSGi framework to support that or to use camel and jersey as real osgi bundles (i.e. don't really deploy a war but a fully prepared set of OSGi bundles including a wab).

        Show
        Guillaume Nodet added a comment - Well, even with fixing the first exceptions, both camel and jersey do some classpath scanning in order to find several things. And classpath scanning is not well supported in OSGi, so the web app can't be used directly. The only way would be to hack the OSGi framework to support that or to use camel and jersey as real osgi bundles (i.e. don't really deploy a war but a fully prepared set of OSGi bundles including a wab).
        Hide
        Achim Nierbeck added a comment - - edited

        Attached a complete list of steps to run this with the latest (2.1.99-SNAPSHOT) Karaf version.

        As Guillaume already stated in the last comment, this is a "Internal" dependencies issue. I guess a real WebApplicationBundle with Manifest is needed here.
        When creating a WAB it is possible to keep certain dependencies contained in the lib folder out of the classloader. E.g. the camel and spring dependencies can be requested from the Karaf Container.
        Another thing that jumped on me, there are certain packages like com.sun.jersey.*, org.apache.camel.web.*, scalate.layouts.* and so on not located in the WEB-INF/classes directory where IMHO these packages belong. BTW, the generated classpath for the war looks like the following

        Bundle-ClassPath = WEB-INF/classes,WEB-INF/lib/activation-1.1.jar,WEB-INF/lib/aopalliance-1.0.jar,WEB-INF/lib/asm-3.1.jar,WEB-INF/lib/camel-core-2.6.0.jar,WEB-INF/lib/camel-spring-2.6.0.jar,WEB-INF/lib/commons-logging-1.1.1.jar,WEB-INF/lib/commons-logging-api-1.1.jar,WEB-INF/lib/commons-management-1.0.jar,WEB-INF/lib/jackson-core-asl-1.5.5.jar,WEB-INF/lib/jackson-jaxrs-1.5.5.jar,WEB-INF/lib/jackson-mapper-asl-1.5.5.jar,WEB-INF/lib/jackson-xc-1.5.5.jar,WEB-INF/lib/jaxb-api-2.1.jar,WEB-INF/lib/jaxb-impl-2.1.13.jar,WEB-INF/lib/jdom-1.0.jar,WEB-INF/lib/jersey-atom-1.4.jar,WEB-INF/lib/jersey-core-1.4.jar,WEB-INF/lib/jersey-json-1.4.jar,WEB-INF/lib/jersey-server-1.4.jar,WEB-INF/lib/jersey-spring-1.4.jar,WEB-INF/lib/jettison-1.2.jar,WEB-INF/lib/log4j-1.2.16.jar,WEB-INF/lib/scala-compiler-2.8.0.jar,WEB-INF/lib/scala-library-2.8.0.jar,WEB-INF/lib/scalate-core-1.3.1.jar,WEB-INF/lib/slf4j-api-1.6.1.jar,WEB-INF/lib/slf4j-log4j12-1.6.1.jar,WEB-INF/lib/spring-aop-3.0.5.RELEASE.jar,WEB-INF/lib/spring-asm-3.0.5.RELEASE.jar,WEB-INF/lib/spring-beans-3.0.5.RELEASE.jar,WEB-INF/lib/spring-context-3.0.5.RELEASE.jar,WEB-INF/lib/spring-core-3.0.5.RELEASE.jar,WEB-INF/lib/spring-expression-3.0.5.RELEASE.jar,WEB-INF/lib/spring-tx-3.0.5.RELEASE.jar,WEB-INF/lib/spring-web-3.0.5.RELEASE.jar,WEB-INF/lib/stax-api-1.0-2.jar,WEB-INF/lib/stax-api-1.0.1.jar

        Show
        Achim Nierbeck added a comment - - edited Attached a complete list of steps to run this with the latest (2.1.99-SNAPSHOT) Karaf version. As Guillaume already stated in the last comment, this is a "Internal" dependencies issue. I guess a real WebApplicationBundle with Manifest is needed here. When creating a WAB it is possible to keep certain dependencies contained in the lib folder out of the classloader. E.g. the camel and spring dependencies can be requested from the Karaf Container. Another thing that jumped on me, there are certain packages like com.sun.jersey.*, org.apache.camel.web.*, scalate.layouts.* and so on not located in the WEB-INF/classes directory where IMHO these packages belong. BTW, the generated classpath for the war looks like the following Bundle-ClassPath = WEB-INF/classes,WEB-INF/lib/activation-1.1.jar,WEB-INF/lib/aopalliance-1.0.jar,WEB-INF/lib/asm-3.1.jar,WEB-INF/lib/camel-core-2.6.0.jar,WEB-INF/lib/camel-spring-2.6.0.jar,WEB-INF/lib/commons-logging-1.1.1.jar,WEB-INF/lib/commons-logging-api-1.1.jar,WEB-INF/lib/commons-management-1.0.jar,WEB-INF/lib/jackson-core-asl-1.5.5.jar,WEB-INF/lib/jackson-jaxrs-1.5.5.jar,WEB-INF/lib/jackson-mapper-asl-1.5.5.jar,WEB-INF/lib/jackson-xc-1.5.5.jar,WEB-INF/lib/jaxb-api-2.1.jar,WEB-INF/lib/jaxb-impl-2.1.13.jar,WEB-INF/lib/jdom-1.0.jar,WEB-INF/lib/jersey-atom-1.4.jar,WEB-INF/lib/jersey-core-1.4.jar,WEB-INF/lib/jersey-json-1.4.jar,WEB-INF/lib/jersey-server-1.4.jar,WEB-INF/lib/jersey-spring-1.4.jar,WEB-INF/lib/jettison-1.2.jar,WEB-INF/lib/log4j-1.2.16.jar,WEB-INF/lib/scala-compiler-2.8.0.jar,WEB-INF/lib/scala-library-2.8.0.jar,WEB-INF/lib/scalate-core-1.3.1.jar,WEB-INF/lib/slf4j-api-1.6.1.jar,WEB-INF/lib/slf4j-log4j12-1.6.1.jar,WEB-INF/lib/spring-aop-3.0.5.RELEASE.jar,WEB-INF/lib/spring-asm-3.0.5.RELEASE.jar,WEB-INF/lib/spring-beans-3.0.5.RELEASE.jar,WEB-INF/lib/spring-context-3.0.5.RELEASE.jar,WEB-INF/lib/spring-core-3.0.5.RELEASE.jar,WEB-INF/lib/spring-expression-3.0.5.RELEASE.jar,WEB-INF/lib/spring-tx-3.0.5.RELEASE.jar,WEB-INF/lib/spring-web-3.0.5.RELEASE.jar,WEB-INF/lib/stax-api-1.0-2.jar,WEB-INF/lib/stax-api-1.0.1.jar
        Hide
        Guillaume Nodet added a comment - - edited

        So the problem comes from the following exception:

        20:01:34,920 | ERROR | -SNAPSHOT/deploy | RegisterWebAppVisitorWC          | internal.RegisterWebAppVisitorWC  215 | 57 - org.ops4j.pax.web.pax-web-extender-war - 1.0.0.SNAPSHOT | Registration exception. Skipping.
        java.lang.RuntimeException: org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.lang.LinkageError: loader constraint violation: when resolving field "DATETIME" the class loader (instance of org/apache/felix/framework/ModuleImpl$ModuleClassLoaderJava5) of the referring class, javax/xml/datatype/DatatypeConstants, and the class loader (instance of <bootloader>) for the field's resolved type, javax/xml/namespace/QName, have different Class objects for that type
        	at org.eclipse.jetty.servlet.ServletHandler.updateMappings(ServletHandler.java:1218)[49:org.eclipse.jetty.servlet:7.2.2.v20101205]
        	at org.eclipse.jetty.servlet.ServletHandler.setServletMappings(ServletHandler.java:1272)[49:org.eclipse.jetty.servlet:7.2.2.v20101205]
        	at org.eclipse.jetty.servlet.ServletHandler.addServletMapping(ServletHandler.java:872)[49:org.eclipse.jetty.servlet:7.2.2.v20101205]
        	at org.ops4j.pax.web.service.jetty.internal.JettyServerImpl$1.call(JettyServerImpl.java:156)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.service.jetty.internal.JettyServerImpl$1.call(JettyServerImpl.java:152)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.swissbox.core.ContextClassLoaderUtils.doWithClassLoader(ContextClassLoaderUtils.java:60)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.service.jetty.internal.JettyServerImpl.addServlet(JettyServerImpl.java:151)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.service.jetty.internal.ServerControllerImpl$Started.addServlet(ServerControllerImpl.java:266)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.service.jetty.internal.ServerControllerImpl.addServlet(ServerControllerImpl.java:107)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.service.internal.HttpServiceStarted.registerServlet(HttpServiceStarted.java:248)[53:org.ops4j.pax.web.pax-web-runtime:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.service.internal.HttpServiceStarted.registerServlet(HttpServiceStarted.java:219)[53:org.ops4j.pax.web.pax-web-runtime:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.service.internal.HttpServiceProxy.registerServlet(HttpServiceProxy.java:100)[53:org.ops4j.pax.web.pax-web-runtime:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.extender.war.internal.RegisterWebAppVisitorWC.visit(RegisterWebAppVisitorWC.java:206)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.extender.war.internal.model.WebApp.accept(WebApp.java:583)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.extender.war.internal.WebAppPublisher$HttpServiceListener.register(WebAppPublisher.java:170)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.extender.war.internal.WebAppPublisher$HttpServiceListener.serviceChanged(WebAppPublisher.java:155)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.extender.war.internal.WebAppPublisher$HttpServiceListener.serviceChanged(WebAppPublisher.java:119)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.swissbox.tracker.ReplaceableService.setService(ReplaceableService.java:114)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.swissbox.tracker.ReplaceableService.access$100(ReplaceableService.java:28)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.swissbox.tracker.ReplaceableService$CollectionListener.serviceAdded(ReplaceableService.java:183)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.swissbox.tracker.ServiceCollection$Tracker.addingService(ServiceCollection.java:181)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT]
        	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:896)[karaf.jar:]
        	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:261)[karaf.jar:]
        	at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184)[karaf.jar:]
        	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:339)[karaf.jar:]
        	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:273)[karaf.jar:]
        	at org.ops4j.pax.swissbox.tracker.ServiceCollection.onStart(ServiceCollection.java:139)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.swissbox.lifecycle.AbstractLifecycle$Stopped.start(AbstractLifecycle.java:121)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.swissbox.lifecycle.AbstractLifecycle.start(AbstractLifecycle.java:49)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.swissbox.tracker.ReplaceableService.onStart(ReplaceableService.java:146)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.swissbox.lifecycle.AbstractLifecycle$Stopped.start(AbstractLifecycle.java:121)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.swissbox.lifecycle.AbstractLifecycle.start(AbstractLifecycle.java:49)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.extender.war.internal.WebAppPublisher.publish(WebAppPublisher.java:81)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.extender.war.internal.WebXmlObserver.doPublish(WebXmlObserver.java:266)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.extender.war.internal.WebXmlObserver.addingEntries(WebXmlObserver.java:143)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.swissbox.extender.BundleWatcher.register(BundleWatcher.java:186)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.swissbox.extender.BundleWatcher.access$000(BundleWatcher.java:45)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.swissbox.extender.BundleWatcher$1.bundleChanged(BundleWatcher.java:127)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT]
        	at org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:807)[org.apache.felix.framework-3.0.8.jar:]
        	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:729)[org.apache.felix.framework-3.0.8.jar:]
        	at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:610)[org.apache.felix.framework-3.0.8.jar:]
        	at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:3758)[org.apache.felix.framework-3.0.8.jar:]
        	at org.apache.felix.framework.Felix.startBundle(Felix.java:1780)[org.apache.felix.framework-3.0.8.jar:]
        	at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:922)[org.apache.felix.framework-3.0.8.jar:]
        	at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:1175)[6:org.apache.felix.fileinstall:3.1.7.SNAPSHOT]
        	at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:1153)[6:org.apache.felix.fileinstall:3.1.7.SNAPSHOT]
        	at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:458)[6:org.apache.felix.fileinstall:3.1.7.SNAPSHOT]
        	at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:263)[6:org.apache.felix.fileinstall:3.1.7.SNAPSHOT]
        Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.lang.LinkageError: loader constraint violation: when resolving field "DATETIME" the class loader (instance of org/apache/felix/framework/ModuleImpl$ModuleClassLoaderJava5) of the referring class, javax/xml/datatype/DatatypeConstants, and the class loader (instance of <bootloader>) for the field's resolved type, javax/xml/namespace/QName, have different Class objects for that type
        	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:412)[61:camel-web-2.5.0-fuse-00:00]
        	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)[61:camel-web-2.5.0-fuse-00:00]
        	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)[61:camel-web-2.5.0-fuse-00:00]
        	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)[61:camel-web-2.5.0-fuse-00:00]
        	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)[61:camel-web-2.5.0-fuse-00:00]
        	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)[61:camel-web-2.5.0-fuse-00:00]
        	at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)[61:camel-web-2.5.0-fuse-00:00]
        	at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:93)[61:camel-web-2.5.0-fuse-00:00]
        	at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)[61:camel-web-2.5.0-fuse-00:00]
        	at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467)[61:camel-web-2.5.0-fuse-00:00]
        	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397)[61:camel-web-2.5.0-fuse-00:00]
        	at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)[61:camel-web-2.5.0-fuse-00:00]
        	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)[61:camel-web-2.5.0-fuse-00:00]
        	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)[61:camel-web-2.5.0-fuse-00:00]
        	at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext$1.call(HttpServiceContext.java:168)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext$1.call(HttpServiceContext.java:164)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.swissbox.core.ContextClassLoaderUtils.doWithClassLoader(ContextClassLoaderUtils.java:60)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.addEventListener(HttpServiceContext.java:161)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.service.jetty.internal.JettyServerImpl.addEventListener(JettyServerImpl.java:235)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.service.jetty.internal.ServerControllerImpl$Started.addEventListener(ServerControllerImpl.java:276)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.service.jetty.internal.ServerControllerImpl.addEventListener(ServerControllerImpl.java:127)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.service.internal.HttpServiceStarted.registerEventListener(HttpServiceStarted.java:286)[53:org.ops4j.pax.web.pax-web-runtime:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.service.internal.HttpServiceProxy.registerEventListener(HttpServiceProxy.java:133)[53:org.ops4j.pax.web.pax-web-runtime:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.extender.war.internal.RegisterWebAppVisitorWC.visit(RegisterWebAppVisitorWC.java:276)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT]
        	at org.ops4j.pax.web.extender.war.internal.model.WebApp.accept(WebApp.java:561)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT]
        	... 34 more
        Caused by: java.lang.LinkageError: loader constraint violation: when resolving field "DATETIME" the class loader (instance of org/apache/felix/framework/ModuleImpl$ModuleClassLoaderJava5) of the referring class, javax/xml/datatype/DatatypeConstants, and the class loader (instance of <bootloader>) for the field's resolved type, javax/xml/namespace/QName, have different Class objects for that type
        	at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl.<clinit>(RuntimeBuiltinLeafInfoImpl.java:259)
        	at com.sun.xml.bind.v2.model.impl.RuntimeTypeInfoSetImpl.<init>(RuntimeTypeInfoSetImpl.java:61)
        	at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:129)
        	at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:81)
        	at com.sun.xml.bind.v2.model.impl.ModelBuilder.<init>(ModelBuilder.java:152)
        	at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.<init>(RuntimeModelBuilder.java:89)
        	at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:456)
        	at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:302)
        	at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1140)
        	at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:154)
        	at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:121)
        	at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:202)
        	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.6.0_22]
        	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)[:1.6.0_22]
        	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)[:1.6.0_22]
        	at java.lang.reflect.Method.invoke(Method.java:597)[:1.6.0_22]
        	at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:133)[:1.6.0_22]
        	at javax.xml.bind.ContextFinder.find(ContextFinder.java:286)[:1.6.0_22]
        	at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:372)[:1.6.0_22]
        	at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:337)[:1.6.0_22]
        	at org.apache.camel.spring.handler.CamelNamespaceHandler.createJaxbContext(CamelNamespaceHandler.java:187)
        	at org.apache.camel.spring.handler.CamelNamespaceHandler.getJaxbContext(CamelNamespaceHandler.java:174)
        	at org.apache.camel.spring.handler.CamelNamespaceHandler$CamelContextBeanDefinitionParser.doParse(CamelNamespaceHandler.java:257)
        	at org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser.parseInternal(AbstractSingleBeanDefinitionParser.java:85)
        	at org.springframework.beans.factory.xml.AbstractBeanDefinitionParser.parse(AbstractBeanDefinitionParser.java:59)
        	at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:73)
        	at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1335)
        	at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1325)
        	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:135)
        	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:93)
        	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)
        	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)
        	... 58 more
        

        which looks really bad
        I'm sure I can find an easy workaround by specifying some additional imports when deploying the war, which means you wouldn't be able to drop it into the deploy folder, but I suppose that's not that big a deal.

        I'll also try to actually investigate the real issue, but that's way trickier I think.

        Show
        Guillaume Nodet added a comment - - edited So the problem comes from the following exception: 20:01:34,920 | ERROR | -SNAPSHOT/deploy | RegisterWebAppVisitorWC | internal.RegisterWebAppVisitorWC 215 | 57 - org.ops4j.pax.web.pax-web-extender-war - 1.0.0.SNAPSHOT | Registration exception. Skipping. java.lang.RuntimeException: org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.lang.LinkageError: loader constraint violation: when resolving field "DATETIME" the class loader (instance of org/apache/felix/framework/ModuleImpl$ModuleClassLoaderJava5) of the referring class, javax/xml/datatype/DatatypeConstants, and the class loader (instance of <bootloader>) for the field's resolved type, javax/xml/namespace/QName, have different Class objects for that type at org.eclipse.jetty.servlet.ServletHandler.updateMappings(ServletHandler.java:1218)[49:org.eclipse.jetty.servlet:7.2.2.v20101205] at org.eclipse.jetty.servlet.ServletHandler.setServletMappings(ServletHandler.java:1272)[49:org.eclipse.jetty.servlet:7.2.2.v20101205] at org.eclipse.jetty.servlet.ServletHandler.addServletMapping(ServletHandler.java:872)[49:org.eclipse.jetty.servlet:7.2.2.v20101205] at org.ops4j.pax.web.service.jetty.internal.JettyServerImpl$1.call(JettyServerImpl.java:156)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT] at org.ops4j.pax.web.service.jetty.internal.JettyServerImpl$1.call(JettyServerImpl.java:152)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT] at org.ops4j.pax.swissbox.core.ContextClassLoaderUtils.doWithClassLoader(ContextClassLoaderUtils.java:60)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT] at org.ops4j.pax.web.service.jetty.internal.JettyServerImpl.addServlet(JettyServerImpl.java:151)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT] at org.ops4j.pax.web.service.jetty.internal.ServerControllerImpl$Started.addServlet(ServerControllerImpl.java:266)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT] at org.ops4j.pax.web.service.jetty.internal.ServerControllerImpl.addServlet(ServerControllerImpl.java:107)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT] at org.ops4j.pax.web.service.internal.HttpServiceStarted.registerServlet(HttpServiceStarted.java:248)[53:org.ops4j.pax.web.pax-web-runtime:1.0.0.SNAPSHOT] at org.ops4j.pax.web.service.internal.HttpServiceStarted.registerServlet(HttpServiceStarted.java:219)[53:org.ops4j.pax.web.pax-web-runtime:1.0.0.SNAPSHOT] at org.ops4j.pax.web.service.internal.HttpServiceProxy.registerServlet(HttpServiceProxy.java:100)[53:org.ops4j.pax.web.pax-web-runtime:1.0.0.SNAPSHOT] at org.ops4j.pax.web.extender.war.internal.RegisterWebAppVisitorWC.visit(RegisterWebAppVisitorWC.java:206)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT] at org.ops4j.pax.web.extender.war.internal.model.WebApp.accept(WebApp.java:583)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT] at org.ops4j.pax.web.extender.war.internal.WebAppPublisher$HttpServiceListener.register(WebAppPublisher.java:170)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT] at org.ops4j.pax.web.extender.war.internal.WebAppPublisher$HttpServiceListener.serviceChanged(WebAppPublisher.java:155)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT] at org.ops4j.pax.web.extender.war.internal.WebAppPublisher$HttpServiceListener.serviceChanged(WebAppPublisher.java:119)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT] at org.ops4j.pax.swissbox.tracker.ReplaceableService.setService(ReplaceableService.java:114)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT] at org.ops4j.pax.swissbox.tracker.ReplaceableService.access$100(ReplaceableService.java:28)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT] at org.ops4j.pax.swissbox.tracker.ReplaceableService$CollectionListener.serviceAdded(ReplaceableService.java:183)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT] at org.ops4j.pax.swissbox.tracker.ServiceCollection$Tracker.addingService(ServiceCollection.java:181)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT] at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:896)[karaf.jar:] at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:261)[karaf.jar:] at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184)[karaf.jar:] at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:339)[karaf.jar:] at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:273)[karaf.jar:] at org.ops4j.pax.swissbox.tracker.ServiceCollection.onStart(ServiceCollection.java:139)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT] at org.ops4j.pax.swissbox.lifecycle.AbstractLifecycle$Stopped.start(AbstractLifecycle.java:121)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT] at org.ops4j.pax.swissbox.lifecycle.AbstractLifecycle.start(AbstractLifecycle.java:49)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT] at org.ops4j.pax.swissbox.tracker.ReplaceableService.onStart(ReplaceableService.java:146)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT] at org.ops4j.pax.swissbox.lifecycle.AbstractLifecycle$Stopped.start(AbstractLifecycle.java:121)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT] at org.ops4j.pax.swissbox.lifecycle.AbstractLifecycle.start(AbstractLifecycle.java:49)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT] at org.ops4j.pax.web.extender.war.internal.WebAppPublisher.publish(WebAppPublisher.java:81)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT] at org.ops4j.pax.web.extender.war.internal.WebXmlObserver.doPublish(WebXmlObserver.java:266)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT] at org.ops4j.pax.web.extender.war.internal.WebXmlObserver.addingEntries(WebXmlObserver.java:143)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT] at org.ops4j.pax.swissbox.extender.BundleWatcher.register(BundleWatcher.java:186)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT] at org.ops4j.pax.swissbox.extender.BundleWatcher.access$000(BundleWatcher.java:45)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT] at org.ops4j.pax.swissbox.extender.BundleWatcher$1.bundleChanged(BundleWatcher.java:127)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT] at org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:807)[org.apache.felix.framework-3.0.8.jar:] at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:729)[org.apache.felix.framework-3.0.8.jar:] at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:610)[org.apache.felix.framework-3.0.8.jar:] at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:3758)[org.apache.felix.framework-3.0.8.jar:] at org.apache.felix.framework.Felix.startBundle(Felix.java:1780)[org.apache.felix.framework-3.0.8.jar:] at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:922)[org.apache.felix.framework-3.0.8.jar:] at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:1175)[6:org.apache.felix.fileinstall:3.1.7.SNAPSHOT] at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:1153)[6:org.apache.felix.fileinstall:3.1.7.SNAPSHOT] at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:458)[6:org.apache.felix.fileinstall:3.1.7.SNAPSHOT] at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:263)[6:org.apache.felix.fileinstall:3.1.7.SNAPSHOT] Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.lang.LinkageError: loader constraint violation: when resolving field "DATETIME" the class loader (instance of org/apache/felix/framework/ModuleImpl$ModuleClassLoaderJava5) of the referring class, javax/xml/datatype/DatatypeConstants, and the class loader (instance of <bootloader>) for the field's resolved type, javax/xml/namespace/QName, have different Class objects for that type at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:412)[61:camel-web-2.5.0-fuse-00:00] at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)[61:camel-web-2.5.0-fuse-00:00] at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)[61:camel-web-2.5.0-fuse-00:00] at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)[61:camel-web-2.5.0-fuse-00:00] at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)[61:camel-web-2.5.0-fuse-00:00] at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)[61:camel-web-2.5.0-fuse-00:00] at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)[61:camel-web-2.5.0-fuse-00:00] at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:93)[61:camel-web-2.5.0-fuse-00:00] at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)[61:camel-web-2.5.0-fuse-00:00] at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467)[61:camel-web-2.5.0-fuse-00:00] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397)[61:camel-web-2.5.0-fuse-00:00] at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)[61:camel-web-2.5.0-fuse-00:00] at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)[61:camel-web-2.5.0-fuse-00:00] at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)[61:camel-web-2.5.0-fuse-00:00] at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext$1.call(HttpServiceContext.java:168)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT] at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext$1.call(HttpServiceContext.java:164)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT] at org.ops4j.pax.swissbox.core.ContextClassLoaderUtils.doWithClassLoader(ContextClassLoaderUtils.java:60)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT] at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.addEventListener(HttpServiceContext.java:161)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT] at org.ops4j.pax.web.service.jetty.internal.JettyServerImpl.addEventListener(JettyServerImpl.java:235)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT] at org.ops4j.pax.web.service.jetty.internal.ServerControllerImpl$Started.addEventListener(ServerControllerImpl.java:276)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT] at org.ops4j.pax.web.service.jetty.internal.ServerControllerImpl.addEventListener(ServerControllerImpl.java:127)[54:org.ops4j.pax.web.pax-web-jetty:1.0.0.SNAPSHOT] at org.ops4j.pax.web.service.internal.HttpServiceStarted.registerEventListener(HttpServiceStarted.java:286)[53:org.ops4j.pax.web.pax-web-runtime:1.0.0.SNAPSHOT] at org.ops4j.pax.web.service.internal.HttpServiceProxy.registerEventListener(HttpServiceProxy.java:133)[53:org.ops4j.pax.web.pax-web-runtime:1.0.0.SNAPSHOT] at org.ops4j.pax.web.extender.war.internal.RegisterWebAppVisitorWC.visit(RegisterWebAppVisitorWC.java:276)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT] at org.ops4j.pax.web.extender.war.internal.model.WebApp.accept(WebApp.java:561)[57:org.ops4j.pax.web.pax-web-extender-war:1.0.0.SNAPSHOT] ... 34 more Caused by: java.lang.LinkageError: loader constraint violation: when resolving field "DATETIME" the class loader (instance of org/apache/felix/framework/ModuleImpl$ModuleClassLoaderJava5) of the referring class, javax/xml/datatype/DatatypeConstants, and the class loader (instance of <bootloader>) for the field's resolved type, javax/xml/namespace/QName, have different Class objects for that type at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl.<clinit>(RuntimeBuiltinLeafInfoImpl.java:259) at com.sun.xml.bind.v2.model.impl.RuntimeTypeInfoSetImpl.<init>(RuntimeTypeInfoSetImpl.java:61) at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:129) at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:81) at com.sun.xml.bind.v2.model.impl.ModelBuilder.<init>(ModelBuilder.java:152) at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.<init>(RuntimeModelBuilder.java:89) at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:456) at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:302) at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1140) at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:154) at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:121) at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:202) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.6.0_22] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)[:1.6.0_22] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)[:1.6.0_22] at java.lang.reflect.Method.invoke(Method.java:597)[:1.6.0_22] at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:133)[:1.6.0_22] at javax.xml.bind.ContextFinder.find(ContextFinder.java:286)[:1.6.0_22] at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:372)[:1.6.0_22] at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:337)[:1.6.0_22] at org.apache.camel.spring.handler.CamelNamespaceHandler.createJaxbContext(CamelNamespaceHandler.java:187) at org.apache.camel.spring.handler.CamelNamespaceHandler.getJaxbContext(CamelNamespaceHandler.java:174) at org.apache.camel.spring.handler.CamelNamespaceHandler$CamelContextBeanDefinitionParser.doParse(CamelNamespaceHandler.java:257) at org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser.parseInternal(AbstractSingleBeanDefinitionParser.java:85) at org.springframework.beans.factory.xml.AbstractBeanDefinitionParser.parse(AbstractBeanDefinitionParser.java:59) at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:73) at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1335) at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1325) at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:135) at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:93) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390) ... 58 more which looks really bad I'm sure I can find an easy workaround by specifying some additional imports when deploying the war, which means you wouldn't be able to drop it into the deploy folder, but I suppose that's not that big a deal. I'll also try to actually investigate the real issue, but that's way trickier I think.
        Hide
        Achim Nierbeck added a comment - - edited

        I'll check with a pre-release version of Karaf (2.1.99-SNAPSHOT) since pax-web is 1.0.0 now released

        Show
        Achim Nierbeck added a comment - - edited I'll check with a pre-release version of Karaf (2.1.99-SNAPSHOT) since pax-web is 1.0.0 now released
        Hide
        Ben O'Day added a comment -

        I'm looking into this, but am having trouble getting camel-web setup in karaf 2.1.0...here is what i did

        features:addUrl mvn:org.apache.camel.karaf/apache-camel/2.6-SNAPSHOT/xml/features
        features:install war
        features:install camel
        osgi:install -s mvn:org.springframework/spring-web/3.0.5.RELEASE
        osgi:install -s mvn:org.springframework.osgi/spring-osgi-web/1.2.0
        war:mvn:org.apache.camel/camel-web/2.6-SNAPSHOT/war?Webapp-Context=camelweb

        When I go to http://localhost:8181/camelweb, I get a 404 and no errors in the logs. What am I missing?

        thanks

        Show
        Ben O'Day added a comment - I'm looking into this, but am having trouble getting camel-web setup in karaf 2.1.0...here is what i did features:addUrl mvn:org.apache.camel.karaf/apache-camel/2.6-SNAPSHOT/xml/features features:install war features:install camel osgi:install -s mvn:org.springframework/spring-web/3.0.5.RELEASE osgi:install -s mvn:org.springframework.osgi/spring-osgi-web/1.2.0 war:mvn:org.apache.camel/camel-web/2.6-SNAPSHOT/war?Webapp-Context=camelweb When I go to http://localhost:8181/camelweb , I get a 404 and no errors in the logs. What am I missing? thanks

          People

          • Assignee:
            Claus Ibsen
            Reporter:
            Claus Ibsen
          • Votes:
            4 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development