Plugins administered by Hotswap agent are usually targeted towards a specific framework. For example Spring plugin uses agent services to:
- Modify root Spring classes to get Spring contexts and registered scan path
- Watch for any resource change on a scan path
- Watch for a hotswap of a class file within a scan path package
- Reload bean definition after a change
- … and many other
Java frameworks plugins:
- CXF (3.x) - redefine JAXRS resource after resource class redefinition, reinject instance if integrated with Spring and CDI (Weld/OWB).
- Deltaspike (1.x, Jakarta: 2.x) - messages, ViewConfig, repository, proxy reloading.
- ELResolver 2.2 (JuelEL, Appache Commons EL, Oracle EL 3.0)- clear ELResolver cache on class change. Support hotswap for #{…} expressions.
- FreeMarker - clear the Apache Freemarker beans class-introspection cache on class definition change.
- Hibernate v3 (3.x) - Reload Hibernate configuration after entity create/change.
- Hibernate v4,v5 (4.x, 5.x, Jakarta: 5.5 - 6.x) - Reload Hibernate configuration after entity create/change.
- iBatis - iBatis configuration reload.
- IDEA - support for IntelliJ IDEA development in IDEA
- Jackson - clears Jackson internal caches when a class is redefined.
- Jersey 1 - reload Jersey1 container after root resource or provider class definition or redefinition.
- Jersey 2 - reload Jersey2 container after root resource or provider class definition or redefinition.
- JSF (Mojarra, MyFaces) - support for application resource bundle changes (properties files).
- Logback - Logback configuration reload.
- Log4j2 - Log4j2 configuration reload.
- MyBatis (3.5) - reload configuration after mapper file changes
- MyBatis-Plus (3.2 - 3.5) - reload MyBatis-Plus configuration after mapper file changes.
- OmniFaces - support for ViewScoped beans reinjection/reloading.
- OpenWebBeans (CDI) (1.x, 2.x) - reload bean class definition after class definition/change. Beans can be reloaded according strategy defined in property file. Jakarta: 4.x.
- OsgiEquinox - Hotswap support for Eclipse plugin or Eclipse platform development.
- RestEasy (2.x, 3.x) - Cleanups and registers class redefinitions.
- Spring (3.x - 7.0) - Reload Spring configuration after class definition/change.
- Spring Boot - reload Spring Boot after a change of
application.properties/application.yaml. - Sponge (11) - register newly added listeners of a changed listener class.
- Thymeleaf (3.0) - clear the template cache when a template is modified.
- Vaadin (up to 25.x) - Update routes, template models and in practice anything on the fly.
- WebObjects - Clear key value coding, component, action and validation caches after class change.
- Weld (CDI) (2.2, 2.3, 3.x, Jakarta: 5.x) - reload bean class definition after class definition/change. Beans can be reloaded according strategy defined in property file.
- Velocity - enhance Spring’s
VelocityEngineFactory. - Wicket - clear wicket caches if property files are changed
- WildFlyELResolver - Clear BeanELResolver after any class redefinition.
- ZK (5x-7x) - ZK Framework (http://www.zkoss.org/). Change library properties default values to disable caches, maintains Label cache and bean resolver cache.
Servlet containers and application servers plugins:
- GlassFish - support for the GlassFish server (GlassFish 7).
- JBossModules - add extra class path to JBoss’s module class loader. (Wildfly)
- Jetty - add extra classpath to the app classloader. All versions supporting WebAppContext.getExtraClasspath should be supported.
- Tomcat (7.x - 9.x) configure Apache Tomcat with extraClasspath property.
- Undertow - add extra classpath, watchResources and webappDir to the undertow’s resource manager.
- Weblogic - add extra classpath to the app classloader.
JVM plugins - hotswapping enhancements:
- AnonymousClassPatch - Swap anonymous inner class names to avoid not compatible changes.
- ClassInit - initializes new static members/enum values after class/enum redefinition and keeps surviving static values. (Fix of known DCEVM)
- Hotswapper - with
autoHotswap=true, watch for any class file change and reload (hotswap) it on the fly (Instrumentation API, or JPDA withautoHotswap.port). - JDK - clears
java.beans.Introspectorand serialization caches of the JDK after class redefinition. - Proxy (supported com.sun.proxy, CGlib) - redefines proxy classes that implement or extend changed interfaces or classes.
- WatchResources - support for the
watchResourcesconfiguration property.