On 20/11/2007, James Strachan <[EMAIL PROTECTED]> wrote:
> On 20/11/2007, Rob Davies <[EMAIL PROTECTED]> wrote:
> > ActiveMQ 5 requires Java 5 - so this won't be a problem for AgentSmth
> > We just need to override the Smith.redefineClass() method in a
> > derived class to add some eventing to stop the routes and reload the
> > classes
>
> That should work! :)
>
> If it doesn't - or we hit some limitation of AgentSmith (e.g. I've
> seen talk of AgentSmith not reloading stuff if you add new methods or
> fields to a class), I guess we could always build our own little
> reloading classloader thingy?
>
> e.g. we could do something like this in camel...
>
> <camelContext>
>   <rules dir="lib/rules" package="org.foo"/>
> </camelContext>
>
> which would then create a single ClassLoader for all the *.jar files
> in that directory and then load and activate all the rules in there.
>
> If any of the jars change, we could stop all those rules, ditch the
> classloader and reload all the jars again and re-activate the rules
> again.
>
> I guess AgentSmith might be more clever and realise just which rules
> have actually changed maybe? I wonder if eclipse has any clever
> hot-swap ninja we could reuse?

I was chatting with Guillaume on IRC and he mentioned this lovely
looking tool...
http://www.aqute.biz/Code/FileInstall

which can monitor a directory for OSGi bundles (jars really) and
install+start then stop+uninstall & reload things if the jars change.

So I guess one neat solution could be to allow ActiveMQ to boot up an
OSGi container (say Felix) with spring+osgi and FileInstall installed.
Then if Java routing rules were put into OSGi bundles (i.e. a jar with
the OSGi metadata), spring-osgi should auto-boot up the bundle and
activate the routing rules when the jar loads - and stop the routing
rules when the bundle is stopped & uninstalled.

It'd be nice if we could get the FileInstall to also allow any
spring.xml to be added to the deploy directory & for it to be
reloaded; then folks could just drop in routing rules as spring.xml
files; or edit them to have things reload. i.e. kinda treating any
spring.xml file as a kinda bundle with no Java code :)

-- 
James
-------
http://macstrac.blogspot.com/

Open Source Integration
http://open.iona.com

Reply via email to