Supported frameworks

JRebel is integrated into various frameworks using isolated plugins. The integration plugins can be enabled or disabled by adding this JVM parameter:

-Drebel.[plugin_id]=false/true

For example: to disable the EclipseLink plugin, add the JVM argument

-Drebel.eclipselink_plugin=false

Disabling a plugin disables the extra features listed below. The framework and JRebel’s core features (class reloading) will still function. Disabling a plugin might be useful when it causes problems in your environment. Report these incidents via support@zeroturnaround.com. This way we can improve our integration and product.

Note

This list was last updated on March 4th 2015.


Plugins and frameworks

The following is a listing of all supported frameworks and plugins.

ADF Core

  • Plugin ID - adf_core_plugin
  • Features - Allows the ADF page definition files to be reloaded.

ADF Faces

  • Plugin ID - adf_faces_plugin
  • Features - Patches the ADF implementation of the JSF life cycle, allowing the Mojarra plugin to do the rest.

AspectJ

  • Plugin ID - aspectj_plugin
  • Features - Enables the load-time weaving of AspectJ aspects. This might alter class loading and initialization order during startup.

ATG

  • Plugin ID - atg_plugin
  • Features - Reinitializes ATG Nucleuses when the Nucleus elements Java class file has changed. Re-reads the values from the properties file in the reloading process. When the Nucleuses have new connections, they will be initialized. If they have new properties values, those will also be updated.

Axis2

  • Plugin ID - axis2_plugin
  • Features - Adds, removes and reloads web services defined in the services.xml file. Also adds, removes and reloads web services defined using JAXWS annotations.

Axis2 WAS

  • Plugin ID - axis2_was_plugin
  • Features - Adds, removes and reloads web services defined using JAXWS annotations.

BVal

  • Plugin ID - bval_plugin
  • Features - Reload changes to MetaBean definitions when the underlying validated class or its composing validation annotations change.

Camel

  • Plugin ID - camel_plugin
  • Features - Updates the CamelContext when one or more of its associated RouteBuilder classes are changed.

CaptainCasa

  • Plugin ID - captaincasa_plugin
  • Features - Disables the CaptainCasa layout buffer, making JSP reloading work out of the box.

Click

  • Plugin ID - click_plugin
  • Features - Reloads the menu definition from menu.xml.

CXF

  • Plugin ID - cxf_plugin
  • Features - Tracks the changes in the configuration of Apache CXF REST/WS applications.

DeltaSpike

  • Plugin ID - deltaspike_plugin
  • Features - Prevents exceptions during class reloading.

Ebean

  • Plugin ID - ebean_plugin
  • Features - Integrates with the Ebean load time enhancement.

Eclipse RCP

  • Plugin ID - eclipse_plugin
  • Features - Refreshes plugins when plugin.xml changes.

Facelets

  • Plugin ID - facelets_plugin
  • Features - Turns on automatic reloading of Facelets for Facelet development mode. Also provides reloading of Facelet tag libraries.

FreeMarker

  • Plugin ID - This plugin is integrated.
  • Features - Reloads BeanWrapper. Remedies the flaws of FreeMarker’s own JRebel integration.

GlassFish EJB

  • Plugin ID - glassfish_plugin
  • Features - Supports adding new EJBs on the fly and altering the existing EJB interfaces.

Groovy

  • Plugin ID - groovy_plugin
  • Features - Refreshes Groovy class metadata and call site cache upon class change.

Guice

  • Plugin ID - guice_plugin
  • Features - Supports adding new components and injecting new implicit dependencies. Wires changed dependencies in Guice singletons.

GWT

  • Plugin ID - gwt_plugin
  • Features - Enables reloading of client-side classes in hosted (development) mode. Server-side classes should be reloaded without the plugin.
  • Limitations - Native JavaScript methods may not be supported.

Hibernate

  • Plugin ID - hibernate_plugin
  • Features - Enables configuration reloading (rebuilding of Hibernate’s SessionFactory) when updates are detected to underlying configuration resources (either XML mapping files or model classes with JPA annotations).
  • Limitations - The SessionFactory rebuilding works with integrations, along with various SessionFactory builders (for example HibernatePersistence or LocalSessionFactoryBean). All classes that create SessionFactory instances have to be handled separately. If the user creates SessionFactory in his own code, the integration may not capture that.

Hibernate Validator

  • Plugin ID - hibernate_validator_plugin
  • Features - Enables adding/editing/removing Bean Validation constraint annotations on bean classes and parent constraint annotation types (i.e., supports composite constraints). Enables creating/editing custom Bean Validation constraint annotation types.
  • Limitations - Does not alter database schema. Changes to META-INF/validation.xml are not propagated. Changes to XML constraint mappings are not propagated (initial mappings are retained).

