gpt4 book ai didi

java - 在 Websphere Liberty 中加载 native 库的做法是什么?

转载 作者:行者123 更新时间:2023-12-02 02:21:11 24 4
gpt4 key购买 nike

我正在 Linux 中的 Websphere Liberty 下安装多个应用程序。每个应用程序都需要引用相同的共享库,该共享库加载 native 驱动程序;该库必须加载到它自己的类加载器中。

在之前的 Websphere (8+) 版本中,使用 UI 以这种方式配置库非常简单:设置范围、为其命名、识别类路径上的 jar、提供 native 库路径,然后勾选“使用隔离的类加载器”。对于 Liberty 来说则不同。

在 Websphere Liberty 下执行类似操作的做法是什么?

假设如下:

类路径:

/usr/acc/lib/jars/firstjar-1.0.jar
/usr/acc/lib/jars/secondjar-1.0.jar
/usr/acc/lib/3rdparty/thirdjar-1.0.jar

native 驱动程序:

/usr/acc/lib/3rdparty/driver.so

According to IBM :

  1. 对于 native 驱动程序,我只是将其与文件标记中的 JAR 文件一起列出
  2. 对于包含的类加载器,我需要将其引用为“commonLibraryRef”。

这意味着以下应该正确:

<library id="MyLibrary">
<file name="/usr/acc/lib/jars/firstjar-1.0.jar"/>
<file name="/usr/acc/lib/jars/secondjar-1.0.jar"/>
<file name="/usr/acc/lib/3rdparty/thirdjar-1.0.jar"/>
<file name="/usr/acc/lib/3rdparty/driver.so"/>
</library>

<application id="applicationWAR" location="application.war" name="applicationName" type=”war” autoStart="true">
<classloader commonLibraryRef="MyLibrary"/>
<application/>

这是否有效,或者我是否需要将 -Djava.library.path=/usr/acc/lib/3rdparty 添加到 jvm.options文件?

在提出这个问题时,对 Liberty 实例的访问受到限制,因此 apps.xml 的设计是通过推测,需要这个问题。

最佳答案

以上正确; apps.xml 中的库声明应保留在任何应用程序声明之上。无需更新jvm.options。使用fileset也可以接受简写,一个应用程序可以引用多个库,以逗号分隔;演示如下:

<!-- library from above question -->
<library id="MyLibrary">
<file name="/usr/acc/lib/jars/firstjar-1.0.jar"/>
<file name="/usr/acc/lib/jars/secondjar-1.0.jar"/>
<file name="/usr/acc/lib/3rdparty/thirdjar-1.0.jar"/>
<file name="/usr/acc/lib/3rdparty/driver.so"/>
</library>

<!-- short-hand using fileset -->
<library id="AnotherLib">
<fileset dir="/usr/acc/lib/2ndparty/" includes="*.jar" />
<file name="/usr/acc/lib/2ndparty/driver.so" />
</library>

<!-- short-hand using fileset and no .so file; includes can be *.* -->
<library id="ThirdLib">
<fileset dir="/usr/acc/lib/3/" includes="*.jar" />
</library>

<application id="applicationWAR" location="application.war" name="applicationName" type=”war” autoStart="true">
<classloader commonLibraryRef="MyLibrary,AnotherLib,ThirdLib"/>
<application/>

关于java - 在 Websphere Liberty 中加载 native 库的做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57274792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com