2017-02-10 64 views
1

我有一个简单的Spring Boot应用程序,我注意到它重新加载更改,即使没有rebel.xml? 该文件的目的是什么?我是否必须生成rebel.xml以重新加载JRebel更改?

+0

AFAIK rebel.xml有2个目的:作为触发(只手表在包含该文件的文物变动)处理,作为配置( (重新)来源观看)。如果Spring Boot在没有rebel.xml的情况下发现更改,我想这不是JRebel的重新加载,因此如果没有JRebel代理,它也会运行。另请参阅[rebel.xml文档](https://manuals.zeroturnaround.com/jrebel/standalone/config.html)。 – Thomas

回答

0

JRebel远不止rebel.xml文件。

基本上,有3个不同的部分组成:

  • rebel.xml:定义范围是受“热插拔的IDE资源换言之:该文件控制哪些文件可以
  • rebel-remote.xml:可能需要告知使用JRebel代理程序的“远程服务器”有关适用于“热插拔”的“组件”
  • 然后当然:这个“远程服务器”本身的本质;因为这可能只是你本地启动的一个过程IDE;而且还可以在不同的机器上独立运行的JVM。

长话短说:似乎你开始使用这个工具而没有学习如何使用。因此,这里的重要答案是:去阅读手册。例如,开始here

+0

对于主场景,只有rebel.xml是必需的,除非编译器目标文件夹与加载资源的位置不同。当应用程序/服务器远程运行时,特定方案需要额外的rebel-remote.xml和远程服务器配置。 –

4

JRebel使用rebel.xml文件将您的classpath资源和servlet资源重新映射到build目录,以便在IDE中进行更改并构建类时,JRebel将检测该构建目录中的更改并重新加载更改的类。

无论rebel.xml文件如何,JRebel都会监视它可以在类路径中找到的所有目录。它不监视jar,war文件。 因此,如果使用JRebel启动jar文件并且没有rebel.xml文件,那么它将不会有任何目录进行监控,并且无法重新加载任何内容。

这就是为什么需要rebel.xml文件:

  1. 为了让JVM从构建目录
  2. 加载类要在rebel.xml添加目录到类路径,以便JRebel的加以监督

但是在很多情况下,当在IDE中运行独立应用程序时,IDE不会运行该jar文件,而是直接从build目录运行类并将构建目录添加到类路径中。

在这种情况下,正在运行的类已经在build文件夹中,因此它们可以重新加载,并且更改也发生在由JRebel监视的目录中。这样的设置不需要rebel.xml文件。 从IDE启动的爆炸Web应用程序有时也会发生同样的情况。

通过在命令行中运行应用程序,您可以检查应用程序是否也是这种情况。

首先使用JRebel运行Spring Boot jar文件,并且没有rebel.xml文件,您将看到重新加载不会发生。要查看重新加载,您需要生成rebel.xml文件并将其构建到jar中。

但是,如果将构建目录添加到类路径并运行该类,那么JRebel应该重新加载类而不需要rebel.xml文件。

你可以阅读更多关于rebel.xml文件从这里:https://manuals.zeroturnaround.com/jrebel/standalone/config.html

相关问题