【发布时间】:2020-12-25 21:21:30
【问题描述】:
我正在关注this tuturial,以使我当前的检票口项目与 Redis 会话管理一起使用。 但是,我不能让我的 context.xml 工作。 我正在从两个文件 CatalinaRedisSessionStore 和 RedisCache 制作一个 JAR,然后我将该 jar 放入 tomcat 的 lib 文件夹中。
启动我的应用程序后,我收到此错误:
SEVERE [main] org.apache.tomcat.util.digester.Digester.startElement Begin event threw exception
java.lang.ClassNotFoundException: com.company.web.wicket.redis.CatalinaRedisSessionStore
我的 context.xml 看起来像这样:
<?xml version="1.0" ?>
<Context>
<Manager className="org.apache.catalina.session.PersistentManager"
maxIdleBackup="1"
minIdleSwap="0"
maxIdleSwap="0"
processExpiresFrequency="1"
saveOnRestart='true'>
<Store className="com.company.web.wicket.redis.CatalinaRedisSessionStore"/>
</Manager>
</Context>
我在 docker 容器中运行我的应用程序,使用 azul/zulu-openjdk-alpine:11
当我检查我的 docker 容器时,jar 文件位于 tomcat 主页的 lib 文件夹中,因此根据文档应该足以让 tomcat 找到该类。下面我放了我的 Dockerfile。
有人知道为什么找不到这个类吗?
Dockerfile
FROM azul/zulu-openjdk-alpine:11
RUN apk update && apk add bash
#set timezone to "Europe/Amsterdam"
RUN apk add tzdata && cp /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime && echo "Europe/Amsterdam" > /etc/timezone && apk del tzdata
COPY /build/distributions/Application*.zip /opt/application/
RUN unzip /opt/application/Application*zip -d /opt/application && rm /opt/application/Application*.zip && chmod 775 /opt/application/apache-tomcat/bin/catalina.sh && chmod 775 /opt/application/apache-tomcat/bin/docker-healthcheck.sh
WORKDIR /opt/application/apache-tomcat
EXPOSE 8080 9875 9000
# Define default command.
CMD ["/opt/application/apache-tomcat/bin/dockerstart.sh","arg1"]
HEALTHCHECK --interval=1m --timeout=10s --retries=3 --start-period=2m CMD /opt/application/apache-tomcat/bin/docker-healthcheck.sh
【问题讨论】:
-
“
”在那里做什么? -
这是文件所在的路径。它包含产品的名称,我不能在论坛上给出。将更新它以防止混淆
-
<path>.肯定是错误的,<和>都不是“包标识符”的有效字符。 ..假设您编译了原始示例,请尝试className="CatalinaRedisSessionStore" -
刚刚调整了
-
好的,..i 也是确切的错误信息 :)
标签: java docker tomcat redis wicket