如何解决Camel FTPs FileNotFoundException 与战争资源中的密钥库文件
我试图通过camel-ftp 将我的Spring Boot 应用程序连接到FTPs 服务器。
我通过 FTP 连接 Uri 中的 ftpClient.trustStore.file
参数配置了密钥库文件。
在 IDE 中运行 debug 时它正常工作,但是在将应用程序打包到 war 文件并部署在 Docker 容器中时。我收到 FileNotFoundException :Caused by: java.io.FileNotFoundException: file:/usr/app/app.war!/WEB-INF/classes!/keys/diode.jks (No such file or directory)
我试过检查
- /classes/keys 文件夹中已经存在额外的战争文件和密钥库(从源代码中的 /resources/keys 文件夹复制)
- 添加日志,我可以在使用 war 运行应用程序时获取密钥库文件的内容,但无法获取传递给 FTP 连接 Uri 的文件路径。
如何在war中获取真实的文件keystore文件路径并通过camel-ftp传递给FTPs连接Uri中的ftpClient.trustStore.file参数
解决方法
从异常消息中,我可以推断出某些东西正试图打开一个“文件:”URL,就好像它是一个常规文件路径名一样。那行不通。
-
如果你有需要文件路径的东西,你需要给它一个真实的文件路径。不是
file:
网址。 -
如果 URL 引用 JAR 或 WAR 文件内的资源,则没有有效的文件系统路径。无法以这种方式打开存档文件中的内容。您操作系统的“打开文件”系统调用需要路径名而不是 URL。
因此,您可能需要做的是从 WAR 中提取密钥库文件并将其写入文件系统中的一个文件中。 (听起来已经完成了。)然后您需要更改 FTPS 连接 URL 以使用该文件文件的路径名。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。