【问题标题】:JBoss: Native Library sqljdbc_auth.dll already loaded in another classloaderJBoss:本机库 sqljdbc_auth.dll 已加载到另一个类加载器中
【发布时间】:2017-12-12 14:42:40
【问题描述】:

更新:这个 jboss 论坛上未回答的问题是描述我的确切问题的另一种方式:https://developer.jboss.org/thread/199888

原帖:我正在尝试在部署到 JBoss 7.x 的 Web 应用程序上进行集成身份验证。通过将 sqljdbc_auth.dll 复制到 Windows/System32 或 {java location}/jre/bin 中,我成功完成了一项工作。但是,如果两个或更多应用程序正在运行,我会收到一条错误消息,指出 Native Library sqljdbc_auth.dll already loaded in another classloader

我知道为什么会发生这个错误,this question and answer 有一个 Tomcat 解决方案。但我不能让它在 JBoss 中工作。实际上,将 dll 放在 jboss/bin 文件夹中会出现与以前完全相同的错误:

Failed to load the sqljdbc_auth.dll cause : 
Native Library C:\Jboss-eap-7.0\bin\sqljdbc_auth.dll already loaded in another classloader

如何配置 JBoss,和/或放置 sqljdbc_auth.dll

我的部署不位于任何模块或命名服务器实例下。我认为它只是简单地称为独立

我也尝试过这种方法,但我不知道将 jar 文件放在 JBoss 目录中的哪个位置。我尝试将其部署为类似于 Web 应用程序的部署,并尝试将其复制到 lib 文件夹中,在独立下。没有成功。

编辑:

根据发布的答案,我正在尝试实现一个全局模块,但现在出现以下错误:

14:00:25,333 ERROR [stderr] (ServerService Thread Pool -- 121)
java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver from 
[Module "deployment.MyWebapp.war:main" from Service Module Loader]

【问题讨论】:

    标签: java sql-server jdbc jboss windows-authentication


    【解决方案1】:

    我假设您必须为类似这样的 sql jdbc 驱动程序创建了一个模块。

    <module xmlns="urn:jboss:module:1.3" name="com.microsoft.sqlserver">
      <resources>
        <resource-root path="sqljdbc.jar"/>
      </resources>
      <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
      </dependencies>
    </module>
    

    并将此模块作为依赖项添加到您部署的每个应用程序中。

    我建议通过像这样编辑standalone.xml文件来将此模块声明为全局模块..

    <subsystem xmlns="urn:jboss:domain:ee:4.0">
                <global-modules>
                    <module name="com.microsoft.sqlserver" slot="main"/>
                     .
                     .
                </global-modules>
    .
    .
    </subsystem>
    

    并从您的个人应用程序中删除对该模块的依赖。

    【讨论】:

    • 我对模块一无所知。您能否在第一个代码示例中添加您引用的 xml 文件?我没有添加任何模块。 sqljdbc 首先在 war-files 中实现,后来在我的项目 pom.xml (maven) 中定义为 scope=provided。
    • 模块定义可能在jboss-deployment-structure.xml&lt;JBOSS INSTALLATION&gt;\modules\com\microsoft\sqlserver\main 的单独module.xml 文件中。
    • @KjetilNordin - \modules\ 文件夹下的目录结构可能因模块名称而异。
    • 我尝试在modules文件夹下实现它,它是自己的module.xml。还没有雪茄,但是我需要整理很多新的错误信息。这可能需要一段时间,但我很快就会回来。无论如何,谢谢你的回答。我觉得这让我走上了解决问题的正确轨道,所以我很乐观。
    • 我得到一个 ClassNotFoundException(有关详细信息,请参阅更新的问题)
    猜你喜欢
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    相关资源
    最近更新 更多