如何在 wildfly 25 中查找和安装缺失的类

问题描述 投票:0回答:1

我正在尝试使用 kerberos 为 oracle 数据源 (ojdbc8) 配置 wildfly/jboss 服务器。 kerberos 部分工作正常,但是,当到达 oracle 侦听器时,我在 wildfly 中遇到异常:

2023-04-12 19:07:19,152 WARN  [org.jboss.jca.core.connectionmanager.pool.strategy.PoolBySubject] (management-handler-thread - 1) IJ000604: Throwable while attempting to get a new connection: null: javax.resource.ResourceException: IJ031084: Unable to create connection

(...)
Caused by: java.lang.ClassNotFoundException: com.sun.security.jgss.ExtendedGSSContext from [Module "oracle.driver" from local module loader @53f48368 (finder: local module finder @24d4d7c9 (roots: /opt/wildfly-25.0.1.Final/modules,/opt/wildfly-25.0.1.Final/modules/system/layers/base))]
        at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:255)
        at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410)
        at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
        at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)

我无法在 wildfly 文件夹树中找到该课程,我不知道在哪里可以找到/下载该课程。请注意,我对java的了解很少

根据我的理解,java 带有一些“本机”类,因此我尝试安装不同的 java 11 版本(oracle、amazon、openjdk)并执行“java -verbose”来识别该包/模块。但是我没有成功。我在我的 jboss 树中找到一个引用该包/模块的文件:

/opt/wildfly-25.0.1.Final/modules/system/layers/base/sun/jdk/main/module.xml

<module name="sun.jdk" xmlns="urn:jboss:module:1.6">
    <properties>
        <property name="jboss.api" value="deprecated"/>
    </properties>

    <resources>
        <!-- currently jboss modules has not way of importing services from
        classes.jar so we duplicate them here -->
        <resource-root path="service-loader-resources"/>
    </resources>
    <dependencies>
        <module name="sun.scripting" export="true"/>
        <system export="true">
            <paths>

                <!-- See below for replacement modules -->

                <!-- Internal to java.base -->

                <path name="com/sun/net/ssl/internal/ssl"/>
                <path name="com/sun/crypto/provider"/>
                <path name="sun/security/action"/>

(...)

                <!-- Module jdk.security.jgss -->

                <path name="com/sun/security/jgss"/>

(...)

知道如何解决这个问题吗?

谢谢,

oracle jdbc wildfly-25
1个回答
0
投票

最后我自己解决了这个问题,

我已经编辑了 jdbc module.xml 文件以将“sun.jdk”模块添加为依赖项:

cat /opt/wildfly-25.0.1.Final/modules/system/layers/base/com/oracle/main/module.xml

<module xmlns="urn:jboss:module:1.1" name="com.oracle">
  <resources>
    <resource-root path="ojdbc11.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
    <module name="sun.jdk"/>
  </dependencies>
</module>

不知道为什么没有描述这个依赖 之后我能够成功连接

/opt/jboss/bin/jboss-cli.sh --connect '/subsystem=datasources/data-source=KerberosDS:test-connection-in-pool'
{
    "outcome" => "success",
    "result" => [true]
}
© www.soinside.com 2019 - 2024. All rights reserved.