Deployment Glassfish 3.1.2在应用程序部署后重新加载所需的JAR

Deployment Glassfish 3.1.2在应用程序部署后重新加载所需的JAR,deployment,netbeans,jar,glassfish,ejb,Deployment,Netbeans,Jar,Glassfish,Ejb,我有一个使用一些外部库的ebj(在本例中,这些库是我自己编写的)。我已经将它们包含在EJB中 问题是GalasFISS似乎只装载了一次需要的罐子(在第一次部署时),并认为他已经有了用于进一步部署的瓶子。这只是一个假设,但是如果我对EJB使用的某个库做了任何更改,重新部署EJB,所做的更改将不会被应用。。。Glassfish仍然使用他可能保存在缓存中的旧罐子或类似的东西(我可以在Glassfish存储库中找到罐子的任何标记) 到目前为止,我找到的唯一解决方案是重新启动服务器。。。不太适合开发/测试

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

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

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

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

谢谢你读我的书


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

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

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

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


对于Eclipse:双击
Servers
view/选项卡上的服务器,打开服务器的
Overview
设置。页面上最底层的设置是用于部署的
User(sic)Real Jar归档…
。选中它(默认情况下未选中),然后重试。

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

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

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


对于Eclipse:双击
Servers
view/选项卡上的服务器,打开服务器的
Overview
设置。页面上最底层的设置是用于部署的
User(sic)Real Jar归档…
。选中它(默认情况下不选中),然后重试。

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

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

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

注意:只有当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服务器。

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

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

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

注意:只有当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服务器。

我将尝试看看如何使用netbeans实现这种行为。它显然被oracle标记为bug,我读到的一个解决方案是将ejb添加到企业应用程序中。除非您将netbeans插件依赖项添加到EJB中,否则它是有效的,我就是这么做的。谢谢,我不知道我