问题描述
我正在尝试将现有的 Web 应用程序从 Windows 迁移到 Docker 容器中运行。我从 Centos 7 和 OpenJDK 11 开始。将 Tomcat 9 放在上面,然后就可以正常启动了。我开始为我的 Web 应用程序添加我们当前 Windows 部署的所有部分(war 文件、jaas.config、setenv.sh 等)。 docker 容器启动正常,但是当我尝试登录时出现以下错误..
04-Jan-2021 13:27:30.381 SEVERE [http-nio-8080-exec-9] org.apache.catalina.realm.JAASRealm.authenticate Unexpected error
java.lang.SecurityException: java.io.IOException: /opt/tomcat/latest/conf/jaas.config
(No such file or directory)
at java.base/sun.security.provider.ConfigFile$Spi.<init>(ConfigFile.java:137)
我停止容器并以交互模式启动我确认文件在那个位置。
root@eac3366e9b83:/# ls -ltr /opt/tomcat/latest/conf/
total 236
-rwxrwxrwx 1 root root 107 Jul 13 2019 jaas.config
可能导致问题的原因是什么?
解决方法
问题是从 windows 复制到 docker 镜像的 jaas.config 文件和 setenv.sh 包含 windows 行终止。因此,当 tomcat 尝试加载 jaas 配置文件时,名称末尾有多余的字符,并且在 File.exists 中失败。文件内容修复后,身份验证模块加载正常。