18

我正在使用 IntelliJ 和 Tomcat 6 来运行 Spring Java EE 应用程序。我没有部署编译好的战争,而是选择使用爆炸战争部署,因此我可以选择热交换一些类和 JSP。

但是,除了“更新类”和“更新类和资源”之外,IntelliJ 还允许用户在更新操作上“重新部署”和“重新启动服务器”。这两种选择有什么区别?

如果我在我的类中更改了我的方法签名,或者如果我在我的 Springconfig.xml 中进行了更改,我是否需要重新启动服务器,或者重新部署是否足够?我注意到我无法简单地热交换与它们关联的函数签名或注释已被修改的类。

4

2 回答 2

20

重新启动服务器完全按照它说的做,并重新启动 tomcat 服务器。您的战争将在服务器启动时重建和部署。如果您在热交换类时遇到问题,这很有用。

Redeploy 将重新部署整个 .war(无需重新启动服务器),而不是尝试热交换更改的类和其他资源。

另请参阅:http: //www.jetbrains.com/idea/webhelp/updating-a-running-java-ee-application.html

在回答您的第二个问题时,重新部署就足够了。也就是说,它可能会导致内存泄漏,并且通常只比完全重启稍微快一点。

于 2012-12-18T15:01:59.903 回答
5

更新资源。所有更改的资源(即除类之外的所有应用程序组件)都将被更新。

更新课程和资源。所有更改的资源都将更新;更改的类将被重新编译。在调试模式下,更新的类将被热交换。在运行模式下,IntelliJ IDEA 只会更新输出文件夹中更改的类。这些类是否会真正在运行的应用程序中重新加载,取决于正在使用的运行时的功能。

重新部署。应用程序将被更新和重新部署。

重启服务器。服务器将重新启动。应用程序的更新版本将在服务器启动时部署。对于打包的工件,可用的选项是:

热交换类。更改的类将在运行时重新编译和重新加载。请注意,此选项仅在调试模式下有效。重新部署。整个应用程序将被重建和重新部署。重启服务器。服务器将重新启动。应用程序将在服务器启动时重建和部署。

来自: http: //www.jetbrains.com/idea/webhelp/run-debug-configuration-tomcat.html

于 2012-12-18T15:01:44.620 回答