I'm not sure I understand what the relationship is between what you're doing 
and Jakarta Commons, if there is one. Note that Jasper is part of the Tomcat 
project, so I would suggest asking over there.

--
Martin Cooper


On 9/5/05, Gilles Dodinet <[EMAIL PROTECTED]> wrote:
> 
> hi-
> 
> i'm trying to execute jsp in an osgi context with no luck as of today.
> i've embedded jetty as an osgi bundle and registered a BundleListener
> which registers installed bundles as webapp if they contain a web
> descriptor file. so far so good. it plays nice with simple html files.
> however i'm encountering troubles when it comes to jsp. generated
> servlets don't compile anything because javax.servlet.* classes are not
> found (please note that the transformation process is successfull).
> 
> in the manifest i declare javax.servlet as Import-Package (most prolly
> this seems to cause the issue) and jetty, jasper and related
> dependencies as bundled libs. Also as jasper seems to require an
> urlclassloader i've come up with a (pretty simple) custom urlclassloader
> which delegates all calls to either the target bundle (i.e. the
> installed bundle which wraps the webapp) or the current bundle. jasper
> classes are succesfully loaded, but not the javax.servlet.* classes.
> googling about this using various criteria gives me in only three
> relevant results :
> 
> 1/ embedded pagebox whose earlier version (2001) targets the same
> problematic as me. since it is released under lgpl i've tried to use it
> to match my specific needs, however it pretty quick became total hackery
> - 2000 lines src files not maintained since 2001 or so and they
> duplicate lot of services already provided by containers.
> 2/ a thread on oscar user list with no anwer
> 3/ a wiki page (entitled 'Tomcat as osgi bundles' and hosted on safehaus
> - with just a listing of bundles i'm unable to find) so i thought i
> could ask here if someone came to a solution to this problem. Has it
> already be done yet ?
> 
> below are the relevant manifest entries and webapp registration code.
> the target bundle as no Import-Package and no classes (just the simplest
> hello world). webapp registration [1] assigns the currentThead
> contextClassLoader to the simple delegating classloader discussed above
> - needed to start the webapp, and [2] sets the WebApplicationContext
> ClassLoader to the exact same ClassLoader - which i thought would have
> provided javax.servlet.* classes.
> 
> this may not be the best list for this question (should i rather ask on
> jetty or triplesec user lists ?), anyway thanks for any input.
> 
> 
> Import-Package: org.osgi.service.http,javax.servlet,
> javax.servlet.http,org.osgi.framework,net.joss.utils
> Bundle-Classpath: .,
> org.mortbay.jetty-5.1.4.jar,
> commons-logging-1.0.4.jar,
> servlet-api-2.4.jar,
> xerces-2.4.0.jar,
> xmlParserAPIs-2.6.2.jar,
> xml-apis-2.0.2.jar,
> jsp-api-2.0.jar,
> jasper-compiler-5.5.9.jar,
> jasper-runtime-5.5.9.jar,
> commons-el-1.0.jar,
> ant-1.6.2.jar
> 
> class JettyWrapper
> {
> public void createApplication(final String appName, final File app,
> final Bundle fromBundle)
> {
> Thread thread = new Thread()
> {
> public void run()
> {
> try
> {
> ClassLoader loader = new DelegatingClassLoader(
> fromBundle,
> this.getClass().getClassLoader());
> 
> 
> Thread.currentThread().setContextClassLoader(loader); [1]
> 
> String location = app.getAbsolutePath();
> 
> WebApplicationContext context =
> jetty.addWebApplication("/" + appName,
> location);
> 
> context.setClassLoader(loader); [2]
> ...
> context.start();
> }
> catch (Exception e)
> {
> LOG.error("Unable to start '" + appName + "'
> context", e);
> }
> }
> };
> 
> thread.start();
> 
> }
> }
> 
> -- gd
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
>

Reply via email to