【问题标题】:Same DLL accessed by two applets in 2 web applications两个 Web 应用程序中的两个小程序访问相同的 DLL
【发布时间】:2014-01-14 09:39:02
【问题描述】:

我需要一个建议来解决以下问题。

我有两个 Web 应用程序(比如说 WEBAPP-A 和 WEBAPP-B)在同一个应用程序服务器下运行。每个应用程序页面中的每个登录页面都会激活一个特定的小程序 (我们分别称它们为 JAPP-A 和 JAPP-B)。这两个小程序需要使用同一个DLL。

当单独访问应用程序时,每个小程序(JAPP-A 或 JAPP-B)都可以正常工作(在我们的例子中,使用的浏览器是 Internet Explorer 8.0,客户端的 JRE 版本是 1.7.0_45)。但是,当从 WEBAPP-A 重定向到 WEBAPP-B 时,小程序 JAPP-B 崩溃。

我得到错误:

UnsatisfiedLinkError: 'DLL already loaded in another classloader'

所以我尝试通过在小程序标记内设置相同的 CODEBASE 值并在 CODEBASE 路径下部署包含 JAPP-B 代码的 JAR 来为 JAPP-A 和 JAPP-B 使用相同的类加载器,但我们得到了相同的错误信息。

谁能建议一种替代方法以使小程序 JAPP-B 正常工作?

【问题讨论】:

    标签: java dll applet classloader unsatisfiedlinkerror


    【解决方案1】:

    在其自己的 Java 虚拟机中部署每个小程序。例如。来自Applet Deployment Parameters: separate_jvm

    <APPLET archive="my_applet.jar" code="MyApplet" width="300" height="300">
        <PARAM name="java_arguments" value="...">
        <!-- use a separate JVM for this applet! -->
        <PARAM name="separate_jvm" value="true">
    </APPLET>
    

    【讨论】:

    • 考虑使用 JNLP/Java Web Start 启动小程序也是值得的,因为这使得部署本机变得更加简单。
    • 那么,这是否为您解决了问题?你还在考虑吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 2011-09-11
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多