Hello All Dev Members,

Following up on the earlier `devreload` update (single `./gradlew ofbizDev
--no-watch-fs` command, Java method hot-swap, `services.xml` reload),
here's what's been added since:

1) Add a brand-new entity or view-entity to an existing `entitymodel.xml`
file, and it's picked up live, no restart needed.

2) Update an existing entity's or view-entity's fields, relations, or
definition in `entitymodel.xml`, and the change is reflected immediately
across every already-running delegator.

3) A broken save (invalid XML, a view-entity referencing a non-existent
member entity) is caught and logged clearly, and self-heals on the next
save, no restart needed even for a broken intermediate save.

4) Edit `entitygroup.xml` (entity to datasource-group mapping), and that's
picked up live too.

5) Optionally, missing tables/columns for a changed entity can also be
created automatically (`-Photreload.autoUpdateSchema=true`), off by default
since it's the one thing that writes to the database.

6) Edit any `config/*Labels.xml` file (UI labels, entity labels, etc.), and
the label bundle reloads on the next lookup, no restart.

7) Edit any `config/*.properties` file, and the new value is picked up on
the next read, same as labels.

8) Two settings remain restart-only since they're read once at class-load
time: `debug.properties`'s log levels and `security.properties`'s PBKDF2
iteration count.

9) The only real requirement is a DCEVM-patched JVM (JetBrains Runtime
bundled with IntelliJ works fine), pointed at via `DCEVM_HOME` or
`-PdcevmHome`.

10) It's a fully self-contained plugin under `plugins/devreload`, zero
footprint on `ofbiz-framework`, drop it in or remove it and nothing else
changes.

Full details, including what does and doesn't hot-reload and a
troubleshooting table, are in `plugins/devreload/README.md`.
https://github.com/apache/ofbiz-plugins/blob/trunk/devreload/README.md

To summarise: `devreload` is a dev-only OFBiz plugin that removes the
restart step from the edit-test loop. Run one command as mentioned above, and
Java, services.xml, entitydef, and labels/properties changes all go live in
under a second.

--
Kind Regards,
Ashish Vijaywargiya
Vice President of Operations
*HotWax Systems*
*Enterprise open source experts*
http://www.hotwaxsystems.com



On Fri, Jul 10, 2026 at 7:31 PM Ashish Vijaywargiya <
[email protected]> wrote:

