ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bur...@openprivacy.org (Kevin A. Burton)
Subject [PROPOSAL] 'redefine' task that uses JDK 1.4/JPDA class redefinition
Date Sun, 03 Feb 2002 21:46:01 GMT
-----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 ( burton@apache.org, burton@openprivacy.org, burtonator@acm.org )
             Location - San Francisco, CA, Cell - 415.595.9965
        Jabber - burtonator@jabber.org,  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:ant-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:ant-dev-help@jakarta.apache.org>


Mime
View raw message