以下是我的用例:
我已经开始使用Camunda Platform并使用用java编写的自定义应用程序访问Camunda流程引擎。所以Tomcat服务器基本上有2个应用程序或war文件。最初我使用内置的h2数据库为我的自定义应用程序的Camunda应用程序和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文件以分隔war文件,即 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连接到不同的数据库?
请分享您的建议和想法。
答案 0 :(得分:0)
我遇到了同样的问题。我们将war文件更改为使用tomcat配置中的jndi查找。这很好用,我们现在可以部署多个war文件。
有关详细信息,请参阅
http://www.baeldung.com/spring-persistence-jpa-jndi-datasource
约翰