I use JRebel to speed up my development. It is a really impressive tool allowing to develop full blended Java EE application as you would develop in PHP. No redeploy, at the cost of a little slow-down in development mode. The tool does what it says, and it’s worth the price ! The JRebel plugin for maven does the job very well by generating the
rebel.xml file that does the magic.
What’s the deal ?
Although JRebel is an awesome tool, there is some magic within, and, in special corner cases it might not work as expected. In my case I have a quite typical web application split in multiple parts:
- a web application (war)
- an ejb module (jar)
- other modules not involved in my problem
The web application includes, in its
WEB-INF/lib folder, the ejb-client artifact of my ejb module. To make it clear, ejb-client artifact is typically the jar containing the interfaces to be used by the client module(s).
The problem I had was that JRebel magic was reloading too much things : in fact, it reloaded classes even if they were not in the ejb-client. My application container (Glassfish 3.x) was not very keen on this thing. I opened a thread on ZeroTurnAround’s forum and the answer I got is that I have to find a way to ignore files in my ejb-client module. By digging in maven-ejb-plugin, I didn’t find anything to rename a file in the ejb-client module, and I didn’t find a parameter to pass to JRebel to specify which filenames can contain its configuration.