【问题标题】:Loading *.so files into Websphere将 *.so 文件加载到 Websphere 中
【发布时间】:2012-07-05 14:40:44
【问题描述】:

我的 JSP 程序设置为在 HP-UX 下的 Websphere 上运行。

我有一些 .jar 文件和一个 .so 文件,其中包含我的程序需要运行的类。

通过将我的 .jar 文件放入 \MyProgram\WEB-INF\lib\ 文件夹中,我能够得到一些工作。

但是,我看到一个 UnsatisfiedLinkError,这是由于我的 lib.so 文件未被识别造成的。

我发现的一种方法是:

  1. 在管理控制台中,转到环境 -> 共享库 -> 新建

  2. 在 Classpath 中输入 .jar 文件位置,在 Native Library Path 中输入 .so 文件位置

  3. 在管理控制台中,转到应用程序 -> 应用程序类型 -> 企业应用程序

  4. 在 MyProgram -> Shared library references -> Shared Library Mapping 下,通过将库从 Available 移动到 Selected 将库分配给程序。

我有两个问题:

  1. 我可以只从程序的\lib\ 文件夹中获取 .jar 文件和 .so 文件吗?

  2. 如果不能,是否可以从我的应用程序文件夹中列出类路径和本机库路径?类似于使用 websphere 变量目录 %MYPROGRAM%\WEB-INF\lib\lib.so 上传我的 application.war,而不是使用绝对路径 C:\IBM\WebSphere\AppServer\bin\lib.so 将文件放在物理服务器中?

[EDIT-01] 更多详情如下:

收到错误:“错误 500:java.lang.UnsatisfiedLinkError:com.chrysalisits.crypto.LunaAPI.Initialize()V”

我正在尝试让 Websphere 与 LunaSA HSM 交互以检索公钥/私钥。他们为我提供了:libLunaAPI.sl、libLunaAPI.so、LunaJCASP.jar、LunaJCESP.jar。从 IBM 的 Websphere V8 -> References -> Class Loading Exceptions,它表明我需要 HP-UX 的 *.so 文件,所以我这样做了accordingly。路径集是我在 Websphere 中指定的绝对路径。这与我的第二个问题有关。

第一个问题是我实际上想知道是否可以将这些文件放入 myProgram.war 并从那里运行,而不是使用 WinSCP 访问服务器并将文件放在那里以获取绝对路径引用。也许指定上述文件位于我的程序中,而不是在 \WEB-INF\lib\ 下。这是因为只有我的这个程序才能访问 LunaSA HSM。

** PS。我尝试了这两种方法,但仍然失败。叹息。

【问题讨论】:

  • 从 WebSphere 文档中(至少通过版本 7;我还没有查看过),似乎只能从系统 PATH 或共享库加载本机库。也就是说,不是来自单个 Web 应用程序的部署路径。我不认为我理解你的问题 2。
  • 您好 dbreaux,我正在尝试让 Websphere 从 LunaSA HSM 检索密钥。不幸的是,UnsatisfiedLinkError 一直告诉我 htat 出了点问题:“原因:com.chrysalisits.crypto.LunaAPI.Initialize(Native Method) at com.chrysalisits.crypto.LunaAPI.Initialize()V at com .chrysalisits.crypto.LunaTokenManager.(LunaTokenManager.java:107) 在 com.chrysalisits.crypto.LunaTokenManager.getInstance(LunaTokenManager.java:62) 在 com.chrysalisits.cryptox.LunaJCEProvider.(LunaJCEProvider.java :149) 在..."
  • 我实际上尝试将 .war 和 .so 文件放入 Websphere 目录并在将库分配给我的程序之前链接它们。错误依旧出现,不太确定是不是将库链接到程序的正确方式。
  • UnsatisfiedLinkError 意味着您没有调用 System.loadLibrary,调用失败,或者库不包含适当命名的本机方法。如果调用失败,我们将需要查看异常堆栈跟踪以确定原因。如果调用成功,本地方法是否在独立的 JVM 中工作?
  • 是的。在我用另一个 64 位版本替换 .so 文件后,UnsatisfiedLinkError 错误不再存在。我看到“CrystokiConnect 失败”的编程错误。猜猜这是另一个问题。谢谢。

标签: java jsp web-applications websphere hsm


【解决方案1】:

对于共享库实现,我相信您只指定了本机库路径中的 目录,而不是 文件名。也就是说,使用您当前的文件位置,/opt/apps/WebSphere/AppServer/bin

另一方面,我希望该目录已经在 WebSphere 的 WAS_LIBPATHSHLIB_PATH 中,因此根本没有必要列出它。 (查看$WAS_HOME/bin/setupCmdLine.sh。)

但是,我认为最好在某个地方为您的 luna 文件创建一个子目录,然后将您的共享库本机库路径指向该目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多