Some issue with deploying camunda-quickstart-embedded-spring-rest

Hello everybody,

I’m still learning Camunda by examples, and my current goal is to deploy something that could provide a REST API to AngularJS.

I want to understand the way described in Form Builder (Drag and Drop) + Form Server Validations, but at first, I hope to achieve something much simpler.

  1. I have installed Camunda BPM Tomcat v7.13.0 (on my local machine it is in /opt/camunda-bpm-tomcat-7.13.0)
  2. I’m building the example https://github.com/camunda/camunda-bpm-examples/tree/master/deployment/embedded-spring-rest using Maven (mvn package)
  3. I have a file camunda-quickstart-embedded-spring-rest-1.0-SNAPSHOT.war that I’m trying to deploy on my local server (with no success, unfortunately)
  4. The only addition I have is file src/main/webapp/WEB-INF/classes/logging.properties

with these lines:

org.apache.catalina.core.ContainerBase.[Catalina].level=INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers=java.util.logging.ConsoleHandler

(otherwise, a log file is quite vague)

  1. Then I’m getting that stacktrace in logs/catalina.out:
Log file content
17-Jun-2020 17:49:58.640 INFO [http-nio-8080-exec-91] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/opt/camunda-bpm-tomcat-7.13.0/server/apache-tomcat-9.0.33/webapps/camunda-quickstart-embedded-spring-rest-1.0-SNAPSHOT.war]
17-Jun-2020 17:49:58.781 SEVERE [http-nio-8080-exec-91] org.apache.catalina.startup.HostConfig.deployWAR Error deploying web application archive [/opt/camunda-bpm-tomcat-7.13.0/server/apache-tomcat-9.0.33/webapps/camunda-quickstart-embedded-spring-rest-1.0-SNAPSHOT.war]
	java.lang.IllegalStateException: Error starting child
		at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:720)
		at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690)
		at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705)
		at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:978)
		at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:493)
		at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1642)
		at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
		at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
		at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
		at java.lang.reflect.Method.invoke(Method.java:498)
		at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:289)
		at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
		at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
		at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1590)
		at org.apache.catalina.manager.HTMLManagerServlet.upload(HTMLManagerServlet.java:294)
		at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:212)
		at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
		at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
		at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:211)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
		at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
		at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
		at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
		at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:666)
		at org.apache.catalina.valves.RequestFilterValve.process(RequestFilterValve.java:348)
		at org.apache.catalina.valves.RemoteAddrValve.invoke(RemoteAddrValve.java:53)
		at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
		at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
		at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:688)
		at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
		at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
		at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
		at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
		at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
		at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1594)
		at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
		at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
		at java.lang.Thread.run(Thread.java:748)
	Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/camunda-quickstart-embedded-spring-rest-1.0-SNAPSHOT]]
		at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
		at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:717)
		... 44 more
	Caused by: java.lang.LinkageError: loader constraint violation: when resolving method "org.slf4j.impl.StaticLoggerBinder.getLoggerFactory()Lorg/slf4j/ILoggerFactory;" the class loader (instance of org/apache/catalina/loader/ParallelWebappClassLoader) of the current class, org/slf4j/LoggerFactory, and the class loader (instance of java/net/URLClassLoader) for the method's defining class, org/slf4j/impl/StaticLoggerBinder, have different Class objects for the type org/slf4j/ILoggerFactory used in the signature
		at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:418)
		at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:357)
		at org.camunda.commons.logging.BaseLogger.createLogger(BaseLogger.java:95)
		at org.camunda.bpm.engine.impl.ProcessEngineLogger.<clinit>(ProcessEngineLogger.java:58)
		at org.camunda.bpm.application.impl.ServletProcessApplicationDeployer.<clinit>(ServletProcessApplicationDeployer.java:46)
		at java.lang.Class.forName0(Native Method)
		at java.lang.Class.forName(Class.java:348)
		at org.apache.catalina.startup.WebappServiceLoader.loadServices(WebappServiceLoader.java:203)
		at org.apache.catalina.startup.WebappServiceLoader.load(WebappServiceLoader.java:174)
		at org.apache.catalina.startup.ContextConfig.processServletContainerInitializers(ContextConfig.java:1669)
		at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1137)
		at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:774)
		at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:301)
		at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
		at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5056)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
		... 45 more
17-Jun-2020 17:49:58.782 INFO [http-nio-8080-exec-91] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/opt/camunda-bpm-tomcat-7.13.0/server/apache-tomcat-9.0.33/webapps/camunda-quickstart-embedded-spring-rest-1.0-SNAPSHOT.war] has finished in [142] ms

Maybe somebody knows what the issue is and where to look.

Best regards, Ivan

Hi @zsprot,

From you description, it seems that you are using a pre-packaged Tomcat distribution containing a shared engine. (1)
And you try to deploy an embedded engine on top from the example where you actually need a vanilla Tomcat server. (2)
This is not supported and you have to choose either the pre-packaged distro (it contains the REST API already), or vanilla Tomcat and deploy the example.

Hope that helps.

(1): https://docs.camunda.org/manual/7.13/installation/full/tomcat/pre-packaged/
(2): https://github.com/camunda/camunda-bpm-examples/tree/master/deployment/embedded-spring-rest#how-to-use-it

Best regards,
Yana

Hi Yana,

Yes, you’re absolutely right. I tried to deploy the example to pre-packaged Tomcat. Somehow I missed that information from README - I didn’t read it carefully.

  1. Deploy it to a vanilla Apache Tomcat server, NOT the prepackaged distribution which can be downloaded from http://camunda.org!!

is certainly the line I didn’t follow.

Yes, it works fine on vanilla Apache Tomcat. Now I will try to study what I can achieve with Camunda REST API.

Thank you. Your answer was very helpful.
Have a great day.

Best regards, Ivan