Kevin, I like your idea. However, I don't see what benefit it will bring for server side development as all (or almost all) existing containers already support dynamic reloading. For example, to run my Cactus tests, I do no start and stop the application server but simply drop the new WAR (or EAR) over the existing one. Am I missing something ?
Or do you want to externalize the dynamic reloading feature (in an Ant task) so that containers or other type of code that do not already have this feature can still benefit from it, i.e. generalize it by taking it outside of the code base ? This is probably what JPDA of JDK 1.4 is about : have this feature built into the JVM instead of in the code ... On a slightly different subject I am very interested by JPDA to provide easy interception mechanisms for in-container testing with Cactus (to provide hook-points in the container instead of having to provide explicit redirectors at application package time), thus making the test process transparent from the point of view of the application (in other words, no modification whatsoever to the WAR/EAR, only runtime modification to loaded classes during the tests). -Vincent > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of > Kevin A. Burton > Sent: 03 February 2002 21:46 > To: [EMAIL PROTECTED] > Subject: [PROPOSAL] 'redefine' task that uses JDK 1.4/JPDA class > redefinition > > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > > OK. > > Has anyone read about the JPDA 1.4 enhancements that have made it into JDK > 1.4: > > http://java.sun.com/j2se/1.4/docs/guide/jpda/enhancements.html > > I am specifically talking about class redefinition. AKA the ability to > recompile and update classes within a running JVM. > > This is done through JPDA and should support any application that runs > within > JDK 1.4. > > Some applications like Tomcat have class reloading built into them. This > is > primarily due to the fact that Java has not been able to redefine classes > at > runtime. > > What I want to do is build a new ant task named 'redefine' that takes a > directory of .class files, compares it to a directory of deployed class > files > (if available) and redefines them. > > So for example one could: > > <redefine host="localhost" port="2112"> > > <new-classes> > > <fileset dir="../bin/classes" includes="**/*.class"/> > > </new-classes> > > </redefine> > > This would connect to localhost:2112 with JPDA and redefine every class > under > ../bin/classes. > > This isn't as easy as it sounds... there are some issues. > > Specifically if you have singleton classes, these will not be reloaded. > In > order to do this you have to pop entries off the stack before this class > was > used. > > Obviously in a lot of situations this is not desirable. We should have > the > ability to enable/disable this via pop-frames="false|true" (should be > false by > default) > > This should provide a significant increase in functionality for both > server > applications and developers. > > Developers could have compile, redefine, and test (with cactus or RPC > style > code) within seconds without having to wait for their ENTIRE application > reload. Application server admins will be able to redefine necessary code > without having to restart their application (think availability). > > Thought? > > I think this is a good idea. Of course I will contribute this to Apache > if it > is requested. > > The only other drawback is that this will require JDK 1.4 to compile. It > might > be a good idea to put this under a CONTRIB directory. > > Kevin > > - -- > Kevin A. Burton ( [EMAIL PROTECTED], [EMAIL PROTECTED], > [EMAIL PROTECTED] ) > Location - San Francisco, CA, Cell - 415.595.9965 > Jabber - [EMAIL PROTECTED], Web - http://relativity.yi.org/ > > Windows is easy to learn and hard to use, while *nix is hard to learn but > easy > to use. > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.0.6 (GNU/Linux) > Comment: Get my public key at: http://relativity.yi.org/pgpkey.txt > > iD8DBQE8Xa+YAwM6xb2dfE0RAkzYAKC/dLJws35YStdaVHTCdmnRGT92pgCeJaG6 > 260llFeSASt3UjOIPrhk4z8= > =j4+F > -----END PGP SIGNATURE----- > > -- > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> > -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
