We are migrating our application from Camunda 7.21 to 7.22 and from Java 8 to
Java21 and Tomcat 10. On our shared Camunda server we have a deployment of a bpmn that uses
several JavaDelegates to run different DMNs. We have switched the application to "JakartaServletProcessApplication"
to come around this "javax/jakarta" problem but when we are executing "javaDelegate.getProcessEngine().getDecisionService()"
we are retrieving a DecisionService which uses "javax.servlet.ServletContextListener"
java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:524)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:427)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:421)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:714)
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:420)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:593)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:534)
at java.base/java.lang.Class.forName(Class.java:513)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1316)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1144)
at org.camunda.bpm.engine.spring.application.SpringProcessApplicationElResolver.getElResolver(SpringProcessApplicationElResolver.java:65)
at org.camunda.bpm.application.impl.DefaultElResolverLookup.lookupResolver(DefaultElResolverLookup.java:59)
at org.camunda.bpm.application.AbstractProcessApplication.initProcessApplicationElResolver(AbstractProcessApplication.java:194)
at org.camunda.bpm.application.AbstractProcessApplication.getElResolver(AbstractProcessApplication.java:163)
at org.camunda.bpm.engine.impl.el.ProcessApplicationElResolverDelegate.getElResolverDelegate(ProcessApplicationElResolverDelegate.java:52)
at org.camunda.bpm.engine.impl.el.AbstractElResolverDelegate.invoke(AbstractElResolverDelegate.java:93)
at org.camunda.bpm.impl.juel.jakarta.el.CompositeELResolver.invoke(CompositeELResolver.java:198)
at org.camunda.bpm.impl.juel.AstMethod.invoke(AstMethod.java:91)
at org.camunda.bpm.impl.juel.AstMethod.eval(AstMethod.java:75)
at org.camunda.bpm.impl.juel.AstMethod.invoke(AstMethod.java:79)
at org.camunda.bpm.impl.juel.AstMethod.eval(AstMethod.java:75)
at org.camunda.bpm.impl.juel.AstChoice.eval(AstChoice.java:33)
at org.camunda.bpm.impl.juel.AstEval.eval(AstEval.java:50)
at org.camunda.bpm.impl.juel.AstNode.getValue(AstNode.java:26)
at org.camunda.bpm.impl.juel.TreeValueExpression.getValue(TreeValueExpression.java:112)
at org.camunda.bpm.engine.impl.dmn.el.ProcessEngineJuelElExpression.getValue(ProcessEngineJuelElExpression.java:48)
at org.camunda.bpm.dmn.engine.impl.evaluation.ExpressionEvaluationHandler.evaluateElExpression(ExpressionEvaluationHandler.java:121)
at org.camunda.bpm.dmn.engine.impl.evaluation.ExpressionEvaluationHandler.evaluateExpression(ExpressionEvaluationHandler.java:62)
at org.camunda.bpm.dmn.engine.impl.evaluation.DecisionTableEvaluationHandler.evaluateInputEntry(DecisionTableEvaluationHandler.java:208)
at org.camunda.bpm.dmn.engine.impl.evaluation.DecisionTableEvaluationHandler.isConditionApplicable(DecisionTableEvaluationHandler.java:148)
at org.camunda.bpm.dmn.engine.impl.evaluation.DecisionTableEvaluationHandler.evaluateInputForAvailableRules(DecisionTableEvaluationHandler.java:140)
at org.camunda.bpm.dmn.engine.impl.evaluation.DecisionTableEvaluationHandler.evaluateDecisionTable(DecisionTableEvaluationHandler.java:114)
at org.camunda.bpm.dmn.engine.impl.evaluation.DecisionTableEvaluationHandler.evaluate(DecisionTableEvaluationHandler.java:84)
at org.camunda.bpm.dmn.engine.impl.DefaultDmnDecisionContext.evaluateDecision(DefaultDmnDecisionContext.java:85)
at org.camunda.bpm.dmn.engine.impl.DefaultDmnEngine.evaluateDecision(DefaultDmnEngine.java:167)
at org.camunda.bpm.engine.impl.dmn.invocation.DecisionInvocation.invoke(DecisionInvocation.java:57)
at org.camunda.bpm.engine.impl.delegate.DelegateInvocation.proceed(DelegateInvocation.java:58)
at org.camunda.bpm.engine.impl.delegate.DefaultDelegateInterceptor.handleInvocationInContext(DefaultDelegateInterceptor.java:92)
at org.camunda.bpm.engine.impl.delegate.DefaultDelegateInterceptor.handleInvocation(DefaultDelegateInterceptor.java:63)
at org.camunda.bpm.engine.impl.util.DecisionEvaluationUtil.invoke(DecisionEvaluationUtil.java:106)
at org.camunda.bpm.engine.impl.util.DecisionEvaluationUtil.evaluateDecision(DecisionEvaluationUtil.java:93)
at org.camunda.bpm.engine.impl.util.DecisionEvaluationUtil.evaluateDecisionTable(DecisionEvaluationUtil.java:99)
at org.camunda.bpm.engine.impl.dmn.cmd.EvaluateDecisionTableCmd.doEvaluateDecision(EvaluateDecisionTableCmd.java:89)
at org.camunda.bpm.engine.impl.dmn.cmd.EvaluateDecisionTableCmd.execute(EvaluateDecisionTableCmd.java:76)
at org.camunda.bpm.engine.impl.dmn.cmd.EvaluateDecisionTableCmd.execute(EvaluateDecisionTableCmd.java:46)
at org.camunda.bpm.engine.impl.interceptor.CommandExecutorImpl.execute(CommandExecutorImpl.java:28)
at org.camunda.bpm.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:111)
at org.camunda.bpm.engine.impl.interceptor.ProcessApplicationContextInterceptor.execute(ProcessApplicationContextInterceptor.java:70)
at org.camunda.bpm.engine.impl.interceptor.CommandCounterInterceptor.execute(CommandCounterInterceptor.java:34)
at org.camunda.bpm.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:33)
at org.camunda.bpm.engine.impl.interceptor.ExceptionCodeInterceptor.execute(ExceptionCodeInterceptor.java:55)
at org.camunda.bpm.engine.impl.dmn.DecisionTableEvaluationBuilderImpl.evaluate(DecisionTableEvaluationBuilderImpl.java:86)
at org.camunda.bpm.engine.impl.DecisionServiceImpl.evaluateDecisionTableById(DecisionServiceImpl.java:36)
Does anyone know what is going wrong and how I can fix it?
Regards
Edmund