[jboss-user] [Beginners Corner] - Custom ClassLoader

dec200378 do-not-reply at jboss.com
Mon Oct 23 02:35:00 EDT 2006


I want to write a custom ClassLoader to load the whole application (.war). 
My configuration is:

jboss-services.xml
---------------------------------------

    
    

jboss-web.xml
--------------------------------------
<?xml version="1.0"?>
<jboss-web>
   <class-loading> 
      <loader-repository> 
      com.july:loader=jboss-trial.war
      </loader-repository> 
   </class-loading>
</jboss-web>


TrialClassLoader.java
-----------------------------------------
/*
 * Created on Oct 23, 2006
 *
 */
package com.july.jboss;

import java.net.URL;

import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;

import org.jboss.mx.loading.ClassLoaderUtils;
import org.jboss.mx.loading.UnifiedClassLoader3;

/**
 * @author Administrator
 *
 */
public class TrialClassLoader extends UnifiedClassLoader3 implements ServiceMBean {

    public TrialClassLoader() {
        this(null);
        System.out.println("TrialClassLoader.TrialClassLoader");
    }
    
    public TrialClassLoader(URL url) {
        super(url);
        System.out.println("TrialClassLoader.TrialClassLoader(" + url + ")");
    }
    
    /* (non-Javadoc)
     * @see org.jboss.mx.loading.RepositoryClassLoader#getObjectName()
     */
    public ObjectName getObjectName() throws MalformedObjectNameException {
        System.out.println("TrialClassLoader.getObjectName");
        return null;
    }

    /* (non-Javadoc)
     * @see org.jboss.system.ServiceMBean#getName()
     */
    public String getName() {
        System.out.println("TrialClassLoader.getName");
        return null;
    }

    /* (non-Javadoc)
     * @see org.jboss.system.ServiceMBean#getState()
     */
    public int getState() {
        System.out.println("TrialClassLoader.getState");
        return 0;
    }

    /* (non-Javadoc)
     * @see org.jboss.system.ServiceMBean#getStateString()
     */
    public String getStateString() {
        System.out.println("TrialClassLoader.getStateString");
        return null;
    }

    /* (non-Javadoc)
     * @see org.jboss.system.ServiceMBean#jbossInternalLifecycle(java.lang.String)
     */
    public void jbossInternalLifecycle(String arg0) throws Exception {
        System.out.println("TrialClassLoader.jbossInternalLifecycle(" + arg0 + ")");
    }

    /* (non-Javadoc)
     * @see org.jboss.system.Service#create()
     */
    public void create() throws Exception {
        System.out.println("TrialClassLoader.create");
    }

    /* (non-Javadoc)
     * @see org.jboss.system.Service#start()
     */
    public void start() throws Exception {
        System.out.println("TrialClassLoader.start");
    }

    /* (non-Javadoc)
     * @see org.jboss.system.Service#stop()
     */
    public void stop() {
        System.out.println("TrialClassLoader.stop");
    }

    /* (non-Javadoc)
     * @see org.jboss.system.Service#destroy()
     */
    public void destroy() {
        System.out.println("TrialClassLoader.destroy");
    }

    /* (non-Javadoc)
     * @see java.lang.ClassLoader#findClass(java.lang.String)
     */
    protected Class findClass(String arg0) throws ClassNotFoundException {
        System.out.println("TrialClassLoader.findClass(" + arg0 + ")");
        return super.findClass(arg0);
    }
}


-----------------------------------------------------
After server startup, com.july:loader=jboss-trial.war appears in jmx-console, but this classloader is never used.

Anyone help what is wrong?

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3979939#3979939

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3979939



More information about the jboss-user mailing list