4

使用的 ide 是:IBM Rational® Software Architect™ for WebSphere® Software Version: 7.5.5.3

使用的应用服务器是 Wbesphere 6.1。

我发布这个问题是因为我的服务器需要大约 7 到 8 分钟才能启动。

因此,即使我做了一个小的更改,我也必须等待 10 分钟才能测试我的应用程序中的更改。所以有没有一种方法可以更改我的 java 代码并在不重新启动服务器的情况下对其进行测试。

建议赞赏!

笔记:

我不应该在我的环境中使用任何构建工具。

4

3 回答 3

7

有一个名为JRebel的插件可以让您在不重新启动服务器的情况下进行更改。

于 2012-07-16T13:14:11.410 回答
3

Dynamic Code Evolution VM是 JRebel 的开源替代品,您可以尝试重新加载类。它将重新定义整个类,甚至重新加载对类层次结构所做的更改。

于 2012-07-16T13:21:49.903 回答
1

理论上,重新加载类是内置在 JVM 中的,尽管大多数实现(特别是 Oracle 的)只重新加载(热交换),只要您只更改方法体内的代码即可。

另一个问题是,在 Eclipse 中,WTP 适配器必须配合并且只部署更改的类定义(增量部署)。由于某种原因,GlassFish 一直是增量部署的主要反对者,因此它的 WTP 适配器会在进行最微小的更改后重新启动服务器。

JBoss 曾经是增量部署的支持者,但在 AS 7 之后(“一切都必须不同”),他们现在也成为了“重启服务器”学派的追随者。

另一个问题是简单的类加载通常只是故事的一部分。在 EJB、JSF、JPA 和许多其他框架中,类也必须由框架重新注册,必须清除缓存等

这就是像 JRebel 这样的东西出现的地方。它重新加载了对类的几乎所有类型的更改。它还可以独立于 WTP 适配器工作,从而使您摆脱服务器供应商的心血来潮,即今天重新启动是时髦的,明天是跛脚的,或者正好相反。JRebel 还拥有许多框架的知识和插件。

不幸的是,JRebel 并不完美,偶尔会失败,但总的来说它运行良好。

另一条建议:大多数现代应用程序服务器在相对较快的硬件和小型应用程序上在一秒钟内启动,对于较大的应用程序则需要大约 10 秒。有了这些和会话序列化,你几乎不再需要像 JRebel 这样的东西了。

于 2012-07-16T19:47:05.533 回答