Skip to navigation

Getting "java.io.IOException: JBIDestination for Endpoint *** already be created" when registering two CXF NMR endpoints with the same wsdl

Updated 2014-01-22T08:49:54+00:00

Issue

When creating two CXF endpoints, consuming from different NMR addresses but using the same wsdl file, the following error is thrown at deployment time:

Exception in thread "SpringOsgiExtenderThread-744" org.apache.camel.RuntimeCamelException: org.apache.cxf.service.factory.ServiceConstructionException
        at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1326)
        at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:120)
        at org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent(CamelContextFactoryBean.java:283)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:97)
        at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:327)
        at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:941)
        at org.springframework.osgi.context.support.AbstractOsgiBundleApplicationContext.finishRefresh(AbstractOsgiBundleApplicationContext.java:235)
        at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:358)
        at org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)
        at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:320)
        at org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:132)
        at java.lang.Thread.run(Thread.java:722)
Caused by: org.apache.cxf.service.factory.ServiceConstructionException
        at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:178)
        at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:211)
        at org.apache.camel.component.cxf.CxfConsumer.<init>(CxfConsumer.java:240)
        at org.apache.camel.component.cxf.CxfEndpoint.createConsumer(CxfEndpoint.java:203)
        at org.apache.camel.impl.EventDrivenConsumerRoute.addServices(EventDrivenConsumerRoute.java:65)
        at org.apache.camel.impl.DefaultRoute.onStartingServices(DefaultRoute.java:80)
        at org.apache.camel.impl.RouteService.warmUp(RouteService.java:133)
        at org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(DefaultCamelContext.java:2000)
        at org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:1928)
        at org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(DefaultCamelContext.java:1716)
        at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1597)
        at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1453)
        at org.apache.camel.spring.SpringCamelContext.doStart(SpringCamelContext.java:179)
        at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
        at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1421)
        at org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:228)
        at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:118)
        ... 10 more
Caused by: java.io.IOException: JBIDestination for Endpoint *** already be created
        at org.apache.servicemix.cxf.transport.nmr.NMRTransportFactory.getDestination(NMRTransportFactory.java:123)
        at org.apache.cxf.binding.soap.SoapTransportFactory.getDestination(SoapTransportFactory.java:135)
        at org.apache.cxf.endpoint.ServerImpl.initDestination(ServerImpl.java:93)
        at org.apache.cxf.endpoint.ServerImpl.<init>(ServerImpl.java:72)
        at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:160)
        ... 26 more

A possible configuration that reproduces this error could be

<?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns="http://www.springframework.org/schema/beans" ...>

    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/transport/nmr/cxf-transport-nmr.xml" />

    <cxf:cxfEndpoint id="nmrEndpoint1" address="nmr:simple1" wsdlURL="wsdl/demo.wsdl" serviceName="s:HelloService" xmlns:s="cxf.apache.org">
        <cxf:properties>
            <entry key="dataFormat" value="PAYLOAD" />
        </cxf:properties>
    </cxf:cxfEndpoint>

    <cxf:cxfEndpoint id="nmrEndpoint2" address="nmr:simple2" wsdlURL="wsdl/demo.wsdl" serviceName="s:HelloService" xmlns:s="cxf.apache.org">
        <cxf:properties>
            <entry key="dataFormat" value="MESSAGE" />
        </cxf:properties>
    </cxf:cxfEndpoint>

    <camelContext xmlns="http://camel.apache.org/schema/spring">
        <route>
            <from uri="cxf:bean:nmrEndpoint1" />
            <to uri="log:after-nmr?level=INFO" />
        </route>
        <route>
            <from uri="cxf:bean:nmrEndpoint2" />
            <to uri="log:after-nmr?level=INFO" />
        </route>
    </camelContext>
</beans>

Environment

  • JBoss Fuse 6.0

Subscriber content preview. For full access to the Red Hat Knowledgebase, please log in.

Not a subscriber? Learn more about the benefits of Red Hat Subscriptions.