I have actually wanted this for a long time. But I always tought this was
the Karaf idea. Karaf has a webapp launcher, but it's not very feature rich.
Maybe Karaf should have a launcher framework like sling. Possibly porting
slings launchpad framework to Karaf and make it a little more generic. What
does the Karaf folks think?

/srs


On Wed, Oct 7, 2009 at 2:17 AM, Edelson, Justin <[email protected]
> wrote:

> In a sense... One way to look at this is that I'm proposing that the code
> in http://svn.apache.org/repos/asf/felix/trunk/http/samples/bridge/ <
> http://svn.apache.org/repos/asf/felix/trunk/http/samples/bridge/>  be
> enhanced, formalized and included as part of the HttpService distribution
> (in the org.apache.felix.http.proxy jar) rather than having anyone wanting
> to embed Felix in a webapp write boilerplate code based on the sample (or,
> as I did originally, the Sling codebase).
>
> This isn't to say that anyone will be forced to use this; if you want to
> write your own ServletContextListener, go at it. I just think Felix can
> establish some default behavior and provide the glue code which implements
> this behavior. I believe the below defines a reasonable default behavior,
> but I'm open to other ideas.
>
> I am proposing a new launcher in the sense that I'd like to see a
> standard/default way of embedding Felix in a web container without needing
> to write any code. Although the 2.0.2 release of HttpService has reduced the
> amount of code/config necessary to do so (and eliminated a dependency on
> Equinox's bridge servlet), I think a reasonable default "launcher" is a
> worthwhile effort, mostly because I don't have an overwhelming desire to
> write the code I describe below more than once and can't imagine I'm the
> only one who needs/wants to do this.
>
> Does that help to clarify my intent?
>
> Justin
>
> ________________________________
>
> From: Richard S. Hall [mailto:[email protected]]
> Sent: Tue 10/6/2009 7:31 PM
> To: [email protected]
> Subject: Re: Default web app integration behavior
>
>
>
> Just to be clear, you are proposing a new launcher for the Felix
> framework to support web applications?
>
> -> richard
>
> On 10/7/09 0:27, Edelson, Justin wrote:
> > As mentioned in the HttpService release thread, I'd like to see a default
> ServletContextListener provided by Felix. I'm happy to provide a patch to do
> this, based on code I've already written (which is, in turn, based on Sling
> code). Before doing this, I'd like to get some feedback on what I believe
> the default behavior to be.
> >
> > Here's what I'd like to propose as a starting point for the default Felix
> webapp configuration:
> >
> > Felix will provide a ServletContextListener in the proxy module named
> DefaultFelixListener. This class will create a configuration map and then
> instantiate Felix using this map.
> > The map is populated with:
> > -- System properties
> > -- the contents of /WEB-INF/framework.properties
> > -- servlet context init params
> >
> > If this configuration map does not contain either
> org.osgi.framework.system.packages org.osgi.framework.system.packages.extra
> keys, the value of the org.osgi.framework.system.packages.extra property
> will be created by combining the following:
> > * the list of compendium packages
> > * the value of felix.webapp.system.packages.extra (if defined in the
> configuration map)
> > * javax.servlet and javax.servlet.http with a version corresponding to
> the result of
> ServletContext.getMajorVersion()+"."+ServletContext.getMinorVersion()
> >
> > The configuration map will also contain an instance of a class called
> BootstrapInstaller (see below), wrapped inside a list, under the
> felix.systembundles.activators key. Potentially, this this should be
> extensible using a protected hook method which subclasses can implement).
> >
> > (in the example code, #1 and #2 are handled by a separate class, but I'm
> not sure this is a good idea as it makes it harder for downstream users to
> override the default behavior)
> >
> > The BootstrapInstaller class, which implements BundleActivator, does the
> following:
> > * Save the BundleContext in a servlet context attribute named
> org.osgi.framework.BundleContext.
> > * Create a list of subdirectories under /WEB-INF/resources/bundles. Each
> subdirectory name must be parseable as a number. This number will be taken
> as the start level for the bundles contained within that directory.
> > * For each bundle (defined as files ending in .jar or .war) within each
> subdirectory of /WEB-INF/resources/bundles, read the manifest and ensure it
> has a symbolic name.
> > * Install or update each bundle:
> > -- if no bundle with the symbolic name is already installed
> > -- if a bundle with the same symbolic name is installed, but has an
> earlier version
> > -- if a bundle with the same symbolic name and version is installed, but
> the version ends in "-SNAPSHOT".
> > * Start all the installed bundles
> >
> > This behavior is basically a subset of what Sling currently does (except
> that Sling doesn't deal with war files or have the SNAPSHOT behavior, both
> of which I happen to need). Sling also does the "saving the bundle context
> as a servlet context attribute in a separate BundleActivator, which is
> reasonable enough).
> >
> > Thoughts?
> >
> >
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>
>
>

Reply via email to