Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

JSPservletPkg
Class JSPloader  view JSPloader download JSPloader.java

java.lang.Object
  extended byjava.lang.ClassLoader
      extended byJSPservletPkg.JSPloader

public class JSPloader
extends java.lang.ClassLoader

ClassLoader invoked by ClassEntry for a given jar name.

Copyright (c) 2000-2001

 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License
 as published by the Free Software Foundation; version 2
 of the License.
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 

Version:
1, 0

Nested Class Summary
(package private)  class JSPloader.ClassInfo
          Maintain class object and serial number.
(package private)  class JSPloader.ProtectionDomainInfo
          Maintain Protection Domains and CRL scheduled next update.
(package private)  class JSPloader.ResourceEntry
          ressources value - maintains a buffer containing the resource and a lastModified time.
 
Nested classes inherited from class java.lang.ClassLoader
 
Field Summary
(package private) static java.lang.Class ac
           
private static sun.security.provider.PolicyFile allPermissionPolicy
          application server policy
private  java.net.URL baseURL
          base URL for policy checking
private static java.security.cert.Certificate[] certificate0
          null certificate list (unsigned archive)
(package private)  java.util.HashMap classes
          Loaded classes HashMap.
private  java.lang.Object crlChecker
          CRLchecker instance
private  java.lang.reflect.Method crlCheckMethod
          CRLchecker check method
private static sun.security.provider.PolicyFile defaultPolicy
          policy set by default
(package private)  JSPhandler handler
          back pointer on JSPhandler
private static boolean isSSLset
          if true has tried to install jsse
(package private)  java.lang.String jarName
          jar name
(package private)  java.lang.String jarURL
          jar remote location (URL)
private  long lastModified
          cache file timestamp - used for caching
private  java.lang.Class pageBoxClass
          PageBoxAPI class - used at loadClass
(package private)  java.lang.ClassLoader parent
          parent class loader
private  sun.security.provider.PolicyFile policy
          policy used by loaded classes
private  java.lang.String policyFile
          policy file used by loaded classes
private  java.security.ProtectionDomain protectionDomain0
          ProtectionDomain for classes without certificate
private  java.util.HashMap protectionDomains
          map of protection domains
(package private)  java.util.HashMap resources
          Loaded resources HashMap.
(package private) static java.lang.Class RPAclass
           
(package private)  java.lang.reflect.Constructor RPAconstr
           
private  int size
          classes size
private static java.lang.String SSL_SERVICE
          JES2 jsse service.
private static org.osgi.framework.ServiceReference sslSR
          SSL service reference.
private static java.lang.String webInfClasses
          part to remove in case of war classes
 
Fields inherited from class java.lang.ClassLoader
 
Constructor Summary
JSPloader(JSPhandler jh, java.lang.String jarName, java.lang.String jarURL)
          Constructor.
 
Method Summary
private  boolean copyClassesURL()
          Copy classes from remote location (URL).
protected  void finalize()
          to avoid loitering
 long getLastModified(java.lang.String name)
          Returns resource timestamp
 java.io.InputStream getResourceAsStream(java.lang.String name)
          Externally called method (from Beans.Instantiate or to access resources).
private  java.io.InputStream getResourceForward(java.lang.String name)
          method called by getResourceAsStream.
(package private)  int getSize()
          Returns classes size.
 java.lang.Class loadClass(java.lang.String name, boolean resolve)
          Externally called method (from ClassEntry and JVM).
private  boolean loadClassDataFS()
          Loads class from local cache (File System).
private  boolean loadClassDataURL()
          Loads class from remote location (URL).
private  java.lang.Class loadForward(java.lang.String name)
          Forward load requests.
private  java.lang.String loadPolicy()
          Copy policy file from remote location (URL).
(package private)  JSPloader.ResourceEntry newResourceEntry()
          Helper method.
private  boolean parseStream(java.util.jar.JarInputStream jis, boolean toSave, boolean isWar)
          Parses the jar stream.
private static void setSSL(JSPhandler handler)
          Installs jsse.
 
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findResources, findSystemClass, getPackage, getPackages, getParent, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

handler

JSPhandler handler
back pointer on JSPhandler


jarURL

java.lang.String jarURL
jar remote location (URL)


jarName

java.lang.String jarName
jar name


classes

java.util.HashMap classes
Loaded classes HashMap. key: full class name value: ClassInfo

See Also:
JSPloader.ClassInfo

size

private int size
classes size


resources

