User: starksm 
  Date: 02/04/04 10:25:13

  Modified:    jetty/src/main/org/jboss/jetty Tag: Branch_2_4
                        JBossWebApplicationContext.java Jetty.java
                        JettyMBean.java JettyService.java
                        JettyServiceMBean.java
  Removed:     jetty/src/main/org/jboss/jetty Tag: Branch_2_4
                        JBossLogSink.java JBossUserRealm.java
  Log:
  Update jetty service for changes to AbstractWebContainer and move to
  Jetty-4.0.0.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.34.2.3  +157 -194  
contrib/jetty/src/main/org/jboss/jetty/JBossWebApplicationContext.java
  
  Index: JBossWebApplicationContext.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/contrib/jetty/src/main/org/jboss/jetty/JBossWebApplicationContext.java,v
  retrieving revision 1.34.2.2
  retrieving revision 1.34.2.3
  diff -u -r1.34.2.2 -r1.34.2.3
  --- JBossWebApplicationContext.java   20 Mar 2002 20:58:31 -0000      1.34.2.2
  +++ JBossWebApplicationContext.java   4 Apr 2002 18:25:12 -0000       1.34.2.3
  @@ -5,7 +5,7 @@
    * See terms of license at gnu.org.
    */
   
  -// $Id: JBossWebApplicationContext.java,v 1.34.2.2 2002/03/20 20:58:31 
jules_gosnell Exp $
  +// $Id: JBossWebApplicationContext.java,v 1.34.2.3 2002/04/04 18:25:12 starksm Exp $
   
   // A Jetty HttpServer with the interface expected by JBoss'
   // J2EEDeployer...
  @@ -16,12 +16,13 @@
   
   //------------------------------------------------------------------------------
   
  +import java.io.File;
   import java.io.FileNotFoundException;
   import java.io.IOException;
   import java.net.URL;
   import java.net.URLClassLoader;
   import javax.xml.parsers.DocumentBuilder;
  -import org.jboss.jetty.JBossUserRealm;
  +import org.jboss.jetty.security.JBossUserRealm;
   import org.jboss.logging.Logger;
   import org.jboss.web.AbstractWebContainer.WebDescriptorParser;
   import org.jboss.web.WebApplication;
  @@ -47,26 +48,27 @@
     WebDescriptorParser _descriptorParser;
     WebApplication      _webApp;
     DocumentBuilder     _parser;
  -  //  String              _subjAttrName="j_subject";
  +  String              _subjAttrName="j_subject";
   
     public
       JBossWebApplicationContext(Jetty jetty,
                               String contextPathSpec,
                               WebDescriptorParser descriptorParser,
                               WebApplication webApp,
  -                            DocumentBuilder parser/*,*/
  -                            /*String warUrl*/)
  +                            DocumentBuilder parser,
  +                            String warUrl)
       throws IOException
       {
   
  -      super(jetty, contextPathSpec/*, warUrl*/);
  +      super(jetty, contextPathSpec, warUrl);
   
         _log              = Logger.getLogger(getClass().getName()+"#" + 
contextPathSpec);
         _jetty            = jetty;
         _descriptorParser = descriptorParser;
         _webApp           = webApp;
         _parser           = parser;
  -      //      _subjAttrName     = jetty.getSubjectAttributeName();
  +      _subjAttrName     = jetty.getSubjectAttributeName();
  +
       }
   
     /* ------------------------------------------------------------ */
  @@ -88,7 +90,7 @@
          if (realmName!=null)
          {
            // these need to be cached and reused by name...MAYBE - TODO
  -         getHttpServer().addRealm(new JBossUserRealm(realmName));
  +         getHttpContext().getHttpServer().addRealm(new JBossUserRealm(realmName, 
_subjAttrName));
          }
   
          // this is causing a printout which implies a separate
  @@ -107,185 +109,178 @@
       getSecurityHandler()
       {
         SecurityHandler securityHandler=null;
  -      securityHandler=(SecurityHandler)getHandler(JBossSXSecurityHandler.class);
  +      securityHandler=(SecurityHandler)getHttpHandler(JBossSXSecurityHandler.class);
         if (securityHandler==null)
         {
        securityHandler=new JBossSXSecurityHandler();
  -     addHandler(0,securityHandler);
  +     addHttpHandler(0,securityHandler);
         }
         return securityHandler;
       }
   
     // avoid Jetty maoning about things that it doesn't but AbstractWebContainer does 
do...
   
  -  //   protected void
  -  //     initWebXmlElement(String element, org.mortbay.xml.XmlParser.Node node)
  -  //     throws Exception
  -  //     {
  -  //       // this is ugly - should be dispatched through a hash-table or 
introspection...
  -  //
  -  //       // these are handled by AbstractWebContainer
  -  //       if ("resource-ref".equals(element) ||
  -  //           "env-entry".equals(element) ||
  -  //           "ejb-ref".equals(element) ||
  -  //           "ejb-local-ref".equals(element) ||
  -  //           "security-domain".equals(element))
  -  //       {
  -  //         //_log.info("Don't moan : "+element);
  -  //       }
  -  //       else if ("distributable".equals(element))
  -  //       {
  -  //         
((DistributedHttpSessionManager)getServletHandler().getSessionManager()).
  -  //           setDistributed(true);
  -  //       }
  -  //       // these are handled by Jetty
  -  //       else
  -  //         super.initWebXmlElement(element, node);
  -  //     }
  +  protected void
  +    initWebXmlElement(String element, org.mortbay.xml.XmlParser.Node node)
  +    throws Exception
  +    {
  +      // this is ugly - should be dispatched through a hash-table or 
introspection...
  +
  +      // these are handled by AbstractWebContainer
  +      if ("resource-ref".equals(element) ||
  +       "env-entry".equals(element) ||
  +       "ejb-ref".equals(element) ||
  +       "ejb-local-ref".equals(element) ||
  +       "security-domain".equals(element))
  +      {
  +     //_log.info("Don't moan : "+element);
  +      }
  +      // these are handled by Jetty
  +      else
  +     super.initWebXmlElement(element, node);
  +    }
   
     // hack our class loader to be Java2 compliant - i.e. always
     // delegate upwards before looking locally. This will be changed to
     // a non-compliant strategy later when JBoss' new ClassLoader is
     // ready.
   
  -  //   protected void initClassLoader(boolean forceContextLoader)
  -  //     throws java.net.MalformedURLException, IOException
  -  //     {
  -  //       // force the creation of a context class loader for JBoss
  -  //       // web apps
  -  //       super.initClassLoader(true);
  -  //
  -  //       ClassLoader _loader=getClassLoader();
  -  //       if (_loader instanceof org.mortbay.http.ContextLoader)
  -  //         
