-
values
-
background
- classes can not be changed if it was loaded into container(jvm)
-
新增/修改方法的时候,产生一个新的类,并且关联到那个holder上去,从调用的层面上来看,就实现了“动态”改变一个类的行为
-
weakness
- performance lots of memory
- origin Java SDK classes can not use this
- 如果使用java的反射机制,这种机制和原来的类结构是完全不一样的,现在越来越多的类库或者框架都很依赖反射的,这是一个大的问题。
-
env
- export JAVA_OPTS="-Xmx512M -XX:PermSize=256m -XX:MaxPermSize=512m -Djava.awt.headless=true"
export JREBEL_HOME=/Applications/ZeroTurnaround/JRebel
export MAVEN_OPTS="$JAVA_OPTS -noverify -javaagent:$JREBEL_HOME/jrebel.jar"
- /etc/launchd.conf setenv M2_HOME /usr/share/apache-maven-3.0.3
-
config
-
for jetty
- <plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.10</version>
<configuration>
<scanIntervalSeconds>0</scanIntervalSeconds>
</configuration>
</plugin>
- other config may make jetty compile and deployed auto
-
different between hot swap
- ToDo:java.lang.instrument
-
hot swap
- HotSwap允许将JVM中的类定义替换为新的类定义,这就允许开发人员在debug时,将修改过的class替换JVM中旧有的class,无需重新启动服务器。不过,目前HotSwap只支持对方法body的修改,不支持对类和方法签名的修改(比如修改类名,方法名,方法参数等)
- http://zeroturnaround.com/blog/reloading_java_classes_401_hotswap_jrebel/
-
Working with ds
- set project path use module compile output path
- consumer-search/core/ds/bin
- run gradle reaMakeDev to generate rebel,xml