> Thank you, Divesh and Arun.
>
> Today I merged the 'devreload' plugin into the plugins directory of the
> Apache OFBiz project.
>
> Here is my PR:
> https://github.com/apache/ofbiz-plugins/pull/316
>
> I have simplified most of the things; now, only a single gradle command
> can be run and edit a Java service/event method, a services.xml file, or
> add a brand-new method, and the change is live in under a second — no
> OFBiz restart is required.
>
> ./gradlew ofbizDev --no-watch-fs
>
> Note: You need to set the DCEVM_HOME before you run the above command.
> export DCEVM_HOME="/Applications/IntelliJ IDEA.app/Contents/jbr"
> (This path is from my laptop)
>
> I have also updated the README.md file with the latest information and the
> setting of DCEVM_HOME:
> https://github.com/apache/ofbiz-plugins/blob/trunk/devreload/README.md
>
> If someone is testing/using this plugin and facing issues, then I will
> provide quick assistance.
> Thank you.
>
> --
> Kind Regards,
> Ashish Vijaywargiya
> Vice President of Operations
> *HotWax Systems*
> *Enterprise open source experts*
> http://www.hotwaxsystems.com
>
>
>
> On Fri, Jul 10, 2026 at 2:18 PM Arun Patidar <[email protected]>
> wrote:
>
>> Hi Ashish,
>>
>> Contributing this feature as a separate plugin is safe and can be very
>> useful for developers.
>>
>>
>> Best regards,
>> Arun Patidar
>>
>>
>> On Tue, Jul 7, 2026 at 4:04 PM Ashish Vijaywargiya <
>> [email protected]> wrote:
>>
>> > Hello Jacques,
>> >
>> > It's already in my TODO list, I will take care of it soon. Thank you!
>> >
>> > --
>> > Kind Regards,
>> > Ashish Vijaywargiya
>> > Vice President of Operations
>> > *HotWax Systems*
>> > *Enterprise open source experts*
>> > http://www.hotwaxsystems.com
>> >
>> >
>> >
>> > On Tue, Jul 7, 2026 at 3:19 PM Jacques Le Roux via dev <
>> > [email protected]>
>> > wrote:
>> >
>> > > Hi,
>> > >
>> > > Should we not care about
>> > >
>> >
>> https://sonarcloud.io/project/issues?issueStatuses=OPEN%2CCONFIRMED&pullRequest=316&id=apache_ofbiz-plugins
>> > > ?
>> > >
>> > > Disclaimer: I did not get more than that.
>> > >
>> > > Jacques
>> > >
>> > > Le 07/07/2026 à 10:48, Divesh Dutta a écrit :
>> > > > I welcome this contribution as a plugin.
>> > > >
>> > > > Thanks
>> > > > --
>> > > > Divesh Dutta
>> > > > www.hotwaxsystems.com
>> > > >
>> > > > On Tue, Jul 7, 2026 at 1:17 PM Ashish Vijaywargiya <
>> > > > [email protected]> wrote:
>> > > >
>> > > >> Hello Gaetan,
>> > > >>
>> > > >> Thanks for taking the time to share your thoughts again, I really
>> do
>> > > >> appreciate the honest pushback.
>> > > >>
>> > > >> I have to admit, I'm still having trouble fully understanding the
>> > > reasoning
>> > > >> behind it. Why are we so hesitant to welcome a contribution like
>> this
>> > > into
>> > > >> the project? We're not making any changes to the framework itself,
>> > this
>> > > is
>> > > >> purely an addition to the plugins folder. I'd hope that kind of
>> > > >> contribution would be an easy one to accept. If something can
>> > genuinely
>> > > >> help someone in the community, even in a small way, I feel it's
>> worth
>> > > >> contributing rather than turning away.
>> > > >>
>> > > >> To lay out a bit more context on what "merging" would actually mean
>> > > here,
>> > > >> in case it helps:
>> > > >>
>> > > >> - No core framework functionality changes. devreload lives
>> entirely as
>> > > an
>> > > >> isolated component under plugins/devreload. The only framework-side
>> > > >> touchpoint is a small, reflective hook that safely no-ops when the
>> > > plugin
>> > > >> isn't present on the classpath - so a system that never installs
>> the
>> > > plugin
>> > > >> behaves exactly as it does today.
>> > > >>
>> > > >> - It's fully opt-in. Nothing changes for the default workflow.
>> Anyone
>> > > who
>> > > >> doesn't want this feature keeps using `./gradlew ofbiz` exactly as
>> > > before.
>> > > >> The hot-reload behavior is only reachable through a separate
>> command,
>> > > >> `./gradlew ofbizDev`, that a developer has to explicitly choose to
>> > run.
>> > > >>
>> > > >> - The plugins repo already exists to host supporting/optional
>> > components
>> > > >> that can benefit part of the community without obligating everyone
>> to
>> > > use
>> > > >> or maintain them. That's the model I'm following here, not a
>> proposal
>> > to
>> > > >> fold this into framework/ or make it a default dependency.
>> > > >>
>> > > >> On the gain/work ratio, I'd gently push back a little: the gain is
>> > real
>> > > for
>> > > >> anyone doing active OFBiz development without an IDE-based hot-swap
>> > > setup
>> > > >> (which is a non-trivial setup burden today, especially for
>> newcomers).
>> > > The
>> > > >> ongoing maintenance surface is small and self-contained, it's one
>> > plugin
>> > > >> directory that can be updated, deprecated, or removed
>> independently of
>> > > >> core, like any other plugin in that repo.
>> > > >>
>> > > >> I still believe this small plugin will be a valuable addition to
>> the
>> > > >> plugins directory and will benefit Apache OFBiz developers. With
>> that
>> > in
>> > > >> mind, I plan to commit the devreload component to the plugins
>> > directory
>> > > >> sometime later this week.
>> > > >>
>> > > >> --
>> > > >> Kind Regards,
>> > > >> Ashish Vijaywargiya
>> > > >> Vice President of Operations
>> > > >> *HotWax Systems*
>> > > >> *Enterprise open source experts*
>> > > >> http://www.hotwaxsystems.com
>> > > >>
>> > > >>
>> > > >>
>> > > >> On Tue, Jul 7, 2026 at 12:19 PM gaetan.chaboussie via dev <
>> > > >> [email protected]> wrote:
>> > > >>
>> > > >>> Hi Ashish, Hi all.
>> > > >>>
>> > > >>> I am still not ok with the idea of this code being merged in
>> plugins
>> > > >>> repo, i'm refering to this line you wrote :
>> > > >>>
>> > > >>> I will be merging this "devreload" plugin sometime in the next
>> week.
>> > > >>>
>> > > >>> Again, IMO it shouldn't be the community's job to maintain this
>> > feature
>> > > >>> considering the gain / work ratio.
>> > > >>>
>> > > >>> Even if the code has been refactored and streamlined, it doesn't
>> > > changes
>> > > >>> my opinion.
>> > > >>>
>> > > >>> Regards,
>> > > >>>
>> > > >>> Gaetan.
>> > > >>>
>> > > >>>
>> > > >>> On 7/6/26 16:06, Ashish Vijaywargiya wrote:
>> > > >>>> Hello All,
>> > > >>>>
>> > > >>>> Here is the quick update on the "*devreload*" hot-reload plugin:
>> the
>> > > >> two
>> > > >>>> separate Gradle commands have been merged into a single one.
>> > > >>>>
>> > > >>>> Previously, there were two tasks, ./gradlew ofbizDev for
>> stock-JDK
>> > > >>>> hot-reload and ./gradlew ofbizDevEnhanced for DCEVM-backed
>> > structural
>> > > >>>> hot-reload. Now there is just one task, ofbizDev, and enhanced
>> mode
>> > is
>> > > >> a
>> > > >>>> flag on it.
>> > > >>>>
>> > > >>>> ./gradlew ofbizDev still starts OFBiz normally on a stock JDK,
>> > > >>>> hot-reloading method body edits and services.xml changes live,
>> > exactly
>> > > >> as
>> > > >>>> before.
>> > > >>>>
>> > > >>>> ./gradlew ofbizDev -Photreload.enhanced=true --no-watch-fs runs
>> the
>> > > >> same
>> > > >>>> task on a DCEVM-patched JVM instead (JetBrains Runtime is
>> > > auto-detected
>> > > >>>> from a local IntelliJ IDEA install, or point at one explicitly
>> with
>> > > >>>> -PdcevmHome or DCEVM_HOME), additionally hot-swapping structural
>> > > >> changes
>> > > >>>> like new or removed methods live, with no restart.
>> > > >>>>
>> > > >>>> Both modes still support component scoping via
>> > > >>>> -Photreload.components=compA,compB for a faster, narrower
>> startup on
>> > > >>> large
>> > > >>>> checkouts.
>> > > >>>>
>> > > >>>> Under the hood, this is now a single JavaExec task rather than
>> two
>> > > >>> separate
>> > > >>>> task types, so enhanced mode also picks up JavaExec's built-in
>> > safety
>> > > >>> nets,
>> > > >>>> like automatic classpath-argfile handling on Windows and
>> --debug-jvm
>> > > >>>> support, which the old separate Exec-based task did not have.
>> > > >>>>
>> > > >>>> No other behavior has changed. Full details are in
>> > > >>>> plugins/devreload/README.md.
>> > > >>>>
>> > > >>
>> > >
>> >
>> https://github.com/ashishvijaywargiya/ofbiz-plugins/blob/add-devreload/devreload/README.md
>> > > >>>> And here is the PR that I created over the weekend.
>> > > >>>> https://github.com/apache/ofbiz-plugins/pull/316
>> > > >>>>
>> > > >>>> --
>> > > >>>> Kind Regards,
>> > > >>>> Ashish Vijaywargiya
>> > > >>>> Vice President of Operations
>> > > >>>> *HotWax Systems*
>> > > >>>> *Enterprise open source experts*
>> > > >>>> http://www.hotwaxsystems.com
>> > > >>>>
>> > > >>>>
>> > > >>>>
>> > > >>>> On Sat, Jul 4, 2026 at 6:34 PM Ashish Vijaywargiya <
>> > > >>>> [email protected]> wrote:
>> > > >>>>
>> > > >>>>> Thank you, Konstantinos Marinos, Jacques for sharing your
>> thoughts.
>> > > >>>>>
>> > > >>>>> Hello Gaetan,
>> > > >>>>>
>> > > >>>>> I tried the HotSwap option available in IntelliJ IDEA.
>> > > >>>>>
>> > > >>>>> Enable HotSwap Settings + DCEVM Plugin
>> > > >>>>>
>> > > >>>>> File Watcher Plugin setup
>> > > >>>>>
>> > > >>>>> CronJob setup so that it could manage your login information.
>> > > >>>>>
>> > > >>>>> But it's trickier, confusing, and more lengthy to set up.
>> > > >>>>>
>> > > >>>>> I dropped the idea of continuing with IntelliJ settings instead,
>> > and
>> > > >>>>> continued with creating an independent plugin "devreload" for
>> > OFBiz.
>> > > >>>>> Sharing more details below.
>> > > >>>>>
>> > > >>>>> Hello Dev Community,
>> > > >>>>>
>> > > >>>>> Wanted to share an update on the Java hot-reload tooling for
>> OFBiz
>> > > >>>>> development (the devreload plugin) that removes the
>> > restart-and-wait
>> > > >>> cycle
>> > > >>>>> when iterating on services, events, and services.xml files.
>> > > >>>>>
>> > > >>>>> https://github.com/apache/ofbiz-plugins/pull/316
>> > > >>>>>
>> > > >>>>>
>> > > >>
>> > >
>> >
>> https://github.com/ashishvijaywargiya/ofbiz-plugins/tree/add-devreload/devreload
>> > > >>>>> Based on the community feedback around not wanting
>> framework-level
>> > > >> code
>> > > >>>>> changes, I have moved everything into the devreload plugin
>> itself —
>> > > >>> there
>> > > >>>>> are now zero changes required in ofbiz-framework.
>> > > >>>>>
>> > > >>>>> Now the plugin is entirely self-contained: dropping
>> > plugins/devreload
>> > > >>> into
>> > > >>>>> a checkout (or removing it) has zero effect on the rest of OFBiz
>> > > >> either
>> > > >>>>> way, since it hooks in purely through the standard
>> > > component/container
>> > > >>>>> discovery mechanism and the JVM's own Instrumentation API, with
>> no
>> > > >>>>> reflective bridge or hook anywhere in framework code.
>> > > >>>>>
>> > > >>>>> The plugin provides two Gradle commands, both drop-in
>> replacements
>> > > for
>> > > >>> the
>> > > >>>>> normal ofbiz start command.
>> > > >>>>>
>> > > >>>>> The two devreload commands
>> > > >>>>>
>> > > >>>>> 1. ./gradlew ofbizDev
>> > > >>>>>
>> > > >>>>> What it does: Starts OFBiz normally (stock JDK), with hot-reload
>> > > >> active.
>> > > >>>>> Java method-body edits and services.xml changes go live within
>> > ~300ms
>> > > >> of
>> > > >>>>> saving, no restart. It cannot hot-swap structural changes (a
>> > > brand-new
>> > > >>>>> method, a removed method/field, a changed signature) — those
>> still
>> > > >>> require
>> > > >>>>> a restart on a plain JDK.
>> > > >>>>>
>> > > >>>>> 2. ./gradlew ofbizDevEnhanced --no-watch-fs
>> > > >>>>>
>> > > >>>>> What it does: Starts OFBiz on a JVM with enhanced class
>> > redefinition
>> > > >>>>> support, instead of a stock JDK. On top of everything ofbizDev
>> > does,
>> > > >> it
>> > > >>>>> additionally hot-swaps structural changes — a brand-new method,
>> a
>> > > >>> removed
>> > > >>>>> method or field, a changed signature — live as well, with no
>> > restart.
>> > > >>> The
>> > > >>>>> --no-watch-fs flag is recommended on a full checkout to avoid a
>> > > >>>>> directory-watch resource ceiling we found and root-caused during
>> > > >>> testing.
>> > > >>>>> Both commands also support optional component scoping via
>> > > >>>>> -Photreload.components=compA,compB for a faster, narrower
>> startup
>> > > >> while
>> > > >>>>> working on a couple of components.
>> > > >>>>>
>> > > >>>>> Both commands have been tested end to end, including editing
>> > existing
>> > > >>>>> methods, editing services.xml, and adding brand-new methods and
>> > > >>> services,
>> > > >>>>> with all changes verified to take effect live without a restart.
>> > > >>>>>
>> > > >>>>> I will be merging this "devreload" plugin sometime in the next
>> > week.
>> > > >>>>>
>> > > >>>>> Please share your feedback on this whenever you can.
>> > > >>>>>
>> > > >>>>> --
>> > > >>>>> Kind Regards,
>> > > >>>>> Ashish Vijaywargiya
>> > > >>>>> Vice President of Operations
>> > > >>>>> *HotWax Systems*
>> > > >>>>> *Enterprise open source experts*
>> > > >>>>> http://www.hotwaxsystems.com
>> > > >>>>>
>> > > >>>>>
>> > > >>>>>
>> > > >>>>> On Thu, Jul 2, 2026 at 7:53 PM Konstantinos Marinos <
>> > > >>> [email protected]>
>> > > >>>>> wrote:
>> > > >>>>>
>> > > >>>>>> Hello Ashish,
>> > > >>>>>>
>> > > >>>>>> thank you for your work on this feature. I personally find the
>> > > >> approach
>> > > >>>>>> very interesting.
>> > > >>>>>>
>> > > >>>>>> Although I can see the point of view and the concerns raised by
>> > > >> Geatan,
>> > > >>>>>> offering extensive hot-reload capabilities directly from the
>> > > >>>>>> framework/tooling without relying on the IDE is for me a nice
>> > > >> addition.
>> > > >>>>>> After all, it is an extra option for developers that don't use
>> > > >> eclipse
>> > > >>> or
>> > > >>>>>> Intellij - although I imagine they are a very small minority.
>> > > >>>>>>
>> > > >>>>>> To the concern regarding "plugin" code residing inside the main
>> > > >>> project,
>> > > >>>>>> I was wondering if there was an option for some "creative"
>> > > >> refactoring
>> > > >>>>>> where you bind your new classloader through properties or a
>> > similar
>> > > >>>>>> mechanism. Of course if any additional configuration is
>> absent, it
>> > > >>> should
>> > > >>>>>> default to the current implementation. In that case even your
>> > > >>> DevReloadHook
>> > > >>>>>> class could live in the plugin and be picked up through a more
>> > > >>> generalised
>> > > >>>>>> Interface that just provides the appropriate classloader.
>> > > >>>>>>
>> > > >>>>>> This way no changes in the main project hint to the existence
>> of
>> > the
>> > > >>> dev
>> > > >>>>>> container plugin, but anyone can provide their own
>> implementation
>> > of
>> > > >> a
>> > > >>>>>> "classloader provider" that modifies the standard classloading
>> > > >>> behaviour
>> > > >>>>>> for java.
>> > > >>>>>>
>> > > >>>>>> This is only an idea I had after looking at the modifications
>> in
>> > > >>> trunk. I
>> > > >>>>>> hope I was able to get my point across and that it addresses
>> the
>> > > >>> concerns
>> > > >>>>>> in this thread.
>> > > >>>>>>
>> > > >>>>>> Best of luck with further development and the future adoption
>> of
>> > > this
>> > > >>>>>> functionality.
>> > > >>>>>>
>> > > >>>>>> Konstantinos Marinos
>> > > >>>>>>
>> > > >>>>>> On 2026/07/02 12:24:07 Ashish Vijaywargiya wrote:
>> > > >>>>>>> Hello Jacques and Geatan,
>> > > >>>>>>>
>> > > >>>>>>> Thank you for sharing your thoughts. They were very helpful.
>> 👍
>> > > >>>>>>>
>> > > >>>>>>> I thought about my implementation again and updated it a bit.
>> The
>> > > >>>>>>> implementation (WatchService + in-process compiler + a
>> > child-first
>> > > >>>>>>> classloader) lives entirely in a small plugin, published
>> > separately
>> > > >> at
>> > > >>>>>>> https://github.com/ashishvijaywargiya/devreload. This plugin
>> is
>> > > >>>>>> available
>> > > >>>>>>> to anyone, and anyone can clone it if required.
>> > > >>>>>>>
>> > > >>>>>>> I can also move it to the ofbiz-plugins folder if the
>> community
>> > > >>> members
>> > > >>>>>>> agree to put the "devreload" component codebase there.
>> > > >>>>>>>
>> > > >>>>>>> To make the framework pick up hot-reloaded classes when that
>> > plugin
>> > > >> is
>> > > >>>>>>> present, I need a small footprint in ofbiz-framework itself: a
>> > > >>>>>> reflective
>> > > >>>>>>> bridge, a small file DevReloadHook.java, plus one gated
>> > classloader
>> > > >>>>>> check
>> > > >>>>>>> each in StandardJavaEngine and JavaEventHandler.
>> > > >>>>>>>
>> > > >>>>>>> Branch for reference:
>> > > >>>>>>>
>> > > >>
>> > >
>> >
>> https://github.com/apache/ofbiz-framework/compare/trunk...ashishvijaywargiya:ofbiz-framework:dev-reload-container-support
>> > > >>>>>>> Hopefully, now the changes in the
>> "dev-reload-container-support"
>> > > >>> branch
>> > > >>>>>> can
>> > > >>>>>>> be merged into the OFBiz trunk code.
>> > > >>>>>>>
>> > > >>>>>>> To demonstrate the feature, I have added a new field
>> "comments2"
>> > on
>> > > >>> the
>> > > >>>>>>> form, and then made the changes in services.xml, and then made
>> > the
>> > > >>>>>> changes
>> > > >>>>>>> in OfbizDemoServices.java file. The changes in services.xml
>> and
>> > > java
>> > > >>>>>> files
>> > > >>>>>>> are reflected without restarting OFBiz.
>> > > >>>>>>>
>> > > >>>>>>>
>> > > >>
>> > >
>> >
>> https://drive.google.com/drive/folders/1W5ILWVOSBD956GcDT50-GmZkV_seMNRv?usp=sharing
>> > > >>>>>>> I have made the changes in a demo component -
>> > > >>>>>>> https://github.com/ashishvijaywargiya/ofbizDemo.
>> > > >>>>>>>
>> > > >>>>>>> Please let me know your thoughts on this.
>> > > >>>>>>>
>> > > >>>>>>> I will also explore the HotSwap plugin in IntelliJ IDEA and
>> get
>> > > back
>> > > >>>>>> with
>> > > >>>>>>> my thoughts.
>> > > >>>>>>>
>> > > >>>>>>> Thank you.
>> > > >>>>>>>
>> > > >>>>>>> --
>> > > >>>>>>> Kind Regards,
>> > > >>>>>>> Ashish Vijaywargiya
>> > > >>>>>>> Vice President of Operations
>> > > >>>>>>> *HotWax Systems*
>> > > >>>>>>> *Enterprise open source experts*
>> > > >>>>>>> http://www.hotwaxsystems.com
>> > > >>>>>>>
>> > > >>>>>>>
>> > > >>>>>>>
>> > > >>>>>>> On Wed, Jul 1, 2026 at 9:49 PM Jacques Le Roux via dev <
>> > > >>>>>> [email protected]>
>> > > >>>>>>> wrote:
>> > > >>>>>>>
>> > > >>>>>>>> Hi,
>> > > >>>>>>>>
>> > > >>>>>>>> I tend to agree with Gaetan.
>> > > >>>>>>>>
>> > > >>>>>>>> Jacques
>> > > >>>>>>>>
>> > > >>>>>>>> Le 01/07/2026 à 09:18, gaetan.chaboussie via dev a écrit :
>> > > >>>>>>>>> Hello Ashish, hello all.
>> > > >>>>>>>>> First, thanks for the effort put into this. Seems like a
>> lot of
>> > > >> work
>> > > >>>>>>>> (even if it looks like there has been some AI help on the
>> code).
>> > > >>>>>>>>> This being said, I'm not sure how i feel seeing a 'developer
>> > > only'
>> > > >>>>>>>> intended feature in the project code.
>> > > >>>>>>>>> I think that it's the IDE's job to provide this kind of
>> > feature.
>> > > >> In
>> > > >>>>>> my
>> > > >>>>>>>> experience, Eclipse handles it natively pretty well, and
>> > Intellij
>> > > >> is
>> > > >>>>>> making
>> > > >>>>>>>>> great progress (and has a Hotsawp plugin that i personally
>> > use).
>> > > >>>>>>>>> Also, i believe that it's precisely the point of
>> GroovyScripts
>> > to
>> > > >>>>>> allow
>> > > >>>>>>>> editing without recompiling.
>> > > >>>>>>>>> Although I understand the idea, I would personnaly not
>> advise
>> > > this
>> > > >>>>>>>> change, that creates low level code changes, and looks
>> tricky to
>> > > >>>>>> maintain.
>> > > >>>>>>>>> Gaetan.
>> > > >>>>>>>>>
>> > > >>>>>>>>> On 6/30/26 18:03, Ashish Vijaywargiya wrote:
>> > > >>>>>>>>>> Hello OFBiz Dev Community,
>> > > >>>>>>>>>>
>> > > >>>>>>>>>> I would like to share a prototype that removes the need to
>> > > >> restart
>> > > >>>>>> OFBiz
>> > > >>>>>>>>>> when developing Java services, events and service
>> > > >>>>>>>> definitions(services.xml).
>> > > >>>>>>>>>> Many years ago I came across Tomcat's reloadable="true"
>> > context
>> > > >>>>>>>> attribute.
>> > > >>>>>>>>>> When enabled, Tomcat's application deployer watches for
>> class
>> > > >> file
>> > > >>>>>>>> changes
>> > > >>>>>>>>>> and
>> > > >>>>>>>>>> automatically reloads the web application — no server
>> restart,
>> > > no
>> > > >>>>>> manual
>> > > >>>>>>>>>> step. I always thought that was a great developer
>> experience,
>> > > and
>> > > >>>>>> at the
>> > > >>>>>>>>>> back of my mind I wondered whether something similar could
>> be
>> > > >> done
>> > > >>>>>> in
>> > > >>>>>>>> OFBiz.
>> > > >>>>>>>>>> The standard Java change cycle in OFBiz today is:
>> > > >>>>>>>>>> edit .java → ./gradlew classes → kill OFBiz → wait 30-60 s
>> →
>> > > >>>>>> restart →
>> > > >>>>>>>> test
>> > > >>>>>>>>>> Groovy scripts and Freemarker templates already pick up
>> > changes
>> > > >>>>>> without
>> > > >>>>>>>> a
>> > > >>>>>>>>>> restart; Java does not. This prototype brings the same
>> > > >> convenience
>> > > >>>>>> to
>> > > >>>>>>>> Java
>> > > >>>>>>>>>> development, specifically targeting *Services.java and
>> > > >> *Events.java
>> > > >>>>>>>> files
>> > > >>>>>>>>>> which are the ones developers touch most during active
>> feature
>> > > >>>>>> work.
>> > > >>>>>>>>>> --- What it does ---
>> > > >>>>>>>>>>
>> > > >>>>>>>>>> A new class called DevReloadContainer is added to
>> > > framework/base.
>> > > >>>>>> It is
>> > > >>>>>>>>>> activated by passing -Dofbiz.hotreload=true on startup and
>> > does
>> > > >>>>>> three
>> > > >>>>>>>>>> things:
>> > > >>>>>>>>>>
>> > > >>>>>>>>>> 1. Watches build/classes/java/main/ for changed .class
>> files
>> > and
>> > > >>>>>>>>>>         hot-swaps them into a fresh class loader without
>> > > >> restarting
>> > > >>>>>> OFBiz.
>> > > >>>>>>>>>>         In practice this means saving a *Services.java or
>> > > >>>>>> *Events.java
>> > > >>>>>>>> file
>> > > >>>>>>>>>>         is enough — the change is live in under a second.
>> > > >>>>>>>>>>
>> > > >>>>>>>>>> 2. Watches all component servicedef/ directories and clears
>> > the
>> > > >>>>>> service
>> > > >>>>>>>>>>         model cache when any *services.xml file changes, so
>> > new
>> > > or
>> > > >>>>>>>> modified
>> > > >>>>>>>>>>         service definitions are picked up immediately.
>> > > >>>>>>>>>>
>> > > >>>>>>>>>> 3. Watches all component src/main/java/ directories and
>> > compiles
>> > > >>>>>> changed
>> > > >>>>>>>>>>         .java files in-process (using
>> > javax.tools.JavaCompiler),
>> > > >> so
>> > > >>>>>> you
>> > > >>>>>>>> do not
>> > > >>>>>>>>>>         need a second terminal running ./gradlew -t
>> classes.
>> > > >>>>>>>>>>
>> > > >>>>>>>>>> A 300 ms debounce window batches a burst of file-save
>> events
>> > > >> into a
>> > > >>>>>>>> single
>> > > >>>>>>>>>> reload, so rapid edits do not cause multiple reloads.
>> > > >>>>>>>>>>
>> > > >>>>>>>>>> --- The new dev workflow ---
>> > > >>>>>>>>>>
>> > > >>>>>>>>>> A new Gradle task wraps everything into one command:
>> > > >>>>>>>>>>
>> > > >>>>>>>>>> ./gradlew ofbizDev
>> > > >>>>>>>>>>
>> > > >>>>>>>>>> Start OFBiz with that command, then edit any
>> *Services.java,
>> > > >>>>>>>> *Events.java,
>> > > >>>>>>>>>> or *services.xml file and save — changes are live without
>> any
>> > > >>>>>> restart.
>> > > >>>>>>>>>> The working code is on branch dev-reload-container-support.
>> > > >>>>>>>>>>
>> > > >>>>>>>>>>
>> > > >>
>> > >
>> >
>> https://github.com/ashishvijaywargiya/ofbiz-framework/tree/dev-reload-container-support
>> > > >>
>> > >
>> >
>> https://github.com/apache/ofbiz-framework/compare/trunk...ashishvijaywargiya:ofbiz-framework:dev-reload-container-support
>> > > >>>>>>>>>> The implementation went through several rounds of debugging
>> > and
>> > > >>>>>>>>>> covers 32 test cases including child-first class loading,
>> > > >>>>>> multi-cycle
>> > > >>>>>>>>>> reload correctness,
>> > > >>>>>>>>>> inner and anonymous class reloading, concurrent class
>> loading,
>> > > >>>>>>>>>> malformed-bytecode handling, shutdown races, and the macOS
>> > > >>>>>>>> spurious-event
>> > > >>>>>>>>>> suppression.
>> > > >>>>>>>>>>
>> > > >>>>>>>>>> Please review this feature and let me know your
>> > > >> thoughts/feedback.
>> > > >>>>>>>>>> And please report any issues you find.
>> > > >>>>>>>>>>
>> > > >>>>>>>>>> Very soon, I will be creating a pull request for this
>> feature.
>> > > >>>>>>>>>>
>> > > >>>>>>>>>> I am hopeful that this feature will be helpful to all
>> > developers
>> > > >>>>>> who are
>> > > >>>>>>>>>> building enterprise applications using the Apache OFBiz
>> > project.
>> > > >> 👍
>> > > >>>>>>>>>> Thank you.
>> > > >>>>>>>>>>
>> > > >>>>>>>>>> --
>> > > >>>>>>>>>> Kind Regards,
>> > > >>>>>>>>>> Ashish Vijaywargiya
>> > > >>>>>>>>>> Vice President of Operations
>> > > >>>>>>>>>> *HotWax Systems*
>> > > >>>>>>>>>> *Enterprise open source experts*
>> > > >>>>>>>>>> http://www.hotwaxsystems.com
>> > > >>>>>>>>>>
>> > >
>> >
>>
>

Reply via email to