That technique will only work for a limited set of use cases, and is very error prone. The fundamental problem is you are moving a class from a node deep in the the class loader graph to the system class loader. That means the class will only be able to see classes on the system class path. Specifically, a servlet would not be able to see the javax.servlet.Servlet class :(

-dain

On May 11, 2006, at 11:26 AM, Paul McMahan wrote:

It seems that you can override some of the jars in geronimo/lib by
dropping a jar into geronimo/lib/ext.  As a test I recompiled a change
into o.a.g.system.main.Daemon that became visible when I put the
updated jar into that directory.  But using the same technique for a
deployed webapp didn't have the same results,  presumably due to the
deeper classloader structure in effect for stuff loaded from the
repository (as David described earlier).  I agree it would be nice to
have a directory whose contents trump all classloaders used for quick
testing and "hotfixes" and such.  But I can sympathize with concerns
that it may be abused and lead to instability.  I have wasted a good
deal of time in the past chasing red herrings caused by jars I didn't
realize were in jre/lib/ext :-)

Paul

On 5/11/06, Jeff Genender <[EMAIL PROTECTED]> wrote:


Matt Hogstrom wrote:
>
>
> David Jencks wrote:
>>
>> On May 11, 2006, at 8:29 AM, Joe Bohn wrote:
>>
>>>
>>> Thanks for the quick response Jeff.
>>>
>>> I like the idea of a "system patch" location in the classpath where >>> we can pick up patches for anything we might include in a geronimo
>>> assembly.
>>
>> I think this "system patch" idea will only work in environments with
>> only one classloader, i.e. not geronimo.  The problem is that the
>> patched classes need to get into the correct classloader, "before" the
>> normal versions.   We'd need a patch directory for each module.  I
>> also think any solution that relies on the order of stuff in a
>> classpath is inherently unstable and unreliable.
>
> I agree that it would be very unwieldy.  For some folks providing
> support for Geronimo it might be nice for the classloaders to look in an
> aside dir (./patches) for a jar with the artifact name with a
> -pyyyymmddss suffix so patches can be applied. The ss allows for the > sequencing to be addressed. This would make it easier to provide one > hit patches that can get rolled up into the released jar you describe
> below and the user would not have to wait for a release to come out
> which could be a few months.

Matt, you hit the nail on the head.  I really think a simple patching
system...call it..."quick hit" ;-) could have some big beneficial uses. I have many times run into this situation where I needed to be able to do this. Only through altering the CLASSPATH or changing the jar was I able to get around the problem. I always wanted a way to drop in a jar
w/o having to alter core services that allowed me to patch what I
needed. There are many use cases for this, with the biggest being a
possible way for us to release "service paks" w/o the need to download
and fully reconfigure a new server.

I only see this feature as an added extension to make thing easier for
development/support/and heavily configured prod servers.

Jeff


Reply via email to