[
https://issues.apache.org/jira/browse/CAMEL-17618?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17901578#comment-17901578
]
Gordon Freeman commented on CAMEL-17618:
----------------------------------------
It's as if the getCamelContext().getEndpoint method is expected to return null,
but it seems to always throw a NoSuchEndpointException.
I have the following spring configuration:
{code:java}
<camel-cxf-jaxws:cxfEndpoint id="myCxfEndpoint" address="/getMyCxfEndpoint"
serviceClass="org.example.MyTestPortType">
</camel-cxf-jaxws:cxfEndpoint>
<route id="getMyCxfEndpointService">
<from uri="ref:myCxfEndpoint" />
<to uri="bean:myProcessor?method=processMyCxfEndpoint"/>
</route>
{code}
And it no longer works on version 4.8.1.
{code:java}
Context initialization failed
org.apache.camel.FailedToCreateRouteException: Failed to create route
getMyCxfEndpointService:
Route(getMyCxfEndpointService)[From[ref:myCxfEndpoint... because of No endpoint
could be found for: /getMyCxfEndpoint, please check your classpath contains the
needed Camel component jar.
at
org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:92)
at
org.apache.camel.impl.DefaultModelReifierFactory.createRoute(DefaultModelReifierFactory.java:49)
at
org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:726)
at
org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:592)
at
org.apache.camel.impl.engine.AbstractCamelContext.doInit(AbstractCamelContext.java:2433)
at
org.apache.camel.support.service.BaseService.init(BaseService.java:85)
at
org.apache.camel.impl.engine.AbstractCamelContext.init(AbstractCamelContext.java:2068)
at
org.apache.camel.support.service.BaseService.start(BaseService.java:115)
at
org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2087)
at
org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:211)
at
org.apache.camel.spring.SpringCamelContext.start(SpringCamelContext.java:121)
at
org.apache.camel.spring.xml.CamelContextFactoryBean.start(CamelContextFactoryBean.java:430)
at
org.apache.camel.spring.xml.CamelContextFactoryBean.onApplicationEvent(CamelContextFactoryBean.java:485)
at
org.apache.camel.spring.xml.CamelContextFactoryBean.onApplicationEvent(CamelContextFactoryBean.java:100)
at
org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:185)
at
org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:178)
at
org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:156)
at
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:454)
at
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:387)
at
org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:1009)
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:630)
at
org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:394)
at
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:274)
at
org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:126)
at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4008)
at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4436)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:599)
at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:571)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:654)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:969)
at
org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1911)
at
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at
java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: org.apache.camel.NoSuchEndpointException: No endpoint could be found
for: /getMyCxfEndpoint, please check your classpath contains the needed Camel
component jar.
at
org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:793)
at
org.apache.camel.impl.engine.AbstractCamelContext.getEndpoint(AbstractCamelContext.java:739)
at
org.apache.camel.component.ref.RefEndpoint.doInit(RefEndpoint.java:85)
at
org.apache.camel.support.service.BaseService.init(BaseService.java:85)
at
org.apache.camel.support.service.ServiceHelper.initService(ServiceHelper.java:84)
at
org.apache.camel.impl.engine.InternalServiceManager.doAddService(InternalServiceManager.java:118)
at
org.apache.camel.impl.engine.AbstractCamelContext.addService(AbstractCamelContext.java:1364)
at
org.apache.camel.impl.engine.AbstractCamelContext.addService(AbstractCamelContext.java:1359)
at
org.apache.camel.impl.engine.AbstractCamelContext.addService(AbstractCamelContext.java:1354)
at
org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:823)
at
org.apache.camel.impl.engine.AbstractCamelContext.getEndpoint(AbstractCamelContext.java:739)
at
org.apache.camel.support.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:66)
at
org.apache.camel.reifier.AbstractReifier.resolveEndpoint(AbstractReifier.java:199)
at
org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:106)
at
org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:86)
... 38 more
{code}
> camel-ref: only add the endpoint into camelContext when not exist
> -----------------------------------------------------------------
>
> Key: CAMEL-17618
> URL: https://issues.apache.org/jira/browse/CAMEL-17618
> Project: Camel
> Issue Type: Bug
> Components: camel-core
> Affects Versions: 3.15.0
> Reporter: Freeman Yue Fang
> Assignee: Freeman Yue Fang
> Priority: Minor
> Fix For: 3.11.6, 3.14.2, 3.16.0
>
>
> Currently camel-ref endpoint always adds the underlying endpoint like
> getCamelContext().addEndpoint(getEndpoint().getEndpointUri(), endpoint);
> We should check if it exists or not firstly like
> if (getCamelContext().getEndpoint(getEndpoint().getEndpointUri()) ==
> null) {
> getCamelContext().addEndpoint(getEndpoint().getEndpointUri(),
> endpoint);
> }
> Because if we re-add the same endpoint, this endpoint actually will be stopped
--
This message was sent by Atlassian Jira
(v8.20.10#820010)