使用 Netbeans 在远程服务器上热部署
Hot Deploy on remote server with Netbeans
我的 Maven 项目在本地 glassfish 服务器上配置为 运行。当我对 Java class 或 JSP 文件进行任何更改时,它会自动部署。
但是,如果我在远程服务器上将同一个项目配置为 运行,当我点击保存按钮时它不会自动部署任何东西,我必须手动点击 "Run" 按钮。
我做错了什么吗?
谢谢!
不,它是这样的。
热代码替换在 IDE 内工作,因为它可以控制 java 进程和 class 加载。一旦在远程机器上,该过程将不再由您的 IDE.
控制
根据您使用的框架(Spring、JPA 等),即使是热代码替换也可能达不到预期效果,因为这些框架需要在启动期间进行初始化。
JDK本身只支持某种变化。通常签名更改不会重新加载或添加静态方法。
如果您需要更好的热代码重载支持,您可以尝试 JRebel。它是一个商业工具,但它支持更多的重新加载变体,也有一些框架支持。
我听说过一些公司也在生产服务器上使用它。
与 maven 相关,您只需要注意,如果 maven 部署了 .war 或 .ear 文件,它也不受您的 IDE 控制(或者有更严格的限制)。让 IDE 在本地完成工作通常是最好的方法。
我的 Maven 项目在本地 glassfish 服务器上配置为 运行。当我对 Java class 或 JSP 文件进行任何更改时,它会自动部署。
但是,如果我在远程服务器上将同一个项目配置为 运行,当我点击保存按钮时它不会自动部署任何东西,我必须手动点击 "Run" 按钮。
我做错了什么吗?
谢谢!
不,它是这样的。
热代码替换在 IDE 内工作,因为它可以控制 java 进程和 class 加载。一旦在远程机器上,该过程将不再由您的 IDE.
控制根据您使用的框架(Spring、JPA 等),即使是热代码替换也可能达不到预期效果,因为这些框架需要在启动期间进行初始化。
JDK本身只支持某种变化。通常签名更改不会重新加载或添加静态方法。
如果您需要更好的热代码重载支持,您可以尝试 JRebel。它是一个商业工具,但它支持更多的重新加载变体,也有一些框架支持。
我听说过一些公司也在生产服务器上使用它。
与 maven 相关,您只需要注意,如果 maven 部署了 .war 或 .ear 文件,它也不受您的 IDE 控制(或者有更严格的限制)。让 IDE 在本地完成工作通常是最好的方法。