You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@beehive.apache.org by Kyle Marvin <ky...@bea.com> on 2004/11/01 15:44:39 UTC

RE: The build (controls/...)

> 
> Kyle, we'd spoken about abstracting the container stuff out so you can
> test on Tomcat, Geronimo, Jetty, etc, base upon a property 
> setting, so I'd
> appreciate your concrete thoughts on that matter now.
> 

I think the key part here is to recognize and structure the build w/ the notion that there are some aspects of the build process which are container-agnostic and other parts that are going to need container-specific customization.   

Examples of things that might need container-specific customization are:

- starting/stopping servers - lots of the test infrastructure does this, and it would nice if this infrastructure could be leveraged across multiple containers w/out touching the internals of the test infrastructure

- building/deploying apps - there may be minor-to-major differences in how you go from beehive source artifacts to binary artifacts depending upon the target platform.   At one end of the spectrum are pageflows, where the build output and app structure are relatively constant across servlet containers.  At the other end of the spectrum is WSM, where there would be substantive differences in build process/output if targeting Axis vs. a JSR-109-based web services platform.   Physical mechanisms for deploying and for having a running server see the changes are likely to vary as well.

- building container-specific runtime code - we don't have a significant amount of this right now outside of WSM (which has a fair amount of Axis-specific code), but its likely that in the long run aspects of container integration for even controls and pageflows will include some small body of code that integrates a generic capability like async events to container-specific implementations.   The source for this type of code should be kept physically separate from code that is portable across all containers, and the top-level build should make it possible to 'target' the build to a container, building both generic and container-specific portions.

- distribution-building - we should probably product a 'clean' distribution which contains only container-neutral bits/jars, but also have the ability to build 'integrated' bits that target specific containers (ex. tomcat + axis)

It seems like a lot of the above could be handle by some combination of generic build.xml files + imported container-specific supporting files driven by variable(s) that control the import process.

As a final thought, I think we also have to consider the cases where the container integration support might live inside the Beehive source tree / depot (like it will/does for Tomcat/Axis) or potentially outside the Beehive source tree (where it would need to if targeting non-Apache containers, where committership becomes an issue).

I know this is a lot to bite off, but we can work towards this over time.   Probably the best thing we can do near term is to make sure that we don't 'burn in' too many Tomcat/Axis-isms in ways that make it more difficult to disentangle later.

We also need to be careful to make sure that Beehive app developer experience remains as simple and clean as possible if just using the initial/default target platform of Tomcat/Axis while doing the work to build in the versatility for more downstream containers.

Hope this helps!

-- Kyle