Skip to content

[Bug]: ctakes-web-rest spring version and Docker path issues #84

Description

@ushahid

What happened?

Hi,

I compiled the WAR file for ctakes-web-rest. When running the WAR using tomcat, it kept crashing (full exception below) because it was looking for org/springframework/core/NestedIOException which was not found, I learnt later that this class does not exist in spring version 6.x set in pom.xml but spring.version in the following line is still set to 5.3.20.

<spring.version>5.3.20</spring.version>

I was able to fix it by upgrading it to 6.1.11 although I'm not sure if it is the right course of action. After upgrading the spring version and building the docker image, it is still unable to run because it fails to find the piper file. It seems to be looking for piper files in the home directory of tomcat in docker container but they are not there.

I was able to eventually run the pipeline by manually copying the piper files to the Tomcat home directory but I suspect that is not the correct way. Please help me figure out how it should be done. Any help is greatly appreciated.

P.S I also had to change the docker image to khipu/openjdk17-alpine since the original is no longer available.

Thanks!

Relevant log output (from Tomcat)

	java.lang.NoClassDefFoundError: org/springframework/core/NestedIOException
		at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:323)
		at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:247)
		at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:311)
		at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:112)
		at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:746)
		at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564)
		at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:706)
		at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:672)
		at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:720)
		at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:595)
		at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:537)
		at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:169)
		at jakarta.servlet.GenericServlet.init(GenericServlet.java:143)
		at jakarta.servlet.http.HttpServlet.init(HttpServlet.java:121)
		at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:837)
		at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:794)
		at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:698)
		at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4172)
		at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4458)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
		at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:599)
		at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:571)
		at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:654)
		at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:969)
		at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1911)
		at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:545)
		at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:328)
		at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
		at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:125)
		at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:771)
		at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:423)
		at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1629)
		at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:303)
		at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:109)
		at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:385)
		at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:332)
		at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:776)
		at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:772)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
		at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1203)
		at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1193)
		at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:328)
		at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
		at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:149)
		at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:749)
		at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:203)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
		at org.apache.catalina.core.StandardService.startInternal(StandardService.java:415)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
		at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:874)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
		at org.apache.catalina.startup.Catalina.start(Catalina.java:757)
		at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
		at java.base/java.lang.reflect.Method.invoke(Method.java:565)
		at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
		at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)
	Caused by: java.lang.ClassNotFoundException: org.springframework.core.NestedIOException
		at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1332)
		at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1144)
		... 56 more

cTAKES.error.log contents

Version

7.0.0

What operating system are you seeing the problem on?

Fedora 44, Docker Image khipu/openjdk17-alpine

Contact Details

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions