Java 运行时操纵SpringMVC

Java 运行时操纵SpringMVC,java,maven,spring-mvc,runjettyrun,Java,Maven,Spring Mvc,Runjettyrun,我正在创建一个Spring服务器,不幸的是,它必须在下周“播出”,并且不能再关闭。我有几个问题: 我可以在服务器运行时操作/更新Java类吗 我可以在服务器运行时操作/更新HTML页面吗 如果不可能,如果我必须关闭服务器并用更新重新启动它,如何保留我的数据库 您会以JavaApplication、JettyRun、Maven、Gradle或其他方式运行它吗 您应该有两台服务器,并在它们前面放置一个负载平衡器,当更新时,您可以将所有内容路由到一台服务器,然后重新启动另一台服务器 关于你的问题: 我

我正在创建一个Spring服务器,不幸的是,它必须在下周“播出”,并且不能再关闭。我有几个问题:

  • 我可以在服务器运行时操作/更新Java类吗
  • 我可以在服务器运行时操作/更新HTML页面吗
  • 如果不可能,如果我必须关闭服务器并用更新重新启动它,如何保留我的数据库
  • 您会以JavaApplication、JettyRun、Maven、Gradle或其他方式运行它吗

  • 您应该有两台服务器,并在它们前面放置一个负载平衡器,当更新时,您可以将所有内容路由到一台服务器,然后重新启动另一台服务器

    关于你的问题:

  • 我不认为有一个简单和标准的方法来做到这一点。 编辑: 但是,如果您使用的是web容器,其中一些容器,比如tomcat 支持在不关闭服务器的情况下更新(重新部署)。你 可能还是会疏通一些交通。请阅读:

  • 大多数web容器都支持这一点,所以我想我的答案是肯定的

  • 数据库正在使用磁盘。重新启动将保持一切正常,而且,很少需要重新启动数据库

  • Maven和Gradle更多的是用于构建/测试,而不是用于运行实际部署的应用程序,所以我将排除这些


  • 祝你好运

    您可以在不需要重新启动的情况下部署应用程序,这样您就可以在运行时更改类和html页面中的方法,但这看起来像是在攻击应用程序。如果您添加了新的class+html页面或更改了类中的字段,那么它将不起作用,还会导致应用程序失效。

    Tomcat 7+的概念是,可以在不停止Tomcat进程的情况下部署同一WAR的多个版本。在部署新版本时,所有流量都由最新部署的版本处理。新版本完全启动后,所有新请求将自动路由到新版本。此功能本质上导致应用程序流量的零损失。