有没有人曾尝试将 JRebel 与 Mule 一起使用而不是典型的应用程序服务器?如果是,您能描述一下您的经历吗?
据我所知,目前,Mule 还没有得到 JRebel 团队的官方支持。但是,我想知道是否有一些解决此限制的方法。
最佳答案
虽然 Mule ESB 没有被 JRebel 正式支持,但我们找到了一个解决方法。首先,让我先声明:
- 截至目前,无法使用 JRebel 热部署 Mule XML 流是不可能的。然而,Mule 提供了自己的机制来实现同样的目标。因此,缺少 JRebel 对此的支持不会破坏交易。
所以,我们唯一可以热部署的就是Java类,这还是很受欢迎的。我们如何做到这一点?
首先在 $MULE_HOME/conf/wrapper.conf 中配置 JRebel 代理。在我们的例子中,所需的行是:
wrapper.java.additional.13=-javaagent:{path to jrebel.jar} wrapper.java.additional.14=-Xbootclasspath:{path to rebelboot.jar} wrapper.java.additional.16=-Drebel.remoting_plugin=true wrapper.java.additional.19=-Drebel.remoting_port={whatever}
这些是启动 JRebel 和 Mule 所需的 JVM 参数。参数的编号是任意的。
我们想在远程模式下使用 JRebel。您可以在 docs 中阅读有关此模式的信息.这就是 wrapper.java.additional.16=-Drebel.remoting_plugin=true
和 wrapper.java.additional.19=-Drebel.remoting_port={whatever}
的原因参数。
- 现在继续并通过执行 mule.bat 或 mule.sh 来启动 Mule,具体取决于您的环境(Windows 或 *nix)。 JRebel 应该从它开始。
- 将您的 Mule 应用程序放在 $MULE_HOME/apps 中。它们将被自动部署,从现在开始,它们的 .class 文件将由 JRebel 监控。
- 在您的 IDE 中,安装 JRebel 插件 并应用您的许可证。之后,将 JRebel 特性添加到您的项目中,并使用我们之前在
wrapper.conf
中定义的端口配置其远程服务器 URL。 - 对代码进行任何需要的更改并同步。它们应该成功地热部署到正在运行的 Mule 实例中。
关于java - 如何将 JRebel 与 Mule ESB 集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33131701/