Deployment of war containing spring boot starter rest fails

Hi guys. I’ve been running camunda 3 years on production and now I wanted to add native REST api using camunda-bpm-spring-boot-starter-rest dependency. It works fine when I run it as spring boot app but unfortunately I must operate the application on WebLogic 12c application server on PROD. The whole app has been (using gradle) packaged as war and deployed on WLS and it’s been working fine. But after adding camunda-bpm-spring-boot-starter-rest dependency deployment fails with following problems:

weblogic.application.ModuleException: org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
[[FATAL] Both resources, resource Builder{names=[[unnamed], [unnamed]], path=’/execution’, methodBuilders=[], childResourceBuilders=[], childResources=[], resourceMethods=[], subResourceLocator=httpMethod=null, consumedTypes=[], producedTypes=[], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class org.camunda.bpm.engine.rest.impl.DefaultProcessEngineRestServiceImpl, handlerConstructors=[org.glassfish.jersey.server.model.HandlerConstructor@4c3592a4]}, definitionMethod=public org.camunda.bpm.engine.rest.ExecutionRestService org.camunda.bpm.engine.rest.impl.DefaultProcessEngineRestServiceImpl.getExecutionService(), parameters=[], responseType=interface org.camunda.bpm.engine.rest.ExecutionRestService}, nameBindings=[], handlerClasses=[class org.camunda.bpm.engine.rest.impl.DefaultProcessEngineRestServiceImpl], handlerInstances=[], parentResource=, extended=false} and resource Resource{"/execution", 0 child resources, 0 resource methods, 1 sub-resource locator, 1 method handler classes, 0 method handler instances}, contains sub resource locators on the same path /execution.; source=‘org.glassfish.jersey.server.model.Resource$Builder$1@7cb27077’, [FATAL] Both resources, resource Builder{names=[[unnamed], [unnamed]], path=’/job-definition’, methodBuilders=[], childResourceBuilders=[], childResources=[], resourceMethods=[], subResourceLocator=httpMethod=null, consumedTypes=[], producedTypes=[], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class org.camunda.bpm.engine.rest.impl.DefaultProcessEngineRestServiceImpl, handlerConstructors=[org.glassfish.jersey.server.model.HandlerConstructor@622b841d]}, definitionMethod=public org.camunda.bpm.engine.rest.JobDefinitionRestService org.camunda.bpm.engine.rest.impl.DefaultProcessEngineRestServiceImpl.getJobDefinitionRestService(), parameters=[], responseType=interface org.camunda.bpm.engine.rest.JobDefinitionRestService}, nameBindings=[], handlerClasses=[class org.camunda.bpm.engine.rest.impl.DefaultProcessEngineRestServiceImpl], handlerInstances=[], parentResource=, extended=false} and resource Resource{"/job-definition", 0 child resources, 0 resource methods, 1 sub-resource locator, 1 method handler classes, 0 method handler instances}, contains sub resource locators on the same path /job-definition.; source=‘org.glassfish.jersey.server.model.Resource$Builder$1@7938d08’, [FATAL] Both resources, resource Builder{names=[[unnamed], [unnamed]], path=’/job’, methodBuilders=[], childResourceBuilders=[], childResources=[], resourceMethods=[], subResourceLocator=httpMethod=null, consumedTypes=[], producedTypes=[], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class org.camunda.bpm.engine.rest.impl.DefaultProcessEngineRestServiceImpl, handlerConstructors=[org.glassfish.jersey.server.model.HandlerConstructor@70a4ef0d]}, definitionMethod=public org.camunda.bpm.engine.rest.JobRestService org.camunda.bpm.engine.rest.impl.DefaultProcessEngineRestServiceImpl.getJobRestService(), parameters=[], responseType=interface org.camunda.bpm.engine.rest.JobRestService}, nameBindings=[], handlerClasses=[class org.camunda.bpm.engine.rest.impl.DefaultProcessEngineRestServiceImpl], handlerInstances=[], parentResource=, extended=false} and resource Resource{"/job", 0 child resources, 0 resource methods, 1 sub-resource locator, 1 method handler classes, 0 method handler instances}, contains sub resource locators on the same path /job.; source=‘org.glassfish.jersey.server.model.Resource$Builder$1@915a3ed’, [FATAL] Both resources, resource Builder{names=[[unnamed], [unnamed]], path=’/group’, methodBuilders=[], childResourceBuilders=[], childResources=[], resourceMethods=[], subResourceLocator=httpMethod=null, consumedTypes=[], producedTypes=[], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class org.camunda.bpm.engine.rest.impl.DefaultProcessEngineRestServiceImpl, handlerConstructors=[org.glassfish.jersey.server.model.HandlerConstructor@5ecaa4f2]}, definitionMethod=public org.camunda.bpm.engine.rest.GroupRestService org.camunda.bpm.engine.rest.impl.DefaultProcessEngineRestServiceImpl.getGroupRestService(), parameters=[], responseType=interface org.camunda.bpm.engine.rest.GroupRestService}, nameBindings=[], handlerClasses=[class org.camunda.bpm.engine.rest.impl.DefaultProcessEngineRestServiceImpl], handlerInstances=[], parentResource=, extended=false} and resource Resource{"/group", 0 child resources, 0 resource methods, 1 sub-resource locator, 1 method handler classes, 0 method handler instances}, contains sub resource locators on the same path /group.; source=‘org.glassfish.jersey.server.model.Resource$Builder$1@4be31f84’, [FATAL] Both resources, resource Builder{names=[[unnamed], [unnamed]], path=’/user’, methodBuilders=[], childResourceBuilders=[], childResources=[], resourceMethods=[], subResourceLocator=httpMethod=null, consumedTypes=[], producedTypes=[], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class org.camunda.bpm.engine.rest.impl.DefaultProcessEngineRestServiceImpl, handlerConstructors=[org.glassfish.jersey.server.model.HandlerConstructor@3e8aad3d]}, definitionMethod=public org.camunda.bpm.engine.rest.UserRestService org.camunda.bpm.engine.rest.impl.DefaultProcessEngineRestServiceImpl.getUserRestService(), parameters=[], responseType=interface org.camunda.bpm.engine.rest.UserRestService}, nameBindings=[], handlerClasses=[class org.camunda.bpm.engine.rest.impl.DefaultProcessEngineRestServiceImpl], handlerInstances=[], parentResource=, extended=false} and resource Resource{"/user", 0 child resources, 0 resource methods, 1 sub-resource locator, 1 method handler classes, 0 method handler instances}, contains sub resource locators on the same path /user.; source=‘org.glassfish.jersey.server.model.Resource$Builder$1@24bdef47’, …

This problem was closed as nofix here: https://github.com/camunda/camunda-bpm-spring-boot-starter/issues/193

But I really need to run it this way and proposed hack from github doesn’t work for me. Can you help me?

My camunda setup is:

  • camunda-bpm-spring-boot-starter (‘3.2.0’)
  • camunda-bpm-spring-boot-starter-rest (‘3.2.0’)
  • Weblogic 12c

https://docs.camunda.org/manual/latest/introduction/supported-environments/
Oracle WebLogic Server 12c (12R2) (Enterprise Edition only) and Deployment scenarios).