Quartz binding name containing an underscore character causes "Trigger name cannot be null or empty" exception during deployment of SwitchYard application

Solution Verified - Updated -

Issue

  • The configured cron expression is written using SwitchYard's Quartz binding. However the interesting thing is, it causes the following exception while deploying the SwitchYard application in FSW 6.0.0 container if the Quartz binding name contains an underscore character (like SY_Quartz_Binding) .
07:14:11,448 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC000001: Failed to start service jboss.deployment.unit."SY_Quartz_Binding.jar".SwitchYardService: org.jboss.msc.service.StartException in service jboss.deployment.unit."SY_Quartz_Binding.jar".SwitchYardService: org.switchyard.SwitchYardException: org.apache.camel.FailedToCreateRouteException: Failed to create route TestModel/ErrorSYQuartzService@SY_Quartz_Binding#1626837044: Route[[From[quartz://SY_Quartz_Binding?cron=0/10%20*%20*%20*%20*%... because of Failed to resolve endpoint: quartz://SY_Quartz_Binding?cron=0%2F10+*+*+*+*+%3F due to: Trigger name cannot be null or empty.
        at org.switchyard.as7.extension.services.SwitchYardService.start(SwitchYardService.java:80)
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) [rt.jar:1.6.0_85]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) [rt.jar:1.6.0_85]
        at java.lang.Thread.run(Thread.java:682) [rt.jar:1.6.0_85]
Caused by: org.switchyard.SwitchYardException: org.apache.camel.FailedToCreateRouteException: Failed to create route TestModel/ErrorSYQuartzService@SY_Quartz_Binding#1626837044: Route[[From[quartz://SY_Quartz_Binding?cron=0/10%20*%20*%20*%20*%... because of Failed to resolve endpoint: quartz://SY_Quartz_Binding?cron=0%2F10+*+*+*+*+%3F due to: Trigger name cannot be null or empty.
        at org.switchyard.component.camel.common.handler.InboundHandler.<init>(InboundHandler.java:69)
        at org.switchyard.component.camel.common.deploy.BaseBindingActivator.createInboundHandler(BaseBindingActivator.java:51)
        at org.switchyard.component.camel.common.deploy.BaseBindingActivator.activateBinding(BaseBindingActivator.java:43)
        at org.switchyard.deploy.internal.Deployment.deployServiceBindings(Deployment.java:618)
        at org.switchyard.deploy.internal.Deployment.start(Deployment.java:145)
        at org.switchyard.as7.extension.deployment.SwitchYardDeployment.start(SwitchYardDeployment.java:101)
        at org.switchyard.as7.extension.services.SwitchYardService.start(SwitchYardService.java:73)
        ... 5 more
Caused by: org.apache.camel.FailedToCreateRouteException: Failed to create route TestModel/ErrorSYQuartzService@SY_Quartz_Binding#1626837044: Route[[From[quartz://SY_Quartz_Binding?cron=0/10%20*%20*%20*%20*%... because of Failed to resolve endpoint: quartz://SY_Quartz_Binding?cron=0%2F10+*+*+*+*+%3F due to: Trigger name cannot be null or empty.
        at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:177)
        at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:731)
        at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:1803)
        at org.apache.camel.impl.DefaultCamelContext.addRouteDefinitions(DefaultCamelContext.java:675)
        at org.apache.camel.impl.DefaultCamelContext.addRouteDefinition(DefaultCamelContext.java:680)
        at org.switchyard.component.camel.common.handler.InboundHandler.<init>(InboundHandler.java:67)
        ... 11 more
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: quartz://SY_Quartz_Binding?cron=0%2F10+*+*+*+*+%3F due to: Trigger name cannot be null or empty.
        at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:488)
        at org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:61)
        at org.apache.camel.model.RouteDefinition.resolveEndpoint(RouteDefinition.java:187)
        at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:108)
        at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:114)
        at org.apache.camel.model.FromDefinition.resolveEndpoint(FromDefinition.java:72)
        at org.apache.camel.impl.DefaultRouteContext.getEndpoint(DefaultRouteContext.java:90)
        at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:857)
        at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:172)
        ... 16 more
Caused by: java.lang.IllegalArgumentException: Trigger name cannot be null or empty.
        at org.quartz.Trigger.setName(Trigger.java:366)
        at org.apache.camel.component.quartz.QuartzComponent.createEndpoint(QuartzComponent.java:159)
        at org.apache.camel.component.quartz.QuartzComponent.createEndpoint(QuartzComponent.java:54)
        at org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:91)
        at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:469)
        ... 24 more
  • Is this a known issue? Is there a workaround for it?

Environment

  • Red Hat JBoss Fuse Service Works (FSW)
    • 6.0.0

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content