两个Web应用程序中的两个applet访问相同的DLL

时间:2014-01-14 09:39:03

标签: java dll applet classloader unsatisfiedlinkerror

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

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

每个applet(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'

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

为了让applet JAPP-B正常工作,有人可以建议一种替代方法吗?

1 个答案:

答案 0 :(得分:2)

在其自己的Java虚拟机中部署每个applet。例如。来自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>