e.g. Calendar Search Help
You must enter a value before pressing Search
axis

Class: org.apache.axis.utils.JWSClassLoader   ©

 OK to copy?
001 /*
002  * The Apache Software License, Version 1.1
003  *
004  *
005  * Copyright (c) 2002-2003 The Apache Software Foundation.  All rights
006  * reserved.
007  *
008  * Redistribution and use in source and binary forms, with or without
009  * modification, are permitted provided that the following conditions
010  * are met:
011  *
012  * 1. Redistributions of source code must retain the above copyright
013  *    notice, this list of conditions and the following disclaimer.
014  *
015  * 2. Redistributions in binary form must reproduce the above copyright
016  *    notice, this list of conditions and the following disclaimer in
017  *    the documentation and/or other materials provided with the
018  *    distribution.
019  *
020  * 3. The end-user documentation included with the redistribution,
021  *    if any, must include the following acknowledgment:
022  *       "This product includes software developed by the
023  *    Apache Software Foundation (http://www.apache.org/)."
024  *    Alternately, this acknowledgment may appear in the software itself,
025  *    if and wherever such third-party acknowledgments normally appear.
026  *
027  * 4. The names "Axis" and "Apache Software Foundation" must
028  *    not be used to endorse or promote products derived from this
029  *    software without prior written permission. For written
030  *    permission, please contact apache@apache.org.
031  *
032  * 5. Products derived from this software may not be called "Apache",
033  *    nor may "Apache" appear in their name, without prior written
034  *    permission of the Apache Software Foundation.
035  *
036  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
037  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
038  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
039  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
040  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
041  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
042  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
043  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
044  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
045  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
046  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
047  * SUCH DAMAGE.
048  * ====================================================================
049  *
050  * This software consists of voluntary contributions made by many
051  * individuals on behalf of the Apache Software Foundation.  For more
052  * information on the Apache Software Foundation, please see
053  * <http://www.apache.org/>.
054  */
055 package org.apache.axis.utils;
056 
057 import java.io.ByteArrayOutputStream;
058 import java.io.FileInputStream;
059 import java.io.FileNotFoundException;
060 import java.io.IOException;
061 import java.io.InputStream;
062 
063 /**
064  * Class loader for JWS files.  There is one of these per JWS class, and
065  * we keep a static Hashtable of them, indexed by class name.  When we want
066  * to reload a JWS, we replace the ClassLoader for that class and let the
067  * old one get GC'ed.
068  *
069  * @author Glen Daniels (gdaniels@apache.org)
070  * @author Doug Davis (dug@us.ibm.com)
071  */
072 public class JWSClassLoader extends ClassLoader {
073 
Rate074     private String classFile = null;
075     private String name = null;
076 
077     /**
078      * Construct a JWSClassLoader with a class name, a parent ClassLoader,
079      * and a filename of a .class file containing the bytecode for the class.
080      * The constructor will load the bytecode, define the class, and register
081      * this JWSClassLoader in the static registry.
082      *
083      * @param name the name of the class which will be created/loaded
084      * @param cl the parent ClassLoader
085      * @param classFile filename of the .class file
086      * @exception FileNotFoundException
087      * @exception IOException
088      */
089     public JWSClassLoader(String name, ClassLoader cl, String classFile)
090         throws FileNotFoundException, IOException
091     {
092         super(cl);
093 
094         this.name = name + ".class";
095         this.classFile = classFile;
096 
097         FileInputStream       fis  = new FileInputStream( classFile );
098         ByteArrayOutputStream baos = new ByteArrayOutputStream();
099         byte buf[] = new byte[1024];
100         for(int i = 0; (i = fis.read(buf)) != -1; )
101             baos.write(buf, 0, i);
102         fis.close();
103         baos.close();
104 
105         /* Create a new Class object from it */
106         /*************************************/
107         byte[] data = baos.toByteArray();
108         defineClass( name, data, 0, data.length );
109 
110         ClassUtils.setClassLoader(name,this);
111     }
112 
113     /**
114      * Overloaded getResourceAsStream() so we can be sure to return the
115      * correct class file regardless of where it might live on our hard
116      * drive.
117      *
118      * @param resourceName the resource to load (should be "classname.class")
119      * @return an InputStream of the class bytes, or null
120      */
121     public InputStream getResourceAsStream(String resourceName) {
122         try {
123             if (resourceName.equals(name))
124                 return new FileInputStream( classFile );
125         } catch (FileNotFoundException e) {
126             // Fall through, return null.
127         }
128         return null;
129     }
130 }

            
All Examples in File:
Example
Line
Rating (found
useful by...)
74 0% of 0