[英]Native Library sqljdbc_auth.dll already loaded in another classloader
[英]Native library mssql-jdbc_auth-8.4.1.x64.dll already loaded in another classloader when I redeploy the war file in external tomcat
我有一个使用 ms-sql 数据库的 spring 启动应用程序,它在服务器新启动时正确部署在外部 tomcat 中,但是当我重新部署相同的 war 文件时,我收到以下错误(war 文件仍然部署但无法正常运行:
当我在外部 tomcat 中重新部署 war 文件时,本机库 mssql-jdbc_auth-8.4.1.x64.dll 已经加载到另一个类加载器中。
所以我取消部署war文件,重新启动tomcat服务器,然后重新部署它,它可以正确部署并工作(功能和CRUD)。
我正在使用 tomcat 9.0.43 并且没有其他应用程序部署到服务器实例。
编辑:我在 windows 上运行 tomcat 并且在 Z1B359D8741068B55BEFA 文件夹中还有 .dll 文件。 另外我正在使用 maven 进行依赖管理。
该程序使用 DB auth 的集成安全性
您的问题来自您想要对 WAR 文件进行的双重使用:
java -jar
运行 WAR 文件时,您都需要 JDBC 驱动程序, 幸运的是spring-boot-maven-plugin
已经在repackage
目标中提供了这样一个功能:所有标记为已provided
的依赖项(例如 Embedded Tomcat 库)都放在WEB-INF/lib-provided
文件夹中,因此不会加载由 servlet 容器。
因此,您只需将 JDBC 驱动程序标记为已provided
并将其添加到 Tomcat 的公共加载程序的类路径( $CATALINA_BASE/lib
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.