geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paul McMahan" <paulmcma...@gmail.com>
Subject Re: Improve 'Geronimo' Development
Date Fri, 03 Nov 2006 16:04:14 GMT
On 11/3/06, Sachin Patel <sppatel2@gmail.com> wrote:
> So since I've been working on Geronimo, one of the most annoying things
> developing Geronimo in an IDE is the overhead involved between modifing code
> and being able to test the code.  For a single line change you have to
> rebuild and install the module, rebuild the assembly, and re-extract and
> relaunch the server image.  This is needed since Geronimo loads classes from
> the server repository and currently cannot from the local m2 repo or from
> the "target/classes" directory itself.

Testing changes to some parts of the server like the admin console
don't require quite so many steps since a redeploy suffices.  But
that's still a multistep process and I agree that testing changes to
most parts of the server can be tedious.  Sometimes I get around this
by just rebuilding the affected jar, copying it into repo, and
recycling server.

> Well to ease the developer experience I think we need to change that.  As a
> first step, I'd like to see if we can hook into geronimo a "developers
> module" that the repository code can delegate over to to load from the m2
> repo.  That itself would be an improvement and developers could simply
> rebuild the module without having to regen a new assembly.  A step beyond
> that would be the ability to treat the source tree as a repo, and geronimo
> load directly from target/classes, this is tricker since the modules in the
> source tree don't follow a groupId/artifact/version/type convention so some
> sort of intelligent mapping would have to be done.  In theory, this would
> give us the ability to simply compile a module (with an IDE compiler and not
> maven) and simply re-start the server.

Both of these ideas sound good and IMO could improve productivity
dramatically for geronimo developers.  I think I would prefer using
the m2 repo instead of the target/classes directory because the
location and contents of my m2 repo tend to be more stable than my src
tree.  Plus there's lots of stuff in my m2 repo that I don't actually
have the source/classes for, and I want geronimo to be able to load
that stuff too.  Like when a pom changes and maven slurps over a new
jar.  Also, it just seems like a simpler and cleaner design to me.
However, I can appreciate the fact that using target/classes would
allow the IDE to update the geronimo runtime directly without
requiring maven.  But maybe maven's eclipse plugin could help with
that?

In my mind one questionable aspect of either design is how file
locking might affect development on windows.

> Would this be an effort that would be valuable to the community?

Yes, I think so!

> If so, if there are suggestions on how to go about implementing either the
> first or second solution, please give your input.

org.apache.geronimo.management.geronimo.J2EEServer has an API that the
console sometimes uses to look for stuff in the repo :
    /**
     * Gets the Repositories associated with this J2EEServer.
     */
    public ListableRepository[] getRepositories();

Notice that it returns an *array* of repositories, but AFAIK we
usually only ever expect a single element in that array.  I didn't
look into how one might go about adding to that array, nor how the
rest of the server might respond if that happens.  Maybe someone
watching this thread might know.  If I can help by digging into this a
little further then just let me know.

Best wishes,
Paul

Mime
View raw message