哪些Java web框架提供热重载?

12

我想知道哪些Java Web应用程序框架提供“热重载”功能,即允许开发应用程序并在服务器上“几乎即时”重新部署它们(即少于几秒钟)。

在Java领域中,Play!直接支持此功能,但我正在寻找更详尽的列表。

我所知道的其他例子包括:Nuxeo WebEngine(前提是你正在使用Eclipse和正确的插件),或者在Python世界中,Django和Pylons(使用--reload选项时)。

8个回答

15
据我所知,使用jrebel,几乎所有的Java框架都可以进行热加载。一些框架内置了某种形式的热部署,如其他答案中所述。

13

如果有人对这几个月后的情况感兴趣:

你可以配置 Jetty,以便它可以热部署您编译好的类(eclipse + netbeans 具有保存时编译功能)。使用 Maven,您可以在 pom.xml 文件中进行以下配置,然后键入 mvn jetty:run

        <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>maven-jetty-plugin</artifactId>
            <version>${jetty.version}</version>
            <configuration>
                <scanTargets>
                    <scanTarget>target/classes/</scanTarget>
                </scanTargets>
                <scanIntervalSeconds>1</scanIntervalSeconds>
            </configuration>
        </plugin>

不需要使用jrebel就可以完成此操作,具体方法是:在IDE中进行更改+保存+转到浏览器+F5 => 完成!

有了这个功能,例如wicket或vaadin就可以热部署(但其他框架也一样!)


2
Tapestry 5和Seam都支持单个类/页面更改的热部署。

1

我假设你是为了开发目的而不是生产(因为在 Java 生产中热重载 == 大失败)而需要这个。很少会有商业产品让我推销,但如果你想要在 Java 中进行热重载以加快开发速度,那么你真正需要的是 JRebel。它的热重载将会相当轻松。

注意: 无论如何,都不要为你的 Java 应用程序使用 JRebel (或任何热部署)。


热重载的哪个定义是不好的?[1.重新加载应用程序而无需重新启动整个服务器(可能包含多个应用程序)。2.在文件更改时自动执行#1。] 当然,您可以在生产中不使用#2,但您可能需要#1。 - Bart van Heukelom

0
如果你使用POJOs而不是EJBs,Seam框架应该在你的列表中。

0

如果您想编辑Java(控制器,模型)代码并在不重启Web服务器的情况下立即查看更改,可以使用scooter。顺便说一句,它内置的文件浏览器工具允许您通过浏览器编辑(编译)代码。浏览器可能无法作为IDE,但它可以帮助您远程开发应用程序。


0

有一个新的工具出现了,叫做RelProxy,它是开源的,虽然不像JRebel那样先进,但它可以用于在运行时自由更改代码子集,并重新加载它,几乎没有性能损失,并且无需上下文重新加载(没有会话丢失),无论是在开发还是生产中都可以使用。


-1
在eclipse中开发struts(2)应用程序时,只要成功编译文件并保存,它也会自动重新加载。但是,每次重新加载时都会丢失会话,这有点让人烦恼。

2
这只是由IDE触发的应用程序服务器中应用程序的自动重新部署。 - Anton Arhipov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接