java.util.HashMap resources
Loaded resources HashMap. key: remote location value: byte[]

See Also:
JSPloader.ResourceEntry

parent

java.lang.ClassLoader parent
parent class loader


baseURL

private java.net.URL baseURL
base URL for policy checking


defaultPolicy

private static sun.security.provider.PolicyFile defaultPolicy
policy set by default


allPermissionPolicy

private static sun.security.provider.PolicyFile allPermissionPolicy
application server policy


policy

private sun.security.provider.PolicyFile policy
policy used by loaded classes


policyFile

private java.lang.String policyFile
policy file used by loaded classes


webInfClasses

private static final java.lang.String webInfClasses
part to remove in case of war classes

See Also:
Constant Field Values

certificate0

private static final java.security.cert.Certificate[] certificate0
null certificate list (unsigned archive)


protectionDomain0

private java.security.ProtectionDomain protectionDomain0
ProtectionDomain for classes without certificate


protectionDomains

private java.util.HashMap protectionDomains
map of protection domains


lastModified

private long lastModified
cache file timestamp - used for caching


crlChecker

private java.lang.Object crlChecker
CRLchecker instance


crlCheckMethod

private java.lang.reflect.Method crlCheckMethod
CRLchecker check method


isSSLset

private static boolean isSSLset
if true has tried to install jsse


pageBoxClass

private java.lang.Class pageBoxClass
PageBoxAPI class - used at loadClass


SSL_SERVICE

private static final java.lang.String SSL_SERVICE
JES2 jsse service.

See Also:
Constant Field Values

sslSR

private static org.osgi.framework.ServiceReference sslSR
SSL service reference.


RPAconstr

java.lang.reflect.Constructor RPAconstr

RPAclass

static java.lang.Class RPAclass

ac

static java.lang.Class ac
Constructor Detail

JSPloader

public JSPloader(JSPhandler jh,
                 java.lang.String jarName,
                 java.lang.String jarURL)
          throws JSPloaderException
Constructor. Initialize variables. Can load classes without resolving them.
  1. If no sandbox:
    1. Tries loading classes from cache (loadClassDataFS).
    2. Tries loading classes from remote location (loadClassDataURL).
  2. If sandbox:
    1. Defines all permission and default policies.
    2. Loads archive policy and update keystore if needed.
    3. Instantiates CRLchecker.
    4. Tries loading classes from cache (loadClassDataFS).
    5. Tries copying archive from remote location and load classes.

Method Detail

setSSL

private static final void setSSL(JSPhandler handler)
Installs jsse.


getSize

final int getSize()
Returns classes size.


getLastModified

public final long getLastModified(java.lang.String name)
Returns resource timestamp


parseStream

private final boolean parseStream(java.util.jar.JarInputStream jis,
                                  boolean toSave,
                                  boolean isWar)
Parses the jar stream.
  1. Creates local cache if toSave.
  2. Scans jis. For each entry, write on local cache if toSave, define the class and save it in classes HashMap.


loadClassDataFS

private final boolean loadClassDataFS()
Loads class from local cache (File System).


copyClassesURL

private final boolean copyClassesURL()
Copy classes from remote location (URL).


loadPolicy

private final java.lang.String loadPolicy()
Copy policy file from remote location (URL).


loadClassDataURL

private final boolean loadClassDataURL()
Loads class from remote location (URL).


loadForward

private final java.lang.Class loadForward(java.lang.String name)
                                   throws java.lang.ClassNotFoundException
Forward load requests. To:
  1. Bootstrap and system class loaders (findSystemClass).
  2. JSPservlet class loader.
  3. Parent class loader.


loadClass

public java.lang.Class loadClass(java.lang.String name,
                                 boolean resolve)
                          throws java.lang.ClassNotFoundException
Externally called method (from ClassEntry and JVM).
  1. Calls loadForward for special suffixes.
  2. Find the requested class in classes cache.
  3. If not found, calls loadForward.


getResourceForward

private final java.io.InputStream getResourceForward(java.lang.String name)
method called by getResourceAsStream.


newResourceEntry

final JSPloader.ResourceEntry newResourceEntry()
Helper method. ResourceEntry is not in the scope of ResourcePrivilegeAction that needs to create it.


getResourceAsStream

public java.io.InputStream getResourceAsStream(java.lang.String name)
Externally called method (from Beans.Instantiate or to access resources). This method shouldn't be synchronized as URL handling requires time.


finalize

protected void finalize()
to avoid loitering