是否有人试图将JRebel与Mule一起使用而不是典型的应用程序服务器?如果是这样,你能描述一下你的经历吗?
据我所知,目前,Mule并未得到JRebel团队的正式支持。但是,我想知道这个限制是否可能有一些解决方法。
答案 0 :(得分:4)
虽然JRebel没有正式支持Mule ESB,但我们找到了一种解决方法。首先,让我首先说明:
因此,我们唯一可以热部署的是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}
这些是与Mule一起启动JRebel所需的JVM参数。参数的编号是任意的。
我们希望在远程模式下使用JRebel。您可以在docs中了解此模式。这就是wrapper.java.additional.16=-Drebel.remoting_plugin=true
和wrapper.java.additional.19=-Drebel.remoting_port={whatever}
参数的原因。
wrapper.conf
中定义的端口配置其远程服务器URL。答案 1 :(得分:3)
当我测试时,我注意到你需要在文件wrapper.conf中添加下一个属性:
wrapper.java.additional.18 = -Drebel.log =真
wrapper.java.additional.19 = -Drebel.log.file = / mypath中/ LogName.log
有了这些,JRebel就能正常运行。总之,当我们使用特定端口时,必须启用JRebel的日志记录。
更多信息,请查看步骤6:
https://zeroturnaround.com/software/jrebel/learn/remoting/setting-up-jrebel-remoting-with-intellij-idea-and-tomcat/
答案 2 :(得分:1)
当我配置了指示的点数时,我在Mule的控制台中有下一个例外:
启动JVM ......
2015-10-27 11:00:27 JRebel: WARN You are running JRebel using the -javaagent option on a system where -agentpath is supported.<br/>
2015-10-27 11:00:29 JRebel: Monitoring Log4j configuration in 'file:/C:/Dev/Mule%20-%2002-esb-mule-ee%20-%203.4/conf/log4j.properties'.<br/>
Exception in thread "main" java.lang.NoSuchMethodError: javax.xml.parsers.SecuritySupport$1: method <init>()V not found<br/>
at javax.xml.parsers.SecuritySupport.getContextClassLoader(Unknown Source)<br/>
at javax.xml.parsers.FactoryFinder.find(Unknown Source)<br/>
at javax.xml.parsers.DocumentBuilderFactory.newInstance(Unknown Source)<br/>
at com.opensymphony.module.propertyset.config.PropertySetConfig.<init>(PropertySetConfig.java:53)<br/>
at com.opensymphony.module.propertyset.config.PropertySetConfig.getConfig(PropertySetConfig.java:113)<br/>
at com.opensymphony.module.propertyset.PropertySetManager.getInstance(PropertySetManager.java:32)<br/>
at com.opensymphony.module.propertyset.PropertySetManager.getInstance(PropertySetManager.java:22)<br/>
at com.mulesource.licm.pref.MulePropertySetPreferences.loadPropertySet(MulePropertySetPreferences.java:208)<br/>
at com.mulesource.licm.pref.MulePropertySetPreferences.<clinit>(MulePropertySetPreferences.java:50)<br/>
at com.mulesource.licm.pref.MulePreferencesFactory.<clinit>(MulePreferencesFactory.java:19)<br/>
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)<br/>
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)<br/>
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)<br/>
at java.lang.reflect.Constructor.newInstance(Unknown Source)<br/>
at java.lang.Class.newInstance(Unknown Source)<br/>
at java.util.prefs.Preferences.factoryOrig(Unknown Source)<br/>
at java.util.prefs.Preferences.userRoot(Unknown Source)<br/>
at com.mulesource.licm.impl.TrueLicenseHelper.createLicenseManagerParameters (TrueLicenseHelper.java:338)<br/>
at com.mulesource.licm.impl.TrueLicenseHelper.createLicenseManagerParameters(TrueLicenseHelper.java:330)<br/>
at com.mulesource.licm.impl.TrueLicenseHelper.<init>(TrueLicenseHelper.java:120)<br/>
at com.mulesource.licm.impl.MuleLicenseManager.<init>(MuleLicenseManager.java:25)<br/>
at com.mulesource.licm.LicenseManagementFactory.createLicenseManager(LicenseManagementFactory.java:48)<br/>
at org.mule.module.boot.LicenseKeyHandler.<init>(LicenseKeyHandler.java:43)<br/>
at org.mule.module.reboot.MuleContainerBootstrap.handleLicenseKey(MuleContainerBootstrap.java:192)<br/>
at org.mule.module.reboot.MuleContainerBootstrap.main(MuleContainerBootstrap.java:62)<br/>
答案 3 :(得分:0)
Mule中的配置JRebel与configuration in tc Server非常相似。
您需要在wrapper.java.additional.*
中添加 JRebel代理作为$MULE_HOME/conf/wrapper.conf
媒体资源:
wrapper.java.additional.10 = -agentpath:[C:\路径\至] LIB \ jrebel64.dll
如果您使用的是Java 7及更高版本,则使用代理:
Windows 64-bit JDK jrebel64.dll
Windows 32-bit JDK jrebel32.dll
Mac OS X 64-bit JDK libjrebel64.dylib
Mac OS X 32-bit JDK libjrebel32.dylib
Linux 64-bit JDK libjrebel64.so
Linux 32-bit JDK libjrebel32.so
如果您使用Java版本6及更低版本,则需要使用legacy agent jrebel.jar 文件。