【问题标题】:Glassfish 3.1.2 reload needed jars after application deploymentGlassfish 3.1.2 在应用程序部署后重新加载所需的 jar
【发布时间】:2012-07-29 09:09:59
【问题描述】:

我有一个使用一些外部库的 ebj(在这种情况下,这些库是我自己编写的)。我已将它们包含在我的 EJB 中。

问题是 glassfish 似乎只加载了一次所需的 jars(在第一次部署时),并认为他已经有了用于进一步部署的 jars。这只是一个假设,但如果我对 EJB 使用的一个库进行任何更改,重新部署 EJB,所做的更改将不会被应用...... Glassfish 仍然使用他可能保存在缓存中的旧 jar 或类似的东西(我可以在 glassfish 存储库中找到罐子的任何标记)。

到目前为止,我发现的唯一解决方案是重新启动服务器...不太适合开发/测试会话,您必须等待 glassfish 重新启动您所做的每一个小改动。

我的问题是:有没有办法避免这种行为并强制 glassfish 在每次部署时重新加载所需的 jar?

感谢您阅读我。

注意:我正在使用 netbeans 进行本地部署,但直接从 glassfish 管理控制台进行部署会导致相同的结果。

【问题讨论】:

    标签: deployment netbeans jar glassfish ejb


    【解决方案1】:

    我在 Windows 平台上使用 Glassfish 3.1.2 时遇到了同样的问题。当从我的 IDE 中删除或重新部署应用程序时,这些文件会打开,并且(显然)Windows 不会让部署操作删除它们。

    我的解决方案是在每次发布时使用“Real Jar Archives for Deployment”将部署更改为“完全部署”,而不是更动态和更快的“目录部署”。

    我不知道如何/如何对 Netbeans 进行此更改,因为我不再使用 Netbeans。

    对于 Eclipse:双击您的服务器上的 Servers 视图/选项卡以打开服务器的 Overview 设置。页面最底部的设置是User (sic) Real Jar Archives for Deployment ...。勾选(默认不勾选),然后重试。

    【讨论】:

    • 我会尝试看看如何使用 netbeans 获得这种行为。它显然被oracle标记为错误,我阅读的一个解决方案是将ejb添加到企业应用程序中。除非您将 netbeans 插件依赖项添加到您的 EJB 中,否则它会起作用,这就是我所做的。谢谢。
    • 我不知道其他人是否也在这样做,但我必须将 netbeans 插件添加到我的 EJB 依赖项中。它工作得很好,但是当我尝试使用我之前对企业应用程序的评论中提到的技巧时。它导致此错误:“目标“dist-ear”在 EE 应用程序编译时项目 中不存在。我目前正在尝试查看原因。
    【解决方案2】:

    好的,所以我终于得到了一些具体的结果。我不知道是否有很多人按照我的方式工作,但我会公开我找到的适合我需求的解决方案。

    首先,如果您使用 netbeans 平台(因此使用 netbeans 插件)在独立的 Java 客户端上部署 EJB,您可能会感到担心。

    问题是 glassfish(3.1.2,我不知道其他版本是否会发生同样的问题)在重新部署 EJB 时不会重新加载所需的 jar。因此,如果您的 EJB 有一些依赖项并且在其中进行了一些更改,则 glassfish 将看不到它们,并且即使在 EJB(重新)部署之后仍将继续使用旧 jar。它被 oracle 标记为 bug,所以我认为它会很快(或不会)解决,但在 oracle 完成他的工作之前,这里有一个解决方案。

    注意:仅当您的 EJB 具有 netbeans 插件依赖项时才会发生此错误。如果不是您的情况,您只需将 EJB 添加到企业应用程序中并部署它,您的 jar 将自动重新加载。

    假设你是我的情况。如果您编译包含依赖于 netbeans 插件的 EJB 的 EE 应用程序。您可能会收到此错误:

    Target "dist-ear" does not exist in the project "the path your netbeans plugin"
    

    为了解决这个问题,我已将目标添加到插件的 build-impl.xml 文件中。

    <target name="dist-ear" />
    

    然后添加 netbeans 插件作为企业应用程序的依赖项。

    重新部署应用程序后,您的 EJB 的依赖项可能已加载,您无需重新启动 glassfish 服务器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-24
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-07
      • 1970-01-01
      • 2023-03-12
      相关资源
      最近更新 更多