((org.mortbay.http.ContextLoader)_loader).setJava2Compliant(_jetty.getJava2ClassLoadingCompliance());
  -  //     }
  +  protected void initClassLoader(boolean forceContextLoader)
  +    throws java.net.MalformedURLException, IOException
  +    {
  +      // force the creation of a context class loader for JBoss
  +      // web apps
  +      super.initClassLoader(true);
  +
  +      ClassLoader _loader=getClassLoader();
  +      if (_loader instanceof org.mortbay.http.ContextLoader)
  +     
((org.mortbay.http.ContextLoader)_loader).setJava2Compliant(_jetty.getJava2ClassLoadingCompliance());
  +    }
  +
  +  String _separator=System.getProperty("path.separator");
  +
  +  public String
  +    getFileClassPath()
  +    {
  +      List List=new ArrayList();
  +      getFileClassPath(getClassLoader(), List);
  +
  +      String classpath="";
  +      for (Iterator i=List.iterator(); i.hasNext();)
  +      {
  +     URL url=(URL)i.next();
  +
  +     if (url.getProtocol().equals("njar"))
  +     {
  +       try
  +       {
  +         // force the resource we are after to be unpacked - tmp hack - thanks 
David Jencks!
  +         URL dummy=new URL("njar:"+url.toString()+"^"+"/dummy.jar");
  +         String tmp=dummy.openConnection().getURL().toString();
  +         tmp=tmp.substring("jar:".length());
  +         tmp=tmp.substring(0, tmp.length()-"!/dummy.jar".length());
  +         _log.info("converting "+url+" -> "+tmp);
  +         url=new URL(tmp);
  +       }
  +       catch (Exception ignore)
  +       {
  +       }
  +     }
  +
  +     if (!url.getProtocol().equals("file")) // tmp warning
  +     {
  +       _log.warn("JSP classpath: non-'file' protocol: "+url);
  +       continue;
  +     }
  +
  +     try
  +     {
  +       Resource res = Resource.newResource (url);
  +       if (res.getFile()==null)
  +         _log.warn("bad classpath entry: "+url);
  +       else
  +       {
  +         String tmp=res.getFile().getCanonicalPath();
  +         //      _log.info("JSP FILE: "+url+" --> "+tmp+" : "+url.getProtocol());
  +         classpath+=(classpath.length()==0?"":_separator)+tmp;
  +       }
  +     }
  +     catch (IOException ioe)
  +     {
  +       _log.warn ("JSP Classpath is damaged, can't convert path for :"+url, ioe);
  +     }
  +      }
  +
  +      _log.info("JSP classpath: "+classpath);
  +      return classpath;
  +    }
  +
  +  public void
  +    getFileClassPath(ClassLoader cl, List list)
  +    {
  +      if (cl==null)
  +     return;
  +
  +      URL[] urls=null;
  +
  +      if (cl instanceof java.net.URLClassLoader)
  +     urls=((java.net.URLClassLoader)cl).getURLs();
  +
  +      //      _log.info("CLASSLOADER: "+cl);
  +      //      _log.info("URLs: "+(urls!=null?urls.length:0));
  +
  +      if (urls!=null)
  +     for (int i=0; i<urls.length; i++)
  +     {
  +       URL url=urls[i];
  +       //      _log.info("URL: "+url);
  +       if (!list.contains(url))
  +         list.add(url);
  +     }
  +
  +      getFileClassPath(cl.getParent(), list);
  +    }
   
  -//   String _separator=System.getProperty("path.separator");
  -//
   //   public String
  -//     getFileClassPath()
  +//     getFileClassPath(ClassLoader cl)
   //     {
  -//       List List=new ArrayList();
  -//       getFileClassPath(getClassLoader(), List);
  -//
   //       String classpath="";
  -//       for (Iterator i=List.iterator(); i.hasNext();)
  -//       {
  -//   URL url=(URL)i.next();
  -//
  -//   //      if (url.getProtocol().equals("njar"))
  -//   //      {
  -//   //        try
  -//   //        {
  -//   //          URLConnection conn=url.openConnection();
  -//   //          //url=conn.getURL();
  -//   //          _log.warn("JSP CONNECTION: "+conn);
  -//   //        }
  -//   //        catch (IOException ignore)
  -//   //        {
  -//   //        }
  -//   //      }
  +//       String[] entries=_jetty.getCompileClasspath(cl);
   //
  -//   if (!url.getProtocol().equals("file")) // tmp warning
  -//   {
  -//     _log.warn("JSP classpath: non-'file' protocol: "+url);
  -//     continue;
  -//   }
  -//
  -//           try
  -//           {
  -//             Resource res = Resource.newResource (url);
  -//             if (res.getFile()==null)
  -//               _log.warn("bad classpath entry: "+url);
  -//             else
  -//             {
  -//               String tmp=res.getFile().getCanonicalPath();
  -//       //      _log.info("JSP FILE: "+url+" --> "+tmp+" : "+url.getProtocol());
  -//       if (classpath.indexOf(tmp)==-1) // TODO - we should do this
  -//         classpath+=(classpath.length()==0?"":_separator)+tmp;
  -//             }
  -//           }
  -//           catch (IOException ioe)
  -//           {
  -//             _log.warn ("JSP Classpath is damaged, can't convert path for :"+url, 
ioe);
  -//           }
  +//       for (int i=0; i<entries.length; i++)
  +//       {
  +//   try
  +//   {
  +//     Resource res = Resource.newResource (entries[i]);
  +//     if (res.getFile()==null)
  +//       _log.warn("bad classpath entry: "+entries[i]);
  +//     else
  +//     {
  +//       String tmp=res.getFile().getCanonicalPath();
  +//       classpath+=(classpath.length()==0?"":_separator)+tmp;
  +//     }
  +//   }
  +//   catch (IOException ioe)
  +//   {
  +//     _log.warn ("JSP Classpath is damaged, can't convert path for :"+entries[i], 
ioe);
  +//   }
   //       }
   //
  -//       _log.info("JSP classpath: "+classpath);
  -//       return classpath;
  -//     }
  -//
  -//   public void
  -//     getFileClassPath(ClassLoader cl, List list)
  -//     {
  -//       if (cl==null)
  -//   return;
  -//
  -//       URL[] urls=null;
  -//
  -//       /*
  -//       if (cl instanceof org.jboss.system.UnifiedClassLoader)
  -//   urls=((org.jboss.system.UnifiedClassLoader)cl).getAllURLs();
  -//       else if (cl instanceof org.jboss.system.MBeanClassLoader)
  -//   urls=((org.jboss.system.MBeanClassLoader)cl).getURLs();
  -//   else */ if (cl instanceof java.net.URLClassLoader)
  -//   urls=((java.net.URLClassLoader)cl).getURLs();
  -//
  -//       _log.info("CLASSLOADER: "+cl);
  -//       _log.info("URLs: "+(urls!=null?urls.length:0));
  +//       if (_log.isDebugEnabled())
  +//   _log.debug("JSP classpath: "+classpath);
   //
  -//       if (urls!=null)
  -//   for (int i=0; i<urls.length; i++)
  -//   {
  -//     URL url=urls[i];
  -//     _log.info("URL: "+url);
  -//     if (!list.contains(url))
  -//       list.add(url);
  -//   }
  -//
  -//       getFileClassPath(cl.getParent(), list);
  +//       return classpath;
   //     }
   
  -  //   public String
  -  //     getFileClassPath(ClassLoader cl)
  -  //     {
  -  //       String classpath="";
  -  //       String[] entries=_jetty.getCompileClasspath(cl);
  -  //
  -  //       for (int i=0; i<entries.length; i++)
  -  //       {
  -  //         try
  -  //         {
  -  //           Resource res = Resource.newResource (entries[i]);
  -  //           if (res.getFile()==null)
  -  //             _log.warn("bad classpath entry: "+entries[i]);
  -  //           else
  -  //           {
  -  //             String tmp=res.getFile().getCanonicalPath();
  -  //             classpath+=(classpath.length()==0?"":_separator)+tmp;
  -  //           }
  -  //         }
  -  //         catch (IOException ioe)
  -  //         {
  -  //           _log.warn ("JSP Classpath is damaged, can't convert path for 
:"+entries[i], ioe);
  -  //         }
  -  //       }
  -  //
  -  //       if (_log.isDebugEnabled())
  -  //         _log.debug("JSP classpath: "+classpath);
  -  //
  -  //       return classpath;
  -  //     }
  -
     // given a resource name, find the jar file that contains that resource...
  -  //   protected String
  -  //     findJarByResource(String resource)
  -  //     throws Exception
  -  //     {
  -  //       String path=getClass().getClassLoader().getResource(resource).toString();
  -  //       // lose initial "jar:file:" and final "!/..."
  -  //       return 