HK2

  • Plugin ID - hk2_plugin
  • Features - Supports adding new dependencies to services (field, constructor) and as well as PostConstructor annotated methods. Binder classes (subclass of AbstractBinder) are reloaded on changes).

iBatis

  • Plugin ID - ibatis_plugin
  • Features - Refreshes changes in iBatis SQL maps.
  • Limitations - Only supports refreshing SQL maps and not anything else. Does not support mappingLocations in Spring SqlMapClientFactoryBean.

Jackson 1.x

  • Plugin ID - jackson_plugin
  • Features - Makes Jackson pick up changes (including changed annotations) to classes that it serializes to JSON or de-serializes from JSON. This is done by clearing JSON (de)serializer caches for changed classes.
  • Limitations - Only serializer caches are updated. Doesn’t update de-serializer caches.

Jackson 2.x

  • Plugin ID - jackson2_plugin
  • Features - Makes Jackson pick up changes (including changed annotations) to classes that it serializes to JSON or de-serializes from JSON. This is done by clearing JSON (de)serializer caches for changed classes.
  • Limitations - Only serializer caches are updated. Doesn’t update de-serializer caches.

Jasypt

  • Plugin ID - jasypt_plugin
  • Features - Allows reloading Jasypt configurations. Defeats password cleaning.

JAXB

  • Plugin ID - jaxb_plugin
  • Features - Enables support for reloadable classes in JAXBContext. Marshaller & Unmarshaller also pick up class changes immediately.

JBoss AOP

  • Plugin ID - jbossaop_plugin
  • Features - Allows for load-time weaving of JBoss AOP aspects.
  • Limitations - The JRebel agent must be placed before JBoss AOP agent in JVM arguments.

JBoss EJB

  • Plugin ID - jboss_plugin
  • Features - Supports adding new EJBs on the fly, altering existing EJB interfaces and injecting new @EJB fields.

JBoss 7

  • Plugin ID - jboss7_plugin
  • Features - Supports adding new EJBs on the fly, altering existing EJB interfaces and injecting new @EJB fields. set -Drebel.jboss7_plugin.reload_ejb=false to disable adding & injecting new EJB beans. Set -Drebel.jboss7_plugin.add_new_packages=false to disable adding EJB beans with new packages.

Jersey

  • Plugin ID - jersey_plugin
  • Features - Supports reloading the configuration of Jersey 1.x applications.

Jersey 2

  • Plugin ID - jersey2_plugin
  • Features - Support for Jersey 2 configuration reloading.

JRuby

  • Plugin ID - jruby_plugin

Liferay

  • Plugin ID - liferay_plugin
  • Features - Enables the reloading of JSP hooks, reloading of portlet properties and XML configuration files.

Liferay status

  • Plugin ID - liferay_status_plugin

Lift

  • Plugin ID - lift_plugin
  • Features - Makes Lift pick up more changes in LiftScreens, Wizards, RestHelpers and MVCHelpers. This is done by re-instantiating any singletons that extend the above-mentioned classes. Keep in mind that the singletons you write that extend the mentioned Lift classes may be initialized multiple times when using this plug-in.
  • Limitations - Some changes in closures/anonymous functions will still cause problems that require restarts.
  • Additional information - First-class Scala Lift support in JRebel

Log4j

  • Plugin ID - log4j_plugin
  • Features - Remembers the configuration file used for Log4j initialization, monitors it for updates and makes Log4j reinitialize itself when this file is changed. Includes a third party contribution from Julien Richard.

Log4j 2

  • Plugin ID - log4j2_plugin
  • Features - Remembers the configuration file used for Log4j 2 initialization, monitors it for updates and makes Log4j 2 reinitialize itself when this file is changed..

Logback

  • Plugin ID - logback_plugin
  • Features - Remembers the configuration files that Logback loaded its configuration from (e.g. logback.xml). When updates to those files are detected, the framework configuration is rebuilt.

Magnolia

  • Plugin ID - magnolia_plugin
  • Features - Updates content2bean and node2bean mappings on class changes. Makes Magnolia root path ignore redirected locations in rebel.xml.

Mentawai

  • Features - Mentawai supports integration with JRebel natively.

Metro (JAX-WS)

  • Plugin ID - metro_plugin
  • Features - Keeps track of sun-jaxws.xml and class changes, invoking deploymentDescriptorParser to rebuild the mappings. Has some support for recreating endpoints defined as spring beans. Updates Metro’s dynamic servlets on servlet 3.0 environments.

Mojarra

  • Plugin ID - mojarra_plugin
  • Features - Reloads JSF configuration and reconfigures managed beans. Refreshes Mojarra annotation and XML-based configuration. Turns on Mojarra development mode and Facelet refreshing.

