sql-server - 在同时运行的 Tomcat 服务器中的多个 war 文件之间共享 sqljdbc_auth.dll

标签 sql-server tomcat camunda

以下是我的用例:

我已经开始使用 Camunda 平台并使用用 java 编写的自定义应用程序访问 Camunda 流程引擎。所以基本上 Tomcat 服务器中有 2 个应用程序或 war 文件。最初,我为 Camunda 应用程序使用内置的 h2 数据库,为我的自定义应用程序使用 SQL 服务器数据库,并且使用了非常好的集成身份验证机制。现在,我已将 h2 数据库复制到 SQL Server 数据库,并再次使用流程引擎的集成身份验证来连接到 SQL Server。

问题: 部署 2 场 war 后,当我重新启动 Tomcat 服务器时,tomcat bin 文件夹中的 sqljdbc_auth.dll 被 Camunda 应用程序成功加载,流程引擎成功接受请求,访问数据库并在 Camunda Web 应用程序上给出正确的响应( Cockpit,Tasklist,Admin) 但当我尝试登录我的自定义应用程序时,出现以下错误: “ null.null 未能加载 sqljdbc_auth.dll 原因: native 库 C:\Users\Aakanksha\Desktop\BACKUP\$CAMUNDA_HOME\server\apache-tomcat-8.0.24\bin\sqljdbc_auth.dll 已加载到另一个类加载器中 "

我明白为什么会这样,并且已经遵循了以下解决方案:

Sol.1 -

  1. 将 sqljdbc4.jar 文件添加到 $TOMCAT_HOME/lib 文件夹

  2. 将 sqljdbc_auth.dll 文件添加到 $TOMCAT_HOME/bin 文件夹

Sol.2 - 添加了 sqljdbc4.jar 和 sqljdbc_auth.dll 文件来分隔 war 文件,即 WEBINF/lib 文件夹。

Sol.3 -

  1. 从 $TOMCAT_HOME/bin 文件夹中删除了 dll 文件并将其添加到 Windows/System32

  2. 将此路径添加到 PATH 环境变量

Sol.4 - 将 dll 文件添加到 Java/JDK/bin 文件夹。

Sol.1、Sol.3 和 Sol.4 - 一场 war 成功加载并使用了 dll 文件,但另一场 war 没有成功,但出现同样的错误。 Sol.2 - 导致错误“ com.microsoft.sqlserver.jdbc.AuthenticationJNI。无法加载 sqljdbc_auth.dll 原因:java.library.path 中没有 sqljdbc_auth "

我的两个应用程序同时运行,并且有不同的 SQL Server 数据库要连接。是否有可能同时运行 2 场 war 使用共享 dll 连接到不同的数据库?

请分享您的建议和想法。

最佳答案

我遇到了同样的问题。我们更改了 war 文件以使用来自 tomcat 配置的 jndi 查找。效果很好,我们现在可以部署多个 war 文件。

更多信息见

http://www.baeldung.com/spring-persistence-jpa-jndi-datasource

约翰

关于sql-server - 在同时运行的 Tomcat 服务器中的多个 war 文件之间共享 sqljdbc_auth.dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46173547/

相关文章:

c# - 帮我修复这个 SQL 语句?

java - 使用servlet提交时数据库中没有数据

hibernate - Tomcat 上的 Spring Security/JSF/Hibernate 意外 session 劫持?

mysql - 在 camunda wildfly 中配置 mysql

sql - 同时在同一个表中插入和选择

c# - 如何为 ASP.NET Core/Angular Web 应用程序创建安装程序?

sql - 从合并函数中找到最大值

java - Spring Boot sperate @Configurations 用于多个应用程序上下文

jira - 在流程设计中将步骤命名为任务与状态

bpmn - Camunda:通过变量值查找流程实例