hammant 2003/01/08 23:42:49 Modified: sevak jetty.xml sevak/src/java/org/apache/avalon/apps/sevak/blocks/jetty JettySevak.java SevakWebApplicationContext.java Added: sevak/src/java/org/apache/avalon/apps/sevak/blocks/jetty SevakServletHolder.java SevakWebApplicationHandler.java Log: Jetty upgraded to pre-release 4.2.5 version. Release coems in about 3 weeks. Extensions to servet handling added. Revision Changes Path 1.11 +20 -11 jakarta-avalon-apps/sevak/jetty.xml Index: jetty.xml =================================================================== RCS file: /home/cvs/jakarta-avalon-apps/sevak/jetty.xml,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- jetty.xml 7 Jan 2003 23:13:00 -0000 1.10 +++ jetty.xml 9 Jan 2003 07:42:49 -0000 1.11 @@ -60,7 +60,7 @@ <!-- Jetty stuff --> - <property name ="jetty.rel" value="4.2.4"/> + <property name ="jetty.rel" value="4.2.5-pr20030108"/> <property name="jetty.jars.dir" value="${lib.dir}/jetty-jars"/> @@ -118,24 +118,33 @@ <target name="get-jetty"> <mkdir dir="jetty-download"/> - - <get src="http://unc.dl.sourceforge.net/sourceforge/jetty/Jetty-${jetty.rel}.zip" - dest="jetty-download/Jetty-${jetty.rel}.zip" + + <!-- + <get src="http://unc.dl.sourceforge.net/sourceforge/jetty/Jetty-${jetty.rel}.zip" + dest="jetty-download/Jetty-${jetty.rel}.zip" verbose="true" usetimestamp="true"/> - + --> + + <!-- temporarily point to EOB site --> + + <get src="http://www.enterpriseobjectbroker.org/Jetty-${jetty.rel}.zip" + dest="jetty-download/Jetty-${jetty.rel}.zip" + verbose="true" + usetimestamp="true"/> + <unzip src="jetty-download/Jetty-${jetty.rel}.zip" dest="jetty-download/Jetty-${jetty.rel}" /> - - <delete file="${jetty.jars.dir}/*.jar"/> - + + <delete file="${jetty.jars.dir}/*.jar"/> + <copy todir="${jetty.jars.dir}" flatten="true"> <fileset dir="jetty-download/Jetty-${jetty.rel}"> <include name="**/lib/*.jar"/> </fileset> </copy> - - </target> - + + </target> + <!-- prepare --> <target name="prepare" depends="checkNeccesaryJars" > </target> 1.10 +15 -2 jakarta-avalon-apps/sevak/src/java/org/apache/avalon/apps/sevak/blocks/jetty/JettySevak.java Index: JettySevak.java =================================================================== RCS file: /home/cvs/jakarta-avalon-apps/sevak/src/java/org/apache/avalon/apps/sevak/blocks/jetty/JettySevak.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- JettySevak.java 8 Jan 2003 07:13:02 -0000 1.9 +++ JettySevak.java 9 Jan 2003 07:42:49 -0000 1.10 @@ -16,6 +16,9 @@ import org.apache.avalon.framework.context.Contextualizable; import org.apache.avalon.framework.logger.AbstractLogEnabled; import org.apache.avalon.framework.CascadingRuntimeException; +import org.apache.avalon.framework.service.Serviceable; +import org.apache.avalon.framework.service.ServiceManager; +import org.apache.avalon.framework.service.ServiceException; import org.apache.avalon.apps.sevak.Sevak; import org.apache.avalon.apps.sevak.SevakException; import org.apache.avalon.phoenix.BlockContext; @@ -44,7 +47,7 @@ * @version 1.0 */ public class JettySevak extends AbstractLogEnabled implements Sevak, Startable, Contextualizable, - Configurable, Initializable + Configurable, Initializable, Serviceable { private Server m_server; @@ -55,6 +58,7 @@ private HashMap m_webapps = new HashMap(); private int m_port; private File m_sarRootDir; + private ServiceManager m_serviceManager; /** @@ -65,6 +69,15 @@ } /** + * @param serviceManager + * @throws ServiceException + */ + public void service(ServiceManager serviceManager) throws ServiceException + { + m_serviceManager = serviceManager; + } + + /** * Contextualize * @param context the context */ @@ -150,7 +163,7 @@ // WebApplicationContext ctx = m_server.addWebApplication(m_hostName, context, webAppURL); WebApplicationContext ctx = - new SevakWebApplicationContext(m_sarRootDir, webAppURL); + new SevakWebApplicationContext(m_serviceManager, m_sarRootDir, webAppURL); ctx.setContextPath(context); m_server.addContext(m_hostName,ctx); 1.2 +29 -1 jakarta-avalon-apps/sevak/src/java/org/apache/avalon/apps/sevak/blocks/jetty/SevakWebApplicationContext.java Index: SevakWebApplicationContext.java =================================================================== RCS file: /home/cvs/jakarta-avalon-apps/sevak/src/java/org/apache/avalon/apps/sevak/blocks/jetty/SevakWebApplicationContext.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- SevakWebApplicationContext.java 1 Dec 2002 23:57:24 -0000 1.1 +++ SevakWebApplicationContext.java 9 Jan 2003 07:42:49 -0000 1.2 @@ -8,6 +8,9 @@ package org.apache.avalon.apps.sevak.blocks.jetty; import org.mortbay.jetty.servlet.WebApplicationContext; +import org.mortbay.jetty.servlet.ServletHandler; +import org.mortbay.jetty.servlet.WebApplicationHandler; +import org.apache.avalon.framework.service.ServiceManager; import java.io.IOException; import java.io.File; @@ -29,12 +32,14 @@ private File m_sarRoot; private File m_phoenixLib; + private ServiceManager m_serviceManager; - public SevakWebApplicationContext(File sarRoot, String webAppURL) throws IOException + public SevakWebApplicationContext(ServiceManager serviceManager, File sarRoot, String webAppURL) throws IOException { super(webAppURL); m_sarRoot = sarRoot; m_phoenixLib = new File(sarRoot.getParentFile().getParentFile(),"lib"); + m_serviceManager = serviceManager; } @@ -50,6 +55,29 @@ classpath += new File(m_sarRoot, "jsplibs" + File.separator + "javax.servlet.jar") + File.pathSeparator; classpath += new File(m_phoenixLib, "tools.jar"); return classpath; + } + + public synchronized ServletHandler getServletHandler() { +// super.getServletHandler(); + +// ServletHandler shandler = (ServletHandler)getHandler(org.mortbay.jetty.servlet.ServletHandler.class); +// if(shandler == null) { +// shandler = new SevakServletHandler(serviceManager); +// addHandler(shandler); +// } +// return shandler; + + if(_webAppHandler == null) { + _webAppHandler = (WebApplicationHandler)getHandler(SevakWebApplicationHandler.class); + if(_webAppHandler == null) { + if(getHandler(org.mortbay.jetty.servlet.ServletHandler.class) != null) + throw new IllegalStateException("Cannot have ServletHandler in WebApplicationContext"); + _webAppHandler = new SevakWebApplicationHandler(m_serviceManager); + addHandler(_webAppHandler); + } + } + return _webAppHandler; + } } 1.1 jakarta-avalon-apps/sevak/src/java/org/apache/avalon/apps/sevak/blocks/jetty/SevakServletHolder.java Index: SevakServletHolder.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.avalon.apps.sevak.blocks.jetty; import org.mortbay.jetty.servlet.ServletHolder; import org.apache.avalon.framework.service.Serviceable; import org.apache.avalon.framework.service.ServiceManager; import org.apache.avalon.framework.service.ServiceException; /** * * Override for Jetty's ServletHolder allow custom servlet handling * * * @see <a href="http://jetty.mortbay.com/">Jetty Project Page</a> * * @author Paul Hammant * @version 1.0 */ public class SevakServletHolder extends ServletHolder { private ServiceManager m_serviceManager; public SevakServletHolder(ServiceManager serviceManager, SevakWebApplicationHandler handler, String name, String className, String forcedPath) { // this constructor public or protected... super(handler, name, className, forcedPath); m_serviceManager = serviceManager; } public synchronized Object newInstance() throws InstantiationException, IllegalAccessException { if(_class == null) throw new InstantiationException("No class for " + this); else { Object instance = _class.newInstance(); if (instance instanceof Serviceable) { try { ((Serviceable) instance).service(m_serviceManager); } catch (ServiceException e) { throw new InstantiationException("Service Exception for servlet " + _class.getName() + ":" + e.getMessage()); } } return instance; } } } 1.1 jakarta-avalon-apps/sevak/src/java/org/apache/avalon/apps/sevak/blocks/jetty/SevakWebApplicationHandler.java Index: SevakWebApplicationHandler.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.avalon.apps.sevak.blocks.jetty; import org.mortbay.jetty.servlet.WebApplicationHandler; import org.mortbay.jetty.servlet.ServletHolder; import org.apache.avalon.framework.service.ServiceManager; /** * * Override for Jetty's WebApplicationHandler allow custom servlet handling * * * @see <a href="http://jetty.mortbay.com/">Jetty Project Page</a> * * @author Paul Hammant * @version 1.0 */ public class SevakWebApplicationHandler extends WebApplicationHandler { ServiceManager m_serviceManager; public SevakWebApplicationHandler(ServiceManager serviceManager) { m_serviceManager = serviceManager; } public ServletHolder newServletHolder(String name, String servletClass, String forcedPath) { if(_nameMap.containsKey(name)) { throw new IllegalArgumentException("Named servlet already exists: " + name); } else { ServletHolder holder = new SevakServletHolder(m_serviceManager, this, name, servletClass, forcedPath); _nameMap.put(holder.getName(), holder); return holder; } } }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>