Mustache

  • Plugin ID - mustache_plugin
  • Features - Reloads com.github.spullara.mustache templates to Mustache objects at runtime.

MyBatis

  • Plugin ID - mybatis_plugin
  • Features - Reloads modified SQL maps.

MyFaces

  • Plugin ID - myfaces_plugin
  • Features - Reloads JSF configuration and reconfigures managed beans.

OpenJPA

  • Plugin ID - openjpa_plugin
  • Features - Reloads an EntityManagerFactory when any of the mapping files or annotated entity classes change. When an entity class is reloaded, the corresponding cache entries are flushed.

OpenWebBeans

  • Plugin ID - openwebbeans_plugin
  • Features - Refreshes the OpenWebBeans class metadata and wires changed dependencies on class change.

PrettyFaces

  • Plugin ID - prettyfaces_plugin
  • Features - Enables prettyfaces-config.xml reloading.

RESTEasy

  • Plugin ID - resteasy_plugin
  • Features - Enables configuring through context-param javax.ws.rs.Application. Configuring through listener (org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap); configuring through filter (org.jboss.resteasy.plugins.server.servlet.FilterDispatcher); configuring through servlet (org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher). Only configuring an Application class is supported (a class that extends javax.ws.rs.core.Application – it is a standard JAX-RS way). Enables reloading of JAX-RS annotated methods (adding/removing/changing).
  • Limitations - No RestEasy specific/exotic ways of configuration is supported.

RESTlet

  • Plugin ID - restlet_plugin
  • Features - Makes Application of RESTlet framework as a reloadable class.

Scalate

  • Plugin ID - scalate_plugin
  • Features - Allows Scalate templates to reference new fields and methods in classes.

Seam 2

  • Plugin ID - seam_plugin
  • Features - Supports loading new Seam 2 component definitions, either from annotated Java classes or from components.xml. Renaming or removing existing definitions is not supported. Refreshes Seam component metadata and interceptors on class change. Supports reloading Seam method metadata annotations like @Observer, @RaiseEvent, etc. Supports reloading navigation files (pages.xml, any.page.xml) outside Seam’s development mode (supported for Seam 2.1.x and 2.2.x).
  • Limitations - It is recommended to turn off Seam’s development mode while using Seam with JRebel.

Seam 3

  • Plugin ID - seam3_plugin
  • Features - This plugin provides some minor Seam3 compatibility fixes.

Seam Wicket

  • Plugin ID - seam_wicket_plugin
  • Features - Allows Seam Wicket integration load time-weave Wicket components.

Solder

  • Plugin ID - solder_plugin
  • Features - Prevents exceptions during class reloading.

Spring Bean

  • Plugin ID - spring_plugin
  • Features - Monitors Spring bean definitions in xml-files, reloads them when changed. Also monitors packages that could contain Spring beans defined by annotations. If new beans (or changes to old ones) are seen, they are reloaded. Forces Spring to redo the bean auto-wiring and singleton bean configuration. Disables caches for properties that are replaced by property placeholders in Spring’s XML configuration files. When underlying properties files have changed, new values will be inserted upon the next reloading of these Spring beans.

Spring Core

  • Plugin ID - spring_plugin
  • Features - Provides Spring Core OSGi bundle support.

Spring Data

  • Plugin ID - spring_data_plugin
  • Features - Reloads Spring Data repositories and persistent entities.

Spring MVC

  • Plugin ID - spring_plugin
  • Features - Reloads URL mappings (defined by @RequestPath annotations) when Spring beans have changed. Before processing a request, Spring MVC plugin tells the Spring core plugin to check/reload the beans; if any bean was reloaded, Spring core plugin sends notification to Spring MVC plugin, which then triggers URL mappings rebuilding. Also supports reloading other annotations: @ExceptionHandler, @ModelAttribute, @RequestParam. The plugin ID intentionally collides with the Spring core plugin. Spring MVC integration depends on Spring core integration and cannot be enabled independently.

Spring Security

  • Plugin ID - spring_plugin
  • Features - Handles adding/editing of annotation-based security checks. Also handles adding/modifying/removing of blocks in XML configuration files.

Spring Webflow

  • Plugin ID - spring_webflow_plugin
  • Features - Turns on the hot-loading of flow definitions even in production mode.

Spring WS

  • Plugin ID - springws_plugin
  • Features - Reloads endpoint mappings when classes have changed (annotation-driven configuration) or when a new endpoint is added in via XML (XML conf). Republishes wsdl after xsd is changed (when using dynamicWsdlDefinition).

