我正在使用IntelliJ和Tomcat 6来运行Spring Java EE应用程序。我没有部署已编译的战争,而是选择使用爆炸的战争部署,因此我可以选择热交换某些类和JSP。
但是,除了“更新类”和“更新类和资源”之外,IntelliJ还允许用户在更新操作上“重新部署”和“重新启动服务器”。这两个选择有什么区别?
如果我在班级中对方法签名进行了更改,或者我在Springconfig.xml中进行了更改,是否需要重新启动服务器,还是重新部署?我注意到我无法简单地热切换其功能签名或与其关联的注释已被修改的类。
答案 0 :(得分:15)
重新启动服务器完全按照它的说法执行,并重新启动tomcat服务器。您的战争将在服务器启动时重建和部署。如果您在热插拔课程时遇到问题,这非常有用。
重新部署将重新部署整个.war(不重新启动服务器),而不是尝试热更换已更改的类和其他资源。
另见: http://www.jetbrains.com/idea/webhelp/updating-a-running-java-ee-application.html
在回答第二个问题时,重新部署应该足够了。也就是说,它可能导致内存泄漏,并且通常只比完全重启快一点。
答案 1 :(得分:3)
更新资源。所有更改的资源(即除了类之外的所有应用程序组件)都将更新。
更新课程和资源。所有更改的资源都将更新;更改的类将被重新编译。 在调试模式下,更新的类将进行热交换。在运行模式下,IntelliJ IDEA将仅更新输出文件夹中已更改的类。这些类是否实际将在正在运行的应用程序中重新加载,取决于所使用的运行时的功能。
重新部署。该应用程序将更新并重新部署。
重启服务器。服务器将重新启动。应用程序的更新版本将在服务器启动时部署。 对于打包工件,可用选项包括:
热插拔课程。更改的类将在运行时重新编译并重新加载。请注意,此选项仅适用于调试模式。 重新部署。整个应用程序将被重建和重新部署。 重启服务器。服务器将重新启动。应用程序将在服务器启动时重建和部署。
来自:http://www.jetbrains.com/idea/webhelp/run-debug-configuration-tomcat.html