path.substring("jar:file:".length(),path.length()-(resource.length()+2));
  -  //     }
  +  protected String
  +    findJarByResource(String resource)
  +    throws Exception
  +    {
  +      String path=getClass().getClassLoader().getResource(resource).toString();
  +      // lose initial "jar:file:" and final "!/..."
  +      return 
path.substring("jar:file:".length(),path.length()-(resource.length()+2));
  +    }
   
     protected void
       startHandlers()
  @@ -304,41 +299,9 @@
   
         try
         {
  -     // MANDATORY - web.xml
  -     Resource web=getResource("/WEB-INF/web.xml");
  -     _webApp.setWebApp(_parser.parse(new 
InputSource(web.toString())).getDocumentElement());
  -      }
  -      catch (Exception e)
  -      {
  -     _log.error("problem locating web.xml", e);
  -      }
  -
  -      try
  -      {
  -     // OPTIONAL - jboss-web.xml
  -     Resource jbossWeb=getResource("/WEB-INF/jboss-web.xml");
  -     if (jbossWeb!=null)
  -       
_webApp.setJbossWeb(_parser.parse(jbossWeb.getInputStream()).getDocumentElement());
  -      }
  -      catch (FileNotFoundException e)
  -      {
  -     _log.debug("no jboss-web.xml found");
  -      }
  -      catch (IOException e)
  -      {
  -     _log.debug("no jboss-web.xml found");
  -      }
  -      catch (Exception e)
  -      {
  -        _log.error("problem locating jboss-web.xml", e);
  -      }
  -
  -      try
  -      {
        _log.debug("setting up ENC...");
        _descriptorParser.parseWebAppDescriptors(_webApp.getClassLoader(),
  -                                              _webApp.getWebApp(),
  -                                              _webApp.getJbossWeb());
  +                                              _webApp.getMetaData());
        _log.debug("setting up ENC succeeded");
         }
         catch (Exception e)
  
  
  
  1.9.2.10  +253 -54   contrib/jetty/src/main/org/jboss/jetty/Jetty.java
  
  Index: Jetty.java
  ===================================================================
  RCS file: /cvsroot/jboss/contrib/jetty/src/main/org/jboss/jetty/Jetty.java,v
  retrieving revision 1.9.2.9
  retrieving revision 1.9.2.10
  diff -u -r1.9.2.9 -r1.9.2.10
  --- Jetty.java        20 Mar 2002 20:58:31 -0000      1.9.2.9
  +++ Jetty.java        4 Apr 2002 18:25:12 -0000       1.9.2.10
  @@ -5,7 +5,7 @@
    * See terms of license at gnu.org.
    */
   
  -// $Id: Jetty.java,v 1.9.2.9 2002/03/20 20:58:31 jules_gosnell Exp $
  +// $Id: Jetty.java,v 1.9.2.10 2002/04/04 18:25:12 starksm Exp $
   
   // A Jetty HttpServer with the interface expected by JBoss'
   // J2EEDeployer...
  @@ -16,28 +16,53 @@
   
   //------------------------------------------------------------------------------
   
  -
  -import java.io.FileNotFoundException;
  +import java.io.ByteArrayOutputStream;
  +import java.io.IOException;
   import java.net.URL;
   import java.util.Hashtable;
   import javax.xml.parsers.DocumentBuilder;
   import javax.xml.parsers.DocumentBuilderFactory;
  +import javax.xml.transform.Transformer;
  +import javax.xml.transform.TransformerConfigurationException;
  +import javax.xml.transform.TransformerException;
  +import javax.xml.transform.TransformerFactory;
  +import javax.xml.transform.dom.DOMSource;
  +import javax.xml.transform.stream.StreamResult;
   import org.jboss.deployment.DeploymentException;
  +import org.jboss.jetty.xml.JettyResolver;
   import org.jboss.logging.Logger;
   import org.jboss.security.SecurityAssociation;
   import org.jboss.web.AbstractWebContainer.WebDescriptorParser;
   import org.jboss.web.WebApplication;
  -import org.mortbay.http.HandlerContext;
  +import org.mortbay.http.HttpContext;
   import org.mortbay.http.HttpException;
  -import org.mortbay.http.HttpHandler;
   import org.mortbay.http.HttpRequest;
   import org.mortbay.http.HttpResponse;
   import org.mortbay.jetty.servlet.WebApplicationContext;
   import org.mortbay.util.MultiException;
  -import org.mortbay.util.Resource;
  +import org.mortbay.xml.XmlConfiguration;
  +import org.w3c.dom.Element;
   
   //------------------------------------------------------------------------------
   
  +/**
  + * <description>
  + *
  + * @author <a href="mailto:[EMAIL PROTECTED]";>Julian Gosnell</a>
  + * @author  <a href="mailto:[EMAIL PROTECTED]";>Andreas Schaefer</a>.
  + * @version $Revision: 1.9.2.10 $
  + *
  + * <p><b>Revisions:</b>
  + *
  + * <p><b>20011201 andreas:</b>
  + * <ul>
  + * <li>Fixed fixURL() because it is to "Unix" centric. Right now the
  + *     method looks for the last part of the JAR URL (file:/...) which
  + *     should be the JAR file name and add a "/." before them. Now this
  + *     should work for Windows as well (the problem with windows was that
  + *     after "file:" came the DRIVE LETTER which created a wrong URL).
  + * </ul>
  + **/
   public class Jetty
     extends org.mortbay.jetty.Server
   {
  @@ -47,6 +72,12 @@
     Logger                        _log     = Logger.getLogger(Jetty.class);
     JettyService                  _service;
   
  +  // the XML snippet
  +  String _xmlConfigString = null;
  +
  +  // the XML snippet as a DOM element
  +  Element _configElement = null;
  +
     Jetty(JettyService service)
     {
       super();
  @@ -57,13 +88,18 @@
       JettyResolver resolver = new JettyResolver();
   
       // populate dtd resolver
  -    URL stdWeb22=findResourceInJar("org/mortbay/jetty/servlet/web.dtd");
  +    URL stdWeb22=findResourceInJar("javax/servlet/resources/web-app_2_2.dtd");
       resolver.put("-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN", 
stdWeb22);
  +    URL stdWeb23=findResourceInJar("javax/servlet/resources/web-app_2_3.dtd");
  +    resolver.put("-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN", 
stdWeb23);
   
       URL jbossWeb2=findResourceInJar("org/jboss/metadata/jboss-web.dtd");
       resolver.put("-//jBoss//DTD Web Application 2.2//EN", jbossWeb2);
       resolver.put("-//JBoss//DTD Web Application 2.2//EN", jbossWeb2);
   
  +    URL jbossWeb3=findResourceInJar("org/jboss/metadata/jboss-web_3_0.dtd");
  +    resolver.put("-//JBoss//DTD Web Application 2.3//EN", jbossWeb3);
  +
       try
       {
         _parser=_factory.newDocumentBuilder();
  @@ -81,23 +117,6 @@
     }
   
     //----------------------------------------
  -  // jettyHome property
  -  //----------------------------------------
  -
  -  synchronized void
  -    setJettyHome(String jettyHome) // not public
  -  {
  -    if (jettyHome!=null)
  -      System.setProperty("jetty.home", jettyHome);
  -  }
  -
  -  public synchronized String
  -    getJettyHome()
  -  {
  -    return System.getProperty("jetty.home");
  -  }
  -
  -  //----------------------------------------
     // class loader delegation policy property
     //----------------------------------------
     boolean _loaderCompliance = true;
  @@ -146,10 +165,33 @@
   
     String _webDefault;
   
  +  /** If a webdefault.xml file has been specified in
  +   * jboss-service.xml then we try and use that.
  +   *
  +   * If we cannot find it, then we will use the one
  +   * shipped as standard with Jetty and issue a warning.
  +   *
  +   * If the jboss-service.xml file does not specify a
  +   * custom one, then we again default to the standard one.
  +   * @param webDefault
  +   */
     public synchronized void
       setWebDefault(String webDefault)
     {
  -    _webDefault=webDefault;
  +    if (webDefault != null)
  +    {
  +      URL webDefaultURL = findResourceInJar(webDefault);
  +      if (webDefaultURL != null)
  +     _webDefault=fixURL(webDefaultURL.toString());
  +      else
  +     _webDefault = null;
  +      _log.warn ("Cannot find resource for "+webDefault+": using default");
  +    }
  +    else
  +      _webDefault = null;
  +
  +    if (_log.isDebugEnabled())
  +      _log.debug ("webdefault specification is: "+_webDefault);
     }
   
     public synchronized String
  @@ -159,34 +201,162 @@
     }
   
     //----------------------------------------
  -  // configuration property
  +  // distributedStore property
  +  //----------------------------------------
  +
  +  String _storageStrategy;
  +
  +  public synchronized void
  +    setHttpSessionStorageStrategy(String storageStrategy)
  +  {
  +    _storageStrategy=storageStrategy;
  +  }
  +
  +  public synchronized String
  +    getHttpSessionStorageStrategy()
  +  {
  +    return _storageStrategy;
  +  }
  +
  +  //----------------------------------------
  +  // snapshotFrequency property
     //----------------------------------------
   
  -  String _configuration=null;
  +  String _snapshotFrequency;
   
     public synchronized void
  -    setConfiguration(String configUrl)
  +    setHttpSessionSnapshotFrequency(String snapshotFrequency)
  +  {
  +    _snapshotFrequency=snapshotFrequency;
  +  }
  +
  +  public synchronized String
  +    getHttpSessionSnapshotFrequency()
     {
  -    if (configUrl==null)
  -      return;
  +    return _snapshotFrequency;
  +  }
  +
  +  //----------------------------------------
  +  // snapshotNotificationPolicy property
  +  //----------------------------------------
  +
  +  String _snapshotNotificationPolicy;
  +
  +  public synchronized void
  +    setHttpSessionSnapshotNotificationPolicy(String snapshotNotificationPolicy)
  +  {
  +    _snapshotNotificationPolicy=snapshotNotificationPolicy;
  +  }
  +
  +  public synchronized String
  +    getHttpSessionSnapshotNotificationPolicy()
  +  {
  +    return _snapshotNotificationPolicy;
  +  }
  +
  +  //----------------------------------------
  +  // subjectAttributeName property
  +  //----------------------------------------
  +
  +  String _subjectAttributeName;
  +
  +  public synchronized void
  +    setSubjectAttributeName(String subjectAttributeName)
  +  {
  +    _subjectAttributeName=subjectAttributeName;
  +  }
  +
  +  public synchronized String
  +    getSubjectAttributeName()
  +  {
  +    return _subjectAttributeName;
  +  }
  +
  +  //----------------------------------------
  +  // configuration property
  +  //----------------------------------------
  +
  +  public Element
  +    getConfigurationElement()
  +  {
  +    return _configElement;
  +  }
  +
  +  /**
  +   * @param configElement XML fragment from jboss-service.xml
  +   */
  +  public void
  +    setConfigurationElement(Element configElement)
  +  {
  +
  +    // convert to an xml string to pass into Jetty's normal
  +    // configuration mechanism
  +    _configElement = configElement;
   
       try
       {
  -      _log.info("loading config: "+configUrl);
  -      configure(configUrl);
  -      _log.info("loaded config: "+configUrl);
  -      _configuration=configUrl;
  +      DOMSource source = new DOMSource(configElement);
  +
  +      ByteArrayOutputStream stream = new ByteArrayOutputStream();
  +
  +      StreamResult result = new StreamResult (stream);
  +
  +      TransformerFactory factory = TransformerFactory.newInstance();
  +      Transformer transformer = factory.newTransformer();
  +      transformer.transform (source, result);
  +
  +      _xmlConfigString = stream.toString();
  +
  +      // get rid of the first line, as this will be prepended by
  +      // the XmlConfiguration
  +      int index = _xmlConfigString.indexOf("?>");
  +      if ( index >= 0)
  +      {
  +     index += 2;
  +
  +     while ((_xmlConfigString.charAt(index) == '\n')
  +            ||
  +            (_xmlConfigString.charAt(index) == '\r'))
  +       index++;
  +      }
  +
  +      _xmlConfigString = _xmlConfigString.substring(index);
  +
  +      _log.debug ("Passing xml config to jetty:\n"+_xmlConfigString);
  +
  +      setXMLConfiguration (_xmlConfigString);
  +
  +    }
  +    catch (TransformerConfigurationException tce)
  +    {
  +      _log.error ("Can't transform config Element -> xml:", tce);
  +    }
  +    catch (TransformerException te)
  +    {
  +      _log.error ("Can't transform config Element -> xml:", te);
       }
       catch (Exception e)
       {
  -      _log.error("problem loading configuration: "+configUrl, e);
  +      _log.error("Unexpected exception converting configuration Element -> xml", e);
       }
     }
   
  -  public synchronized String
  -    getConfiguration()
  +  /* Actually perform the configuration
  +   * @param xmlString
  +   */
  +  private void
  +    setXMLConfiguration(String xmlString)
     {
  -    return _configuration;
  +
  +    try
  +    {
  +      XmlConfiguration xmlConfigurator = new XmlConfiguration (xmlString);
  +      xmlConfigurator.configure(this);
  +    }
  +    catch (Exception e)
  +    {
  +      _log.error("problem configuring Jetty:", e);
  +    }
     }
   
     //----------------------------------------------------------------------------
  @@ -195,11 +365,11 @@
   
     Hashtable _deployed = new Hashtable(); // use Hashtable because is is synchronised
   
  -  public WebApplication
  -    deploy(String contextPath, String warUrl, WebDescriptorParser descriptorParser)
  +  public void
  +    deploy(WebApplication wa, String warUrl, WebDescriptorParser descriptorParser)
       throws DeploymentException
     {
  -    WebApplication wa=new WebApplication();
  +     String contextPath = wa.getMetaData().getContextRoot();
   
       try
       {
  @@ -211,15 +381,14 @@
        _log.warn("A WebApplication is already deployed in context '"+contextPath+"' - 
proceed at your own risk.");
   
         String fixedWarUrl=warUrl+(warUrl.endsWith("/")?"":"/");
  -      //      String fixedWarUrl=warUrl;
   
         // deploy the WebApp
         WebApplicationContext app=
        new JBossWebApplicationContext(this, contextPath,
  -                                    descriptorParser, wa, _parser/*,
  -                                                                   fixedWarUrl*/);
  +                                    descriptorParser, wa, _parser,
  +                                    fixedWarUrl);
  +
   
  -      /*
         // configure whether the context is to flatten the classes in
         // the WAR or not
         app.setExtractWAR (getUnpackWars());
  @@ -227,8 +396,8 @@
   
         // if a different webdefaults.xml file has been provided, use it
         if (getWebDefault() != null)
  -      app.setDefaultsDescriptor (getWebDefault());
  -      */
  +     app.setDefaultsDescriptor (getWebDefault());
  +
   
         String virtualHost=null;
         addContext(virtualHost, app);
  @@ -236,7 +405,6 @@
         try
         {
        // finally start the app
  -     app.initialize(fixedWarUrl, getWebDefault(), getUnpackWars());
        app.start();
         }
         catch (MultiException me)
  @@ -259,7 +427,6 @@
         throw new DeploymentException(e.getMessage());
       }
   
  -    return wa;
     }
   
     public void
  @@ -274,7 +441,8 @@
         app.stop();
   
         removeContext(app);
  -      app.destroy();
  +      //      app.destroy();
  +      app=null;
   
         _deployed.remove(warUrl);
   
  @@ -314,6 +482,36 @@
       return url;
     }
   
  +  // work around broken JarURLConnection caching...
  +  static String
  +    fixURL(String url)
  +  {
  +    // Get the separator of the JAR URL and the file reference
  +    int index = url.indexOf( '!' );
  +    if( index >= 0 ) {
  +      index = url.lastIndexOf( '/', index );
  +    } else {
  +      index = url.lastIndexOf( '/' );
  +    }
  +    // Now add a "./" before the JAR file to add a different path
  +    if( index >= 0 ) {
  +      return
  +        url.substring( 0, index ) +
  +        "/." +
  +        url.substring( index );
  +    } else {
  +      // Now forward slash found then there is severe problem with
  +      // the URL but here we just ignore it
  +      return url;
  +    }
  +  }
  +
  +  public String[]
  +    getCompileClasspath(ClassLoader cl)
  +  {
  +    return _service.getCompileClasspath(cl);
  +  }
  +
     /** Override service method to allow ditching of security info
      * after a request has been processed
      * @param request
  @@ -322,9 +520,9 @@
      * @exception IOException
      * @exception HttpException
      */
  -  public org.mortbay.http.HandlerContext
  -    service(HttpRequest request, HttpResponse response)
  -    throws HttpException, java.io.IOException
  +  public HttpContext
  +    service(HttpRequest request,HttpResponse response)
  +    throws IOException, HttpException
     {
       try
       {
  @@ -332,7 +530,8 @@
       }
       finally
       {
  -      SecurityAssociation.setPrincipal(null);
  +        SecurityAssociation.setPrincipal(null);
  +        SecurityAssociation.setCredential(null);
       }
     }
   }
  
  
  
  1.2.2.3   +10 -10    contrib/jetty/src/main/org/jboss/jetty/JettyMBean.java
  
  Index: JettyMBean.java
  ===================================================================
  RCS file: /cvsroot/jboss/contrib/jetty/src/main/org/jboss/jetty/JettyMBean.java,v
  retrieving revision 1.2.2.2
  retrieving revision 1.2.2.3
  diff -u -r1.2.2.2 -r1.2.2.3
  --- JettyMBean.java   17 Sep 2001 23:10:57 -0000      1.2.2.2
  +++ JettyMBean.java   4 Apr 2002 18:25:12 -0000       1.2.2.3
  @@ -13,21 +13,21 @@
   import javax.management.MBeanException;
   import javax.management.MBeanServer;
   import javax.management.ObjectName;
  -import org.mortbay.jetty.jmx.HttpServerMBean;
  +import org.mortbay.jetty.jmx.ServerMBean;
   
   public class JettyMBean
  -  extends HttpServerMBean
  +  extends ServerMBean
   {
  -  public JettyMBean(Jetty jetty)
  -    throws MBeanException, InstanceNotFoundException
  +  public static final String JBOSS_DOMAIN = "jboss.web";
  +
  +  static
     {
  -    super(jetty);
  +    setDefaultDomain (JBOSS_DOMAIN);
     }
   
  -  protected String
  -    newObjectName(MBeanServer server)
  +  public JettyMBean(Jetty jetty)
  +    throws MBeanException, InstanceNotFoundException
     {
  -    //return super.newObjectName(server);
  -    return uniqueObjectName(server, "Jetty"+":");
  +    super(jetty);
     }
   }
  
  
  
  1.15.2.5  +408 -410  contrib/jetty/src/main/org/jboss/jetty/JettyService.java
  
  Index: JettyService.java
  ===================================================================
  RCS file: /cvsroot/jboss/contrib/jetty/src/main/org/jboss/jetty/JettyService.java,v
  retrieving revision 1.15.2.4
  retrieving revision 1.15.2.5
  diff -u -r1.15.2.4 -r1.15.2.5
  --- JettyService.java 20 Mar 2002 20:58:31 -0000      1.15.2.4
  +++ JettyService.java 4 Apr 2002 18:25:12 -0000       1.15.2.5
  @@ -1,410 +1,408 @@
  -/*
  - * jBoss, the OpenSource EJB server
  - *
  - * Distributable under GPL license.
  - * See terms of license at gnu.org.
  - */
  -
  -// $Id: JettyService.java,v 1.15.2.4 2002/03/20 20:58:31 jules_gosnell Exp $
  -
  -//------------------------------------------------------------------------------
  -
  -package org.jboss.jetty;
  -
  -//------------------------------------------------------------------------------
  -
  -import java.io.File;
  -import java.io.IOException;
  -import java.io.InputStream;
  -import java.net.URL;
  -import java.util.Hashtable;
  -import java.util.Vector;
  -import javax.management.MBeanRegistration;
  -import javax.management.MBeanServer;
  -import javax.management.ObjectName;
  -import org.jboss.deployment.DeploymentException;
  -import org.jboss.util.ServiceMBeanSupport;
  -import org.jboss.web.AbstractWebContainer.WebDescriptorParser;
  -import org.jboss.web.AbstractWebContainer;
  -import org.jboss.web.WebApplication;
  -import org.mortbay.http.HandlerContext;
  -import org.mortbay.http.HttpServer;
  -import org.mortbay.jetty.jmx.HttpServerMBean;
  -import org.mortbay.jetty.servlet.WebApplicationContext;
  -import org.mortbay.util.Log;
  -import org.mortbay.xml.XmlConfiguration;
  -
  -//------------------------------------------------------------------------------
  -/**
  - *   A service to launch jetty from JMX.
  - *
  - *   @see <related>
  - *   @author <a href="mailto:[EMAIL PROTECTED]";>Julian Gosnell</a>
  - *   @version $Revision: 1.15.2.4 $
  - */
  -
  -public class JettyService
  -  extends AbstractWebContainer
  -  implements JettyServiceMBean, MBeanRegistration
  -{
  -  public static final String NAME = "Jetty";
  -
  -  JettyMBean   _mbean  = null;
  -  Jetty        _jetty  = null;
  -  MBeanServer  _server = null;
  -
  -  public
  -    JettyService()
  -  {
  -    // moved this from initialise-time to construct-time to ensure
  -    // that logging models are connected before configure-time (via
  -    // MLET file) which is done before initialise-time.
  -    ensureLogging();
  -  }
  -
  -  //----------------------------------------------------------------------------
  -
  -  public ObjectName
  -    preRegister(MBeanServer server, ObjectName name)
  -    throws java.lang.Exception
  -  {
  -    name = getObjectName(server, name);
  -    _server = server;
  -
  -    return name;
  -  }
  -
  -  //----------------------------------------------------------------------------
  -
  -  protected void
  -    ensureLogging()
  -  {
  -    // sort out a JBossLogSink for use by Jetty. This will bridge the
  -    // API between Jetty and Log4J...
  -
  -    JBossLogSink logSink = new JBossLogSink();
  -    try
  -    {
  -      logSink.initialize(log.getCategory());
  -    }
  -    catch(Exception e)
  -    {
  -      log.error("Could not initialise logging bridge", e);
  -    }
  -
  -    logSink.start();
  -    Log.instance().disableLog(); // remove default logger
  -    Log.instance().add(logSink);
  -
  -    // why doesn't this work? - investigate...
  -    //    _jetty.setLogSink(logSink);
  -
  -    log.info("connected JBoss and Jetty Log models");
  -  }
  -
  -  protected void
  -    ensureProperties()
  -    throws IOException
  -  {
  -    String props="jetty.properties";
  -    InputStream propertiesIn = 
getClass().getClassLoader().getResourceAsStream(props);
  -
  -    if (propertiesIn == null)
  -      throw new IOException("failed to load "+props);
  -
  -    System.getProperties().load(propertiesIn);
  -
  -    log.info("loaded properties from: "+props);
  -  }
  -
  -  protected void
  -    ensureJetty()
  -  {
  -    // make a Jetty...
  -    Jetty tmp = new Jetty(this); // tmp - until we have initialised it...
  -    tmp.setJettyHome(getJettyHome());
  -    tmp.setWebDefault(getWebDefault());
  -    tmp.setUnpackWars(getUnpackWars());
  -
  -    _jetty=tmp;              // now we are initialised.
  -
  -    log.info("instantiated and configured server");
  -  }
  -
  -  protected void
  -    ensureConfig()
  -  {
  -    // this must be done before config is read otherwise configs
  -    // defined therein will not receive MBean peers.
  -    if (getPublishMBeans())
  -    {
  -      try
  -      {
  -     log.info("MBean peers WILL be created for Jetty Contexts");
  -     _mbean  = new JettyMBean(_jetty);
  -     _server.registerMBean(_mbean, new ObjectName(_mbean.newObjectName(_server)));
  -      }
  -      catch (Throwable e)
  -      {
  -     log.error("JMX Registration problem", e);
  -      }
  -    }
  -    else
  -    {
  -      log.info("MBean peers WILL NOT be created for Jetty Contexts");
  -    }
  -
  -    _jetty.setConfiguration(_configuration);
  -  }
  -
  -  protected void
  -    ensureService()
  -    throws Exception
  -  {
  -    ensureProperties();
  -    ensureJetty();
  -    ensureConfig();
  -  }
  -
  -  //----------------------------------------------------------------------------
  -  // 'name' interface
  -  //----------------------------------------------------------------------------
  -
  -  public ObjectName
  -    getObjectName(MBeanServer server, ObjectName name)
  -    throws javax.management.MalformedObjectNameException
  -  {
  -    return new ObjectName(OBJECT_NAME);
  -  }
  -
  -  public String
  -    getName()
  -  {
  -    return NAME;
  -  }
  -
  -  //----------------------------------------------------------------------------
  -  // 'service' interface
  -  //----------------------------------------------------------------------------
  -
  -  public void
  -    initService()
  -    throws Exception
  -  {
  -    if (!isInitialised())
  -    {
  -      super.initService();
  -      try {ensureService();} catch (Exception e) {e.printStackTrace();}
  -    }
  -    else
  -      log.warn("Jetty has already been initialised");
  -  }
  -
  -  protected boolean _started=false;
  -
  -  public void
  -    startService()
  -    throws Exception
  -  {
  -    if (!isStarted())
  -    {
  -      super.startService();
  -      _jetty.start();
  -      _started=true;
  -    }
  -    else
  -      log.warn("Jetty has already been started");
  -  }
  -
  -  public void
  -    stopService()
  -  {
  -    if (!isStopped())
  -    {
  -      super.stopService();
  -      try
  -      {
  -     _jetty.stop();
  -      }
  -      catch (Exception e)
  -      {
  -     log.error("Could not stop Jetty", e);
  -      }
  -      _started=false;
  -    }
  -    else
  -      log.warn("Jetty has already been stopped");
  -  }
  -
  -  public void
  -    destroyService()
  -  {
  -    if (!isDestroyed())
  -    {
  -      super.destroyService();
  -      _jetty.destroy();
  -      _jetty=null;
  -      _mbean=null;
  -    }
  -    else
  -      log.warn("Jetty has already been destroyed");
  -  }
  -
  -  //----------------------------------------------------------------------------
  -  // 'deploy' interface
  -  //----------------------------------------------------------------------------
  -
  -  public WebApplication
  -    performDeploy(String path, String warUrl, WebDescriptorParser parser)
  -    throws DeploymentException
  -  {
  -    return _jetty.deploy(path, warUrl, parser);
  -  }
  -
  -  public void
  -    performUndeploy(String warUrl)
  -    throws DeploymentException
  -  {
  -    _jetty.undeploy(warUrl);
  -  }
  -
  -  //----------------------------------------------------------------------------
  -
  -  protected boolean
  -    isInitialised()
  -  {
  -    return (_jetty!=null);
  -  }
  -
  -  protected boolean
  -    isStarted()
  -  {
  -    return (_jetty!=null && _started);
  -  }
  -
  -  protected boolean
  -    isStopped()
  -  {
  -    return (!_started);
  -  }
  -
  -  protected boolean
  -    isDestroyed()
  -  {
  -    return (_jetty==null);
  -  }
  -
  -  //----------------------------------------------------------------------------
  -
  -  protected boolean _publishMBeans=false;
  -
  -  public boolean
  -    getPublishMBeans()
  -  {
  -    return _publishMBeans;
  -  }
  -
  -  public void
  -    setPublishMBeans(boolean publishMBeans)
  -  {
  -    log.info("set PublishMBeans to "+publishMBeans);
  -
  -    _publishMBeans=publishMBeans;
  -  }
  -
  -  //----------------------------------------------------------------------------
  -
  -  protected boolean _unpackWars=false;
  -
  -  public boolean
  -    getUnpackWars()
  -  {
  -    if (isInitialised())
  -      return _jetty.getUnpackWars();
  -    else
  -      return _unpackWars;
  -  }
  -
  -  public void
  -    setUnpackWars(boolean unpackWars)
  -  {
  -    log.info("set UnpackWars to "+unpackWars);
  -
  -    if (isInitialised())
  -      _jetty.setUnpackWars(unpackWars);
  -    else
  -      _unpackWars=unpackWars;
  -  }
  -
  -  //----------------------------------------------------------------------------
  -
  -  protected String _webDefault=null;
  -
  -  public String
  -    getWebDefault()
  -  {
  -    if (isInitialised())
  -      return _jetty.getWebDefault();
  -    else
  -      return _webDefault;
  -  }
  -
  -  public void
  -    setWebDefault(String webDefault)
  -  {
  -    log.info("set WebDefault to "+webDefault);
  -
  -    if (isInitialised())
  -      _jetty.setWebDefault(webDefault);
  -    else
  -      _webDefault=webDefault;
  -  }
  -
  -  //----------------------------------------------------------------------------
  -
  -  protected String _configuration=null;
  -
  -  public String
  -    getConfiguration()
  -  {
  -    if (isInitialised())
  -      return _jetty.getConfiguration();
  -    else
  -      return _configuration;
  -  }
  -
  -  public void
  -    setConfiguration(String configUrl)
  -  {
  -    log.info("set Configuration to "+configUrl);
  -
  -    if (isInitialised())
  -      _jetty.setConfiguration(configUrl);
  -    else
  -      _configuration=configUrl;
  -  }
  -
  -  //----------------------------------------------------------------------------
  -
  -  protected static String _jettyHome=null;
  -
  -  public String
  -    getJettyHome()
  -  {
  -    if (isInitialised())
  -      return _jetty.getJettyHome();
  -    else
  -      return _jettyHome;
  -  }
  -
  -  public void
  -    setJettyHome(String jettyHome)
  -  {
  -    log.info("set JettyHome to "+jettyHome);
  -
  -    if (isInitialised())
  -      _jetty.setJettyHome(jettyHome);
  -    else
  -      _jettyHome=jettyHome;
  -  }
  -}
  +/*
  + * jBoss, the OpenSource EJB server
  + *
  + * Distributable under GPL license.
  + * See terms of license at gnu.org.
  + */
  +
  +// $Id: JettyService.java,v 1.15.2.5 2002/04/04 18:25:12 starksm Exp $
  +
  +//------------------------------------------------------------------------------
  +
  +package org.jboss.jetty;
  +
  +//------------------------------------------------------------------------------
  +
  +import java.util.Iterator;
  +import javax.management.MBeanRegistration;
  +import javax.management.MBeanServer;
  +import javax.management.MalformedObjectNameException;
  +import javax.management.ObjectName;
  +import org.jboss.deployment.DeploymentException;
  +import org.jboss.jetty.log.JBossLogSink;
  +import org.jboss.logging.Logger;
  +import org.jboss.web.AbstractWebContainer.WebDescriptorParser;
  +import org.jboss.web.AbstractWebContainer;
  +import org.jboss.web.WebApplication;
  +import org.mortbay.util.Log;
  +import org.mortbay.util.MultiException;
  +import org.mortbay.util.jmx.CodeMBean;
  +import org.mortbay.util.jmx.LogMBean;
  +import org.w3c.dom.Element;
  +
  +//------------------------------------------------------------------------------
  +/**
  + * A service to launch jetty from JMX.
  + *
  + * @author <a href="mailto:[EMAIL PROTECTED]";>Julian Gosnell</a>
  + * @version $Revision: 1.15.2.5 $
  + */
  +
  +public class JettyService
  +  extends AbstractWebContainer
  +  implements JettyServiceMBean, MBeanRegistration
  +{
  +  public static final String NAME = "Jetty";
  +
  +  // delegate to Jetty
  +  protected MBeanServer _server       = null;
  +  protected Jetty       _jetty        = null;
  +  protected JettyMBean  _jettyBean    = null;
  +  protected ObjectName  _codeBeanName = null;
  +  protected CodeMBean   _codeBean     = null;
  +  protected ObjectName  _logBeanName  = null;
  +  protected LogMBean    _logbean      = null;
  +
  +  public
  +    JettyService()
  +  {
  +    super();
  +
  +    // sort out a JBossLogSink for use by Jetty. This will bridge the
  +    // API between Jetty and Log4J...
  +    JBossLogSink logSink = new JBossLogSink();
  +    try
  +    {
  +      logSink.initialize(Logger.getLogger(Jetty.class.getName()));
  +    }
  +    catch(Exception e)
  +    {
  +      log.error("could not connect JBoss and Jetty Log models", e);
  +    }
  +
  +    logSink.start();
  +    Log.instance().disableLog(); // remove default logger
  +    Log.instance().add(logSink);
  +
  +    log.debug("connected JBoss and Jetty Log models");
  +
  +    _jetty = new Jetty(this);
  +  }
  +
  +  //----------------------------------------------------------------------------
  +  // utils...
  +  //----------------------------------------------------------------------------
  +
  +  /**
  +   * mex should implement a better printStackTrace...
  +   */
  +  protected void
  +    log(MultiException e)
  +  {
  +    log.error("multiple exceptions...");
  +    Iterator iter = e.getExceptions().iterator();
  +    while (iter.hasNext())
  +      log.error("exception", (Exception)iter.next());
  +  }
  +
  +  //----------------------------------------------------------------------------
  +
  +  public ObjectName
  +    preRegister(MBeanServer server, ObjectName name)
  +    throws Exception
  +  {
  +    super.preRegister(server,name);
  +    name = getObjectName(server, name);
  +    _server = server;
  +
  +    return name;
  +  }
  +
  +  public void
  +    postRegister(Boolean done)
  +  {
  +    super.postRegister(done);
  +
  +    // this must be done before config is read otherwise configs
  +    // defined therein will not receive MBean peers. Since it must now
  +    // be done before JMX has a chance to configure us, I'm removing
  +    // the option not to have these MBeans built...
  +    try
  +    {
  +      _jettyBean    = new JettyMBean(_jetty);
  +      _server.registerMBean(_jettyBean, null);
  +
  +      _codeBean     = new CodeMBean();
  +      _codeBeanName = new ObjectName(JettyMBean.JBOSS_DOMAIN+":Jetty=Debug");
  +      _server.registerMBean(_codeBean, _codeBeanName);
  +
  +      _logbean      = new LogMBean();
  +      _logBeanName  = new ObjectName(JettyMBean.JBOSS_DOMAIN+":Jetty=Log");
  +      _server.registerMBean(_logbean, _logBeanName);
  +    }
  +    catch (Throwable e)
  +    {
  +      log.error("could not create MBean peers", e);
  +    }
  +
  +    log.debug("created MBean peers");
  +  }
  +
  +  //----------------------------------------------------------------------------
  +  // 'name' interface
  +  //----------------------------------------------------------------------------
  +
  +  public ObjectName
  +    getObjectName(MBeanServer server, ObjectName name)
  +    throws MalformedObjectNameException
  +  {
  +    return new ObjectName(OBJECT_NAME);
  +  }
  +
  +  public String
  +    getName()
  +  {
  +    return NAME;
  +  }
  +
  +  //----------------------------------------------------------------------------
  +  // 'service' interface
  +  //----------------------------------------------------------------------------
  +
  +  public void
  +    initService()
  +    throws Exception
  +  {
  +    super.initService();
  +  }
  +
  +  public void
  +    startService()
  +    throws Exception
  +  {
  +    super.startService();
  +
  +    try
  +    {
  +      _jetty.start();
  +    }
  +    catch (MultiException e)
  +    {
  +      log(e);
  +    }
  +    catch (Exception e)
  +    {
  +      log.error("could not start Jetty", e);
  +    }
  +  }
  +
  +  public void
  +    stopService() throws Exception
  +  {
  +    super.stopService();
  +
  +    try
  +    {
  +      _jetty.stop();
  +    }
  +    catch (Exception e)
  +    {
  +      log.error("could not stop Jetty", e);
  +    }
  +  }
  +
  +  public void
  +    destroyService()
  +    throws Exception
  +  {
  +    super.destroyService();
  +
  +    // this is not symmetrical - these things are created in
  +    // postRegister, not createService()...
  +    try
  +    {
  +      _jetty.destroy();
  +      _jetty    =null;
  +      _jettyBean=null;
  +    }
  +    catch (Throwable e)
  +    {
  +      log.error("could not destroy Jetty", e);
  +    }
  +
  +    try
  +    {
  +      _server.unregisterMBean(_codeBeanName);
  +      _codeBean=null;
  +      _server.unregisterMBean(_logBeanName);
  +      _logbean=null;
  +    }
  +    catch(Exception e)
  +    {
  +      log.error("could not tidy up MBeans", e);
  +    }
  +  }
  +
  +  //----------------------------------------------------------------------------
  +  // 'deploy' interface
  +  //----------------------------------------------------------------------------
  +
  +  protected void performDeploy(WebApplication webApp, String warUrl,
  +        WebDescriptorParser parser) throws DeploymentException
  +  {
  +    _jetty.deploy(webApp, warUrl, parser);
  +  }
  +
  +  public void
  +    performUndeploy(String warUrl)
  +    throws DeploymentException
  +  {
  +    _jetty.undeploy(warUrl);
  +  }
  +
  +  //----------------------------------------------------------------------------
  +  // Jetty properties - delegated directly...
  +  //----------------------------------------------------------------------------
  +
  +  //----------------------------------------
  +  // class loader delegation policy property
  +  //----------------------------------------
  +
  +  /**
  +   * @param loaderCompliance if true, Jetty delegates class loading
  +   *to parent class loader first, false implies servlet spec 2.3 compliance
  +   */
  +  public void
  +    setJava2ClassLoadingCompliance(boolean loaderCompliance)
  +  {
  +    if (log.isDebugEnabled())
  +      log.debug("set Java2ClassLoadingCompliance to "+ loaderCompliance);
  +
  +    _jetty.setJava2ClassLoadingCompliance(loaderCompliance);
  +  }
  +
  +  /**
  +   * @return true if Java2 style class loading delegation, false if
  +   *servlet2.3 spec compliance
  +   */
  +  public boolean
  +    getJava2ClassLoadingCompliance()
  +  {
  +    return _jetty.getJava2ClassLoadingCompliance();
  +  }
  +
  +  //----------------------------------------------------------------------------
  +
  +  public boolean
  +    getUnpackWars()
  +  {
  +    return _jetty.getUnpackWars();
  +  }
  +
  +  public void
  +    setUnpackWars(boolean unpackWars)
  +  {
  +    if (log.isDebugEnabled())
  +      log.debug("set UnpackWars to "+unpackWars);
  +
  +    _jetty.setUnpackWars(unpackWars);
  +  }
  +
  +  //----------------------------------------------------------------------------
  +
  +  public String
  +    getWebDefault()
  +  {
  +    return _jetty.getWebDefault();
  +  }
  +
  +  public void
  +    setWebDefault(String webDefault)
  +  {
  +    if (log.isDebugEnabled())
  +      log.debug("set WebDefault to "+webDefault);
  +
  +    _jetty.setWebDefault(webDefault);
  +  }
  +
  +  //----------------------------------------------------------------------------
  +
  +  public String
  +    getHttpSessionStorageStrategy()
  +  {
  +    return _jetty.getHttpSessionStorageStrategy();
  +  }
  +
  +  public void
  +    setHttpSessionStorageStrategy(String storageStrategy)
  +  {
  +    if (log.isDebugEnabled())
  +      log.debug("set HttpSessionStorageStrategy to "+storageStrategy);
  +
  +    _jetty.setHttpSessionStorageStrategy(storageStrategy);
  +  }
  +
  +  //----------------------------------------------------------------------------
  +
  +  public String
  +    getHttpSessionSnapshotFrequency()
  +  {
  +    return _jetty.getHttpSessionSnapshotFrequency();
  +  }
  +
  +  public void
  +    setHttpSessionSnapshotFrequency(String snapshotFrequency)
  +  {
  +    if (log.isDebugEnabled())
  +      log.debug("set HttpSessionSnapshotFrequency to "+snapshotFrequency);
  +
  +    _jetty.setHttpSessionSnapshotFrequency(snapshotFrequency);
  +  }
  +
  +  //----------------------------------------------------------------------------
  +
  +  public String
  +    getHttpSessionSnapshotNotificationPolicy()
  +  {
  +    return _jetty.getHttpSessionSnapshotNotificationPolicy();
  +  }
  +
  +  public void
  +    setHttpSessionSnapshotNotificationPolicy(String snapshotNotificationPolicy)
  +  {
  +    if (log.isDebugEnabled())
  +      log.debug("set HttpSessionSnapshotNotificationPolicy to 
"+snapshotNotificationPolicy);
  +
  +    _jetty.setHttpSessionSnapshotNotificationPolicy(snapshotNotificationPolicy);
  +  }
  +
  +  //----------------------------------------------------------------------------
  +  /** Get the extended Jetty configuration XML fragment
  +   * @return Jetty XML fragment embedded in jboss-service.xml
  +   */
  +
  +  public Element
  +    getConfigurationElement()
  +  {
  +    return _jetty.getConfigurationElement();
  +  }
  +
  +  /** Configure Jetty
  +   * @param configElement XML fragment from jboss-service.xml
  +   */
  +  public void
  +    setConfigurationElement(Element configElement)
  +  {
  +    log.debug("set Configuration to xml fragment");
  +    _jetty.setConfigurationElement (configElement);
  +  }
  +
  +  //----------------------------------------------------------------------------
  +
  +  public String
  +    getSubjectAttributeName()
  +  {
  +    return _jetty.getSubjectAttributeName();
  +  }
  +
  +  public void
  +    setSubjectAttributeName(String subjectAttributeName)
  +  {
  +    if (log.isDebugEnabled())
  +      log.debug("set SubjectAttributeName to "+subjectAttributeName);
  +
  +    _jetty.setSubjectAttributeName(subjectAttributeName);
  +  }
  +
  +  //----------------------------------------------------------------------------
  +}
  
  
  
  1.5.2.3   +48 -47    contrib/jetty/src/main/org/jboss/jetty/JettyServiceMBean.java
  
  Index: JettyServiceMBean.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/contrib/jetty/src/main/org/jboss/jetty/JettyServiceMBean.java,v
  retrieving revision 1.5.2.2
  retrieving revision 1.5.2.3
  diff -u -r1.5.2.2 -r1.5.2.3
  --- JettyServiceMBean.java    2 Dec 2001 02:08:53 -0000       1.5.2.2
  +++ JettyServiceMBean.java    4 Apr 2002 18:25:12 -0000       1.5.2.3
  @@ -1,47 +1,48 @@
  -/*
  - * jBoss, the OpenSource EJB server
  - *
  - * Distributable under GPL license.
  - * See terms of license at gnu.org.
  - */
  - 
  -// $Id: JettyServiceMBean.java,v 1.5.2.2 2001/12/02 02:08:53 starksm Exp $
  - 
  -package org.jboss.jetty;
  -
  -import org.jboss.deployment.DeploymentException;
  -
  -/**
  - *   <description> 
  - *      
  - *   @see <related>
  - *   @author <a href="mailto:[EMAIL PROTECTED]";>Sebastien Alborini</a>
  - *   @version $Revision: 1.5.2.2 $
  - */
  -public interface JettyServiceMBean
  -  extends org.jboss.web.AbstractWebContainerMBean
  -{
  -  
  -  // Constants -----------------------------------------------------
  -  public static final String OBJECT_NAME = ":service=Jetty";
  -  
  -  // Public --------------------------------------------------------
  -
  -  public void setConfiguration(String configUrl);
  -  public String getConfiguration();
  -
  -  //  public void setProperty(String property);
  -  //  public String getProperty();
  -
  -  public boolean getPublishMBeans();
  -  public void setPublishMBeans(boolean publishMBeans);
  -
  -  public boolean getUnpackWars();
  -  public void setUnpackWars(boolean unpackWars);
  -
  -  public String getWebDefault();
  -  public void setWebDefault(String webDefault);
  -
  -  public void setJettyHome(String jettyHome);
  -  public String getJettyHome();
  -}
  +/*
  + * jBoss, the OpenSource EJB server
  + *
  + * Distributable under GPL license.
  + * See terms of license at gnu.org.
  + */
  +
  +package org.jboss.jetty;
  +
  +import javax.management.ObjectName;
  +import org.jboss.deployment.DeploymentException;
  +import org.w3c.dom.Element;
  +
  +/**
  + * ???
  + *
  + * @author <a href="mailto:[EMAIL PROTECTED]";>Sebastien Alborini</a>
  + * @version $Revision: 1.5.2.3 $
  + */
  +public interface JettyServiceMBean
  +   extends org.jboss.web.AbstractWebContainerMBean
  +{
  +  String OBJECT_NAME = "jboss.web:service=Jetty";
  +
  +  public void setConfigurationElement (Element configElement);
  +  public Element getConfigurationElement ();
  +
  +  public boolean getUnpackWars();
  +  public void setUnpackWars(boolean unpackWars);
  +
  +  public String getWebDefault();
  +  public void setWebDefault(String webDefault);
  +
  +  public String getHttpSessionStorageStrategy();
  +  public void setHttpSessionStorageStrategy(String storageStrategy);
  +
  +  public String getHttpSessionSnapshotFrequency();
  +  public void setHttpSessionSnapshotFrequency(String snapshotFrequency);
  +
  +  public String getHttpSessionSnapshotNotificationPolicy();
  +  public void setHttpSessionSnapshotNotificationPolicy(String 
snapshotNotificationPolicy);
  +
  +  public String getSubjectAttributeName();
  +  public void setSubjectAttributeName(String subjectAttributeName);
  +
  +  public boolean getJava2ClassLoadingCompliance ();
  +  public void setJava2ClassLoadingCompliance(boolean compliance);
  +}
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to