Hello,
I'm trying to create the route below in SM (Fuse ESB version 4.4.0). The
schema I'm trying to validate against is at the top level of my bundle when
deployed. It seems camel can't find the xsd file, but I'm unsure of how to
access it.
I've seen some posts that mention using pax-url, but I'm not sure this is
necessary. Perhaps I'm missing something from the bundle manifest? I'd
like to use relative paths if at all possible.
Thanks,
John
Code...
package com.fusesource.camel;
import org.apache.camel.ValidationException;
import org.apache.camel.builder.RouteBuilder;
public class ValidationRouter extends RouteBuilder {
public void configure() throws Exception {
from("jms:camel.jms.in")
.to("log:showAll?level=info")
.doTry()
.to("validator:hello.xsd")
.to("jms:camel.jms.out")
.doCatch(ValidationException.class)
.to("jms:camel.jms.error")
.end();
}
}
Exception...
org.osgi.service.blueprint.container.ComponentDefinitionException: Unable to
intialize bean camel-4
at
org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:638)[10:org.apache.aries.blueprint:0.3.1]
at
org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:724)[10:org.apache.aries.blueprint:0.3.1]
at
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:64)[10:org.apache.aries.blueprint:0.3.1]
at
org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:219)[10:org.apache.aries.blueprint:0.3.1]
at
org.apache.aries.blueprint.container.BlueprintRepository.createInstance(BlueprintRepository.java:198)[10:org.apache.aries.blueprint:0.3.1]
at
org.apache.aries.blueprint.container.BlueprintRepository.create(BlueprintRepository.java:137)[10:org.apache.aries.blueprint:0.3.1]
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.getComponentInstance(BlueprintContainerImpl.java:718)[10:org.apache.aries.blueprint:0.3.1]
at
org.apache.camel.blueprint.handler.CamelNamespaceHandler$CamelDependenciesFinder.process(CamelNamespaceHandler.java:499)[223:org.apache.camel.camel-blueprint:2.7.1.fuse-00-27]
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.processProcessors(BlueprintContainerImpl.java:495)[10:org.apache.aries.blueprint:0.3.1]
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:314)[10:org.apache.aries.blueprint:0.3.1]
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:227)[10:org.apache.aries.blueprint:0.3.1]
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)[:1.6.0_26]
at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)[:1.6.0_26]
at java.util.concurrent.FutureTask.run(FutureTask.java:138)[:1.6.0_26]
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)[:1.6.0_26]
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)[:1.6.0_26]
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)[:1.6.0_26]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)[:1.6.0_26]
at java.lang.Thread.run(Thread.java:662)[:1.6.0_26]
Caused by: org.apache.camel.FailedToCreateRouteException: Failed to create
route route2 at: >>> DoTry[[To[validator:hello.xsd], To[jms:camel.jms.out],
DoCatch[ [class org.apache.camel.ValidationException] ->
[To[jms:camel.jms.error]]]]] <<< in route: Route[[From[jms:camel.jms.in]] ->
[To[log:showAll?level=info... because of Failed to resolve endpoint:
validator://hello.xsd due to: class path resource [hello.xsd] cannot be
resolved to URL because it does not exist
at
org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:818)
at
org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:165)
at
org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:708)
at
org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:1650)
at
org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1439)
at
org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1338)
at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:67)
at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:54)
at
org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1316)
at
org.apache.camel.blueprint.BlueprintCamelContext.maybeStart(BlueprintCamelContext.java:78)
at
org.apache.camel.blueprint.BlueprintCamelContext.init(BlueprintCamelContext.java:73)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)[:1.6.0_26]
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)[:1.6.0_26]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)[:1.6.0_26]
at java.lang.reflect.Method.invoke(Method.java:597)[:1.6.0_26]
at
org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:226)[10:org.apache.aries.blueprint:0.3.1]
at
org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:824)[10:org.apache.aries.blueprint:0.3.1]
at
org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:636)[10:org.apache.aries.blueprint:0.3.1]
... 18 more
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to
resolve endpoint: validator://hello.xsd due to: class path resource
[hello.xsd] cannot be resolved to URL because it does not exist
at
org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:451)
at
org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:47)
at
org.apache.camel.model.RouteDefinition.resolveEndpoint(RouteDefinition.java:180)
at
org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:110)
at
org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:116)
at
org.apache.camel.model.SendDefinition.resolveEndpoint(SendDefinition.java:61)
at
org.apache.camel.model.SendDefinition.createProcessor(SendDefinition.java:55)
at
org.apache.camel.model.ProcessorDefinition.createOutputsProcessor(ProcessorDefinition.java:391)
at
org.apache.camel.model.TryDefinition.createProcessor(TryDefinition.java:78)
at
org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:433)
at
org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:181)
at
org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:815)
... 35 more
Caused by: java.io.FileNotFoundException: class path resource [hello.xsd]
cannot be resolved to URL because it does not exist
at
org.springframework.core.io.ClassPathResource.getURL(ClassPathResource.java:179)
at
org.apache.camel.component.validator.SpringValidator.createSchemaSource(SpringValidator.java:47)
at
org.apache.camel.processor.validation.ValidatingProcessor.getSchemaSource(ValidatingProcessor.java:129)
at
org.apache.camel.processor.validation.ValidatingProcessor.createSchema(ValidatingProcessor.java:217)
at
org.apache.camel.processor.validation.ValidatingProcessor.loadSchema(ValidatingProcessor.java:102)
at
org.apache.camel.component.validator.ValidatorComponent.createEndpoint(ValidatorComponent.java:45)
at
org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:75)
at
org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:433)
... 46 more
--
View this message in context:
http://servicemix.396122.n5.nabble.com/Failed-to-resolve-endpoint-URL-because-it-does-not-exist-tp4576334p4576334.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.