将新的jar文件添加到Web应用程序而不重新启动它

时间:2012-08-01 12:09:36

标签: java-ee websphere-7

我有一个Java EE Web应用程序,它运行在WAS 7.0.的2节点集群上。此Web应用程序有多个jar文件,每个jar文件中都包含一个实用程序列表。我将来可能会将 新的 jar文件添加到此Web应用程序中。 当我们向其中添加新的jar时,我们不希望此Web应用程序停机。

是否可以在不重新启动的情况下将新的jar文件添加到Web应用程序?这些变化会立即生效吗?

如何更新已加载的类已加载的现有jar文件?是否可以在不重新启动的情况下执行此操作?

我在WAS中读到了一些名为Hot deployment的内容。他们提到,Hot Deployment在Solaris和HP-UX操作系统上不起作用。

您能否提出解决此问题的最佳方法?

1 个答案:

答案 0 :(得分:2)

  

是否可以在没有的情况下将新的jar文件添加到Web应用程序中   重新启动它?这些变化会立即生效吗?

不,如果不重新启动应用程序,就无法将新JAR添加到类加载器中。即使您创建一个空的JAR并在以后更换它,也无法使更改在0中断时生效:至少该模块仍将重新启动。

  

如何更新已加载的现有jar文件   班级加载?是否可以在不重新启动的情况下执行此操作?

你做不到,这是不可能的。

  

我读到了WAS中称为热部署的内容。他们有   提到,热部署在Solaris和HP-UX操作系统上不起作用。

热部署确实允许类替换(但不是整个JAR),停机时间为0。

其他选择:

  • 使用路由技术(HTTP代理,WVE),并对应用程序进行波纹重启(即,一次在一个集群成员上重启应用程序,并在此期间将中间流量路由到另一个服务器)。
  • 使用像JRebel这样的东西。我的理解是它主要针对开发环境,但它也可能支持生产。