camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From TheWinch <vincent.girardrey...@thalesgroup.com>
Subject Classpath problem with camel-cxf and OSGi
Date Wed, 02 Dec 2009 17:08:21 GMT

Hi,

I'm trying to deploy dynamically endpoints using camel-cxf. I have an
example that works perfectly well in camel 2.0.0 standalone, and that does
not work in camel 2.0.0 deployed on SMX4 (code provided below).
I have read on forums that this might come from class-path issues. However I
can't see where it comes from. Could someone help ?

To deploy the endpoint I do:

// in Test:
public void doTest() { builder.deployEndpoint(); }
// in DynamicBuilder:
public void deployEndpoint() {
        CamelContext context = getContext();
        
        final String endpointUri = "cxf:" + "http://localhost:9000/service"
+ "?serviceClass=" + SERVICE_CLASS;        
        def = from( endpointUri );
        def.process( new CallbackProcessor() );
        context.addRouteDefinitions( Arrays.asList( def ) );
        context.startRoute( def );
}

This works OK in camel standalone, and in SMX4 this generates the following
error:

org.apache.camel.RuntimeCamelException: java.lang.RuntimeException: Could
not find destination factory for transport http://schemas.xmlsoap.org/soap/h
ttp
        at
org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1011)
        at
org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:121)
        at
org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent(CamelContextFactoryBean.java:469)
        at
org.springframework.context.event.SimpleApplicationEventMulticaster$1.run(SimpleApplicationEventMulticaster.java:78)
        at
org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49)
        at
org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:76)
        at
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:274)
        at
org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:736)
        at
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.finishRefresh(AbstractDelegatedExecutionApplicationCo
ntext.java:380)
        at
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.ja
va:346)
        at
org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)
        at
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplication
Context.java:308)
        at
org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(Dependen
cyWaiterApplicationContextExecutor.java:138)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.RuntimeException: Could not find destination factory
for transport http://schemas.xmlsoap.org/soap/http
        at
org.apache.cxf.binding.soap.SoapTransportFactory.getDestination(SoapTransportFactory.java:76)
        at
org.apache.cxf.endpoint.ServerImpl.initDestination(ServerImpl.java:90)
        at org.apache.cxf.endpoint.ServerImpl.<init>(ServerImpl.java:69)
        at
org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:118)
        at
org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:167)
        at
org.apache.camel.component.cxf.CxfConsumer.<init>(CxfConsumer.java:108)
        at
org.apache.camel.component.cxf.CxfEndpoint.createConsumer(CxfEndpoint.java:97)
        at
org.apache.camel.impl.EventDrivenConsumerRoute.addServices(EventDrivenConsumerRoute.java:57)
        at
org.apache.camel.impl.DefaultRoute.getServicesForRoute(DefaultRoute.java:81)
        at org.apache.camel.impl.RouteService.doStart(RouteService.java:77)
        at
org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:52)
        at
org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:825)
        at
org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:99)
        at
org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:119)
        ... 12 more

My camel context:


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:cxf="http://camel.apache.org/schema/cxf"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://camel.apache.org/schema/cxf
http://camel.apache.org/schema/cxf/camel-cxf.xsd
       http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd
    ">
   <import resource="classpath:META-INF/cxf/cxf.xml"/>
   <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
   <import resource="classpath:META-INF/cxf/cxf-extension-http-jetty.xml" />

    <bean id="builder" class="test.DynamicRouteBuilder"/>
   <camelContext id="test_context"
xmlns="http://camel.apache.org/schema/spring">
       <routeBuilder  ref="builder"/>
   </camelContext>
   
   <bean id="test" class="test.Test" init-method="doTest"
destroy-method="tearDown">
   	<property name="builder" ref="builder"/>
   </bean>
</beans>

And my import directives:
                        javax.jws,
                        javax.wsdl,
                        javax.xml.bind,
                        javax.xml.bind.annotation,
                        javax.xml.namespace,
                        javax.xml.soap,
                        javax.xml.ws,
                        META-INF.cxf,
                        META-INF.cxf.osgi,
                        
			org.apache.cxf,
			org.apache.cxf.binding,
			org.apache.cxf.binding.soap,
			org.apache.cxf.binding.soap.interceptor,
			org.apache.cxf.binding.soap.model,
			org.apache.cxf.binding.xml,
			org.apache.cxf.bindings.xformat,
			org.apache.cxf.common.classloader,
			org.apache.cxf.common.i18n,
			org.apache.cxf.common.logging,
			org.apache.cxf.common.util,
			org.apache.cxf.configuration,
			org.apache.cxf.configuration.security,
			org.apache.cxf.configuration.spring,
			org.apache.cxf.databinding,
				org.apache.cxf.endpoint,
				org.apache.cxf.feature,
				org.apache.cxf.frontend,
				org.apache.cxf.headers,
				org.apache.cxf.helpers,
				org.apache.cxf.interceptor,
				org.apache.cxf.io,
				org.apache.cxf.jaxrs,
				org.apache.cxf.jaxrs.client,
				org.apache.cxf.jaxrs.model,
				org.apache.cxf.jaxrs.utils,
				org.apache.cxf.jaxws,
				org.apache.cxf.jaxws.context,
				org.apache.cxf.message,
				org.apache.cxf.phase,
				org.apache.cxf.service,
				org.apache.cxf.service.factory,
				org.apache.cxf.service.invoker,
				org.apache.cxf.service.model,
				org.apache.cxf.staxutils,
				org.apache.cxf.ws.addressing,
				org.apache.cxf.wsdl,
				org.apache.cxf.wsdl11,
				org.apache.cxf.transport,
				org.apache.cxf.transport.http,
				org.apache.cxf.transport.http_jetty,
				org.apache.cxf.transport.http.policy,
                        
                        org.apache.cxf.bus,
                        org.apache.cxf.bus.spring,
                        org.apache.cxf.bus.resource,
                        org.apache.cxf.resource,
                        org.springframework.beans.factory.config,
                        org.apache.servicemix.common.osgi,
                        *


-- 
View this message in context: http://old.nabble.com/Classpath-problem-with-camel-cxf-and-OSGi-tp26612544p26612544.html
Sent from the Camel - Users mailing list archive at Nabble.com.


Mime
View raw message