在Websphere Liberty中加载本机库的做法是什么?

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

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

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

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

假设以下内容:

classpaths:

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

本地驱动程序:

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

According to IBM

  1. 对于本机驱动程序,我只是在文件标记中将其与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的设计是通过推测,需要这个问题。

java java-native-interface shared-libraries websphere-liberty
1个回答
0
投票

以上是正确的; 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/>
© www.soinside.com 2019 - 2024. All rights reserved.