Camunda webapp cannot integrate with Eureka

Hi,

I am trying to integrate Camunda (7.20.0) with Spring Boot (3.1.1) and Eureka Netflix Discovery service (Spring cloud version is 2022.0.4). The application is starting but I cannot access the Camunda cockpit.

It happened like this when I started the application for the first time, an exception “Field optionalArgs in org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration required a bean of type ‘com.netflix.discovery.AbstractDiscoveryClientOptionalArgs’ that could not be found.” is throw.

According to the source code of org.springframework.cloud.netflix.eureka.config.DiscoveryClientOptionalArgsConfiguration#restTemplateDiscoveryClientOptionalArgs, the jersey-client cannot exist in the classpath. so, I excluded it from the Maven dependency to fix this error.

    <dependency>
        <groupId>org.camunda.bpm.springboot</groupId>
        <artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
        <exclusions>
            <exclusion>
                <artifactId>jersey-client</artifactId>
                <groupId>org.glassfish.jersey.core</groupId>
            </exclusion>
        </exclusions>
    </dependency>

After all is done, the application can be started as expected. A new error occurred when I accessed the Camunda cockpit. The root cause is class “org/glassfish/jersey/client/ClientConfig” does not exist in the classpath cause I have excluded it from the Maven dependency to fix the previous error.

{
“msg”: “Servlet.init() for servlet [Cockpit Api] threw exception”,
“level”: “ERROR”,
“written_ts”: “1704858806473249000”,
“logger”: “org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]”,
“exception_type”: “java.lang.NoClassDefFoundError”,
“written_at”: “2024-01-10T03:53:26.472Z”,
“thread”: “http-nio-9033-exec-3”,
“type”: “log”,
“exception_message”: “org/glassfish/jersey/client/ClientConfig”,
“stacktrace”: [
“java.lang.NoClassDefFoundError: org/glassfish/jersey/client/ClientConfig”,
“\tat org.glassfish.jersey.server.internal.inject.WebTargetValueParamProvider$BindingModel.(WebTargetValueParamProvider.java:131)”,
“\tat org.glassfish.jersey.server.internal.inject.WebTargetValueParamProvider$BindingModel.(WebTargetValueParamProvider.java:77)”,
“\tat org.glassfish.jersey.server.internal.inject.WebTargetValueParamProvider.(WebTargetValueParamProvider.java:263)”,
“\tat org.glassfish.jersey.server.internal.inject.ValueParamProviderConfigurator.init(ValueParamProviderConfigurator.java:108)”,
“\tat org.glassfish.jersey.server.ApplicationHandler.lambda$initialize$0(ApplicationHandler.java:307)”,
“\tat java.base/java.util.Arrays$ArrayList.forEach(Arrays.java:4204)”,
“\tat org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:307)”,
“\tat org.glassfish.jersey.server.ApplicationHandler.(ApplicationHandler.java:274)”,
“\tat org.glassfish.jersey.servlet.WebComponent.(WebComponent.java:311)”,
“\tat org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:154)”,
“\tat org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:338)”,
“\tat jakarta.servlet.GenericServlet.init(GenericServlet.java:143)”,
“\tat jakarta.servlet.http.HttpServlet.init(HttpServlet.java:121)”,
“\tat org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:944)”,
“\tat org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:901)”,
“\tat org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:649)”,
“\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:114)”,
“\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)”,
“\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)”,
“\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)”,
“\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)”,
“\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)”,
“\tat org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:738)”,
“\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341)”,
“\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391)”,
“\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)”,
“\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:894)”,
“\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741)”,
“\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)”,
“\tat org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)”,
“\tat org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)”,
“\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)”,
“\tat java.base/java.lang.Thread.run(Thread.java:840)”,
“Caused by: java.lang.ClassNotFoundException: org.glassfish.jersey.client.ClientConfig”,
“\tat java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)”,
“\tat java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)”,
“\tat java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)”,
“\t… 33 more”
]
}

Can anybody help with this?

Application fails to start due to missing AbstractDiscoveryClientOptionalArgs bean · Issue #4185 · spring-cloud/spring-cloud-netflix (github.com)

Glad that you found the solution.
I am interested in purpose of springcloud. What problem you are trying to address? Are you implementing some kind of proxy in you springboot camunda project?
I have a use case where few request will originate from camunda UI forms and they will be proxied instead of being served from camunda .

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.