【问题标题】:Finding a needed dll after a JBoss (hot) redeploy?在 JBoss(热)重新部署后找到所需的 dll?
【发布时间】:2009-10-20 11:30:39
【问题描述】:

我的 Web 应用程序使用本机 dll 来实现其部分功能(其位置在 PATH 中提供)。一切正常,直到我对 WAR 进行更改并且 JBoss 热部署此 WAR。此时dll已经找不到了,需要手动重启服务器。

在热部署后将 dll 加载回应用程序的最佳方法是什么?

【问题讨论】:

    标签: java dll jboss hotdeploy


    【解决方案1】:

    这可能不是那么容易。通常,DLL 与特定的类加载器相关联。当您重新部署时,这意味着用于您的应用程序的原始类加载器被破坏。不幸的是,Java 虚拟机不允许第二个类加载器再次重新加载 DLL。

    你必须有一些静态的东西,它永远不会被虚拟机卸载。也许拥有加载 DLL 的第二个应用程序将是一个解决方案,因为重新部署第一个应用程序不会影响 DLL。我想也可以创建一个加载 DLL 的 Jar 文件并将其添加到 JBoss 本身的类路径中,而不是将其添加到您的应用程序中。通常这样的服务器有一个“共享”目录,可以添加这样的 jar 文件,这些文件将被所有应用程序共享。

    以下来自 SUN 的错误揭示了这个问题,这比仅仅加载 servlet 更普遍:

    http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4225434

    【讨论】:

      猜你喜欢
      • 2020-02-18
      • 1970-01-01
      • 2010-11-01
      • 2011-01-09
      • 2013-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多