有沒有人有時試過用Mule而不是典型的應用服務器來使用JRebel?如果是這樣,你能描述一下你的經歷嗎?如何將JRebel與Mule ESB集成?
據我所知,目前,Mule沒有得到JRebel團隊的正式支持。但是,我想知道是否可以解決這個限制。
有沒有人有時試過用Mule而不是典型的應用服務器來使用JRebel?如果是這樣,你能描述一下你的經歷嗎?如何將JRebel與Mule ESB集成?
據我所知,目前,Mule沒有得到JRebel團隊的正式支持。但是,我想知道是否可以解決這個限制。
儘管Mule ESB並未得到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的所需的JVM paremeters。參數的編號是任意的。
我們想在遠程模式下使用JRebel。您可以在docs中閱讀關於此模式的信息。這就是wrapper.java.additional.16=-Drebel.remoting_plugin=true
和wrapper.java.additional.19=-Drebel.remoting_port={whatever}
參數的原因。
wrapper.conf
中定義的端口配置其遠程服務器URL。當我表示的點配置,我在Mule's控制檯下一個異常:
啓動一個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/>
當我測試,我注意到您需要在文件wrapper.conf中添加下列屬性:
wrapper.java.additional.18 = -Drebel.log = true
wrapper.java.additional.19 = -Drebel.log.file =/mypath中/ LOGNAME。日誌
這些JRebel運行正常。總之,當我們使用特定的端口時,有必要啓用JRebel的日誌記錄。
更多信息,您在第6步:
https://zeroturnaround.com/software/jrebel/learn/remoting/setting-up-jrebel-remoting-with-intellij-idea-and-tomcat/
JRebel的配置在騾子是非常相似的configuration in tc Server。
您需要添加JRebel的代理爲wrapper.java.additional.*
財產$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 agentjrebel.jar文件。
- 提供的一些JVM參數不需要配置。首先,JVM參數「wrapper.java.additional.15 = -agentpath:{jrebel64.dll的路徑}」不是必須的,因爲您已經配置了javaagent「wrapper.java.additional.13 = -javaagent:{path to jrebel 。罐}」。其次,參數「wrapper.java.additional.20 = -Drebel.resource_cache = true」不是必需的,因爲默認值爲true。 –
我將更新您的更正答案。非常感謝。 :) – Enrique