我正在尝试让 JRebel 与一个相当大的企业 Web 应用程序一起工作,该应用程序使用 Ant + Ivy 进行构建/依赖管理、Spring 2.0 框架和 Spring MVC,所有这些都必须构建并部署到 Tomcat。
我在 Tomcat 和项目本身上启用了 JRebel。没有启用远程处理,因为我假设如果 Tomcat 和项目在同一台机器上,则不需要这样做。当我从 STS 中启动 Tomcat 服务器时,JRebel 似乎加载正常并且我没有看到(明显的)重大错误。
但是,对项目的任何更改都不会影响部署,而且我在控制台中看不到任何 JRebel 消息。该项目本身是一个有点不标准的布局,没有传统的 WEB-INF/src 结构。当我在 STS 中启用 JRebel 时,它只是在根目录中转储了一个 rebel.xml 文件。
供引用,该项目基于此代码库并具有相同的一般结构:https://github.com/NCIP/c3pr/tree/master/codebase
虽然 JRebel 指南很好,但它们只展示了 JRebel 用于非常简单的项目,并没有深入探讨该服务的确切工作原理。
非常感谢任何建议、资源或想法。
谢谢
最佳答案
您是否真的重新编译(无论您使用 Eclipse 还是 javac)您更改的那些类?检查您是否在“项目”菜单下启用了“自动构建”可能是个好主意。
JRebel 的工作方式是它实际上监视编译器输出文件夹(通常是“bin”文件夹或“build/classes”或类似的东西)。 这个文件夹(或多个文件夹)在 rebel.xml 文件中指定,并且该文件必须在您运行应用程序时位于应用程序的类路径中(WEB-INF/classes 或 jar 文件根目录或分解目录中)。
您能确定 rebel.xml 实际上在应用程序类路径中吗? 此外,您应该会在控制台中看到类似以下内容的消息: “JRebel:将监视目录 '/path/to/project/bin' 的更改。”。
此外,如果您在控制台中看到 JRebel 横幅,检查是否找到许可证很有用(如果未找到,则 JRebel 将无法工作)。
有时,当您的 Eclipse 将类编译到“bin”文件夹而您的构建脚本将它们编译到“build/classes”下并且在 rebel.xml 文件中仅指定其中一个位置时,有时也可能存在一些不匹配。在这种情况下,JRebel 将只监视其中一个,这也很困惑。
希望最好的, 西格玛
关于spring - 使用 Spring MVC 将 JRebel 与自定义 Ant/Ivy/Tomcat Web 应用程序集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21034443/