Stripes

  • Plugin ID - stripes_plugin
  • Features - Fixes Stripes’s annotations metadata caching to work with reloading. Classes that have fields with @Validate annotations will be removed from caches and re-processed by Stripes after being reloaded by JRebel. Fixes UrlBinding caching for ActionBeans. UrlBindings configured with the @UrlBinding annotations are reloaded by overriding the behaviour of the NameBasedActionResolver. Supports stripes-guice and stripes-guicer plug-ins for instantiating Guice ActionBeans. Includes third party contribution by Andreas Knifh.

Struts 1

  • Plugin ID - struts1_plugin
  • Features - Reloads full Struts configuration by forcing Struts to re-create it’s ActionServlet when updates to underlying configuration XML-files are detected (XML configuration files are remembered when Struts is initializing itself). Also reloads Struts message resources by emptying the message caches when there are any updates to message resources (message resource files are remembered when Struts is initializing itself).

Struts 2

  • Plugin ID - struts2_plugin
  • Features - Keeps track of XML configuration file updates and triggers the Struts2 configuration reloading when there are any. Keeps track of annotated action-classes. If the set of action-classes has changed or there are changes to any of the action-classes, trigger configuration reloading.

Tapestry 4

  • Plugin ID - tapestry4_plugin
  • Features - Enables adding new listener methods to Tapestry’s Page classes. This is a third party contribution.

Thymeleaf

  • Plugin ID - thymeleaf_plugin
  • Features - Disables the cache mechanism completely.

Tiles 1

  • Plugin ID - tiles1_struts_plugin
  • Features - Enabled reloading of Tiles definitions from XML configuration files. This is implemented by recreating the DefinitionsFactory instance when the underlying XML configuration resources have changed.
  • Additional information - JRebel+Tiles tutorial

Tiles 2

  • Plugin ID - tiles2_plugin
  • Features - In Tiles 2.0.x and 2.1.x, monitors XML-files containing Tiles definitions and makes Tiles reload them when there are any changes to those files. For Tiles 2.2.x and 3.0.x, just turns on Tiles own definitions monitoring and lets it do the job itself. Tested and working also when set up through Spring.
  • Additional information - JRebel+Tiles tutorial

Undertow

  • Plugin ID - undertow_plugin
  • Features - Undertow integration with JRebel.

Undertow Servlet

  • Plugin ID - undertow_servlet_plugin
  • Features - Undertow integration with JRebel.

Vaadin

Vaadin CDI utils

  • Plugin ID - vaadin_cdiutils_plugin
  • Features - Prevents the creation of duplicate observer methods by org.vaadin.virkki.cdiutils.mvp.MvpExtension.

Velocity

  • Plugin ID - velocity_plugin
  • Features - Velocity has a method cache for its known beans that prevents changes to those beans (new getter methods) to become accessible from associated Velocity templates. The plugin remedies this by triggering a cache rebuild each time a bean accessed by velocity has been reloaded by JRebel. The implementation is fine-grained: the cache will be emptied only for the bean that was reloaded.

VRaptor

  • Plugin ID - vraptor_plugin
  • Features - Supports adding, modifying and removing controllers with @Resource annotation. Reloads methods marked with @GET, @POST, @DELETE, @PUT, @Path annotations. Works on Guice, Pico and Spring containers.

WebObjects

  • Plugin ID - webobjects_plugin
  • Features - Third party contribution by Quinton Dolan.

WebLogic

  • Plugin ID - weblogic_plugin
  • Features - Supports adding new methods to EJB interfaces.

WebSphere 8.5.5 EJB

  • Plugin ID - websphere855_plugin
  • Features - Supports adding new methods to EJB interfaces.

WebSphere EJB

  • Plugin ID - websphere_plugin
  • Features - Supports adding new methods to EJB interfaces.

Weld

  • Plugin ID - weld_plugin
  • Features - Refreshes the Weld class metadata and wires changed dependencies on class change.

Weld 2

  • Plugin ID - weld2_plugin
  • Features - Refreshes the Weld class metadata and wires changed dependencies on class change.

Wicket

  • Plugin ID - wicket_plugin
  • Features - Automatically enables Wicket’s HTML template reloading. Tells Spring to try refreshing its context when Spring bean lookup operations fail. Listens for class reload events. When received, cleans Wicket’s class metadata caches for the reloaded classes which cache the @SpringBean annotations, forcing Wicket to reload the metadata and allowing the annotations to take effect.
  • Additional information - JRebel Wicket tutorial.

WildFly

  • Plugin ID - wildfly_plugin
  • Features - WildFly Undertow extension integration.

Wink

  • Plugin ID - wink_plugin
  • Features - Reloads changes in configuration files and application, resource and provider classes.

ZK Framework

  • Plugin ID - zk_plugin
  • Features - Integrates with the ZK Framework caches.