【发布时间】:2017-09-12 10:04:24
【问题描述】:
以下是我的用例:
我已经开始使用 Camunda 平台,并且正在使用 Java 编写的自定义应用程序访问 Camunda 流程引擎。所以基本上Tomcat服务器中有2个应用程序或war文件。最初,我为 Camunda 应用程序使用内置的 h2 数据库,为我的自定义应用程序使用 SQL 服务器数据库,并且使用了完美的集成身份验证机制。现在,我已将 h2 数据库复制到 SQL Server 数据库,并再次使用集成身份验证让流程引擎连接到 SQL Server。
问题: 部署 2 次战争后,当我重新启动 Tomcat 服务器时,tomcat bin 文件夹中的 sqljdbc_auth.dll 被 Camunda 应用程序成功加载,并且流程引擎成功接受请求,访问数据库并在 Camunda Web 应用程序上给出正确的响应( Cockpit,Tasklist,Admin) 但是当我尝试登录我的自定义应用程序时,我收到以下错误: " null.null 无法加载 sqljdbc_auth.dll 原因:本机库 C:\Users\Aakanksha\Desktop\BACKUP\$CAMUNDA_HOME\server\apache-tomcat-8.0.24\bin\sqljdbc_auth.dll 已加载到另一个类加载器中 "
我确实理解为什么会发生这种情况,并且已经遵循以下解决方案:
Sol.1 -
将 sqljdbc4.jar 文件添加到 $TOMCAT_HOME/lib 文件夹
将 sqljdbc_auth.dll 文件添加到 $TOMCAT_HOME/bin 文件夹
Sol.2 - 添加了 sqljdbc4.jar 和 sqljdbc_auth.dll 文件来分隔战争文件,即 WEBINF/lib 文件夹。
Sol.3 -
从 $TOMCAT_HOME/bin 文件夹中删除 dll 文件并将其添加到 Windows/System32
将此路径添加到 PATH 环境变量中
Sol.4 - 将dll文件添加到Java/JDK/bin文件夹中。
Sol.1、Sol.3 和 Sol.4 - 一场战争成功加载并使用了 dll 文件,但另一场战争却没有同样的错误。 Sol.2 - 导致错误“ com.microsoft.sqlserver.jdbc.AuthenticationJNI。加载 sqljdbc_auth.dll 失败原因:java.library.path 中没有 sqljdbc_auth "
我的两个应用程序同时运行,并且有不同的 SQL Server 数据库可以建立连接。是否有可能同时运行 2 场战争以使用共享 dll 连接到不同的数据库?
请分享您的建议和想法。
【问题讨论】:
标签: sql-server tomcat camunda