Skip to Content.
Sympa Menu

mace-opensaml-users - Re: [OpenSAML] XMLConfigirator: Bug respecting JDK 1.6?

Subject: OpenSAML user discussion

List archive

Re: [OpenSAML] XMLConfigirator: Bug respecting JDK 1.6?


Chronological Thread 
  • From: Yang Xiang <>
  • To:
  • Subject: Re: [OpenSAML] XMLConfigirator: Bug respecting JDK 1.6?
  • Date: Fri, 21 May 2010 12:45:38 +0200

I wrote an extension to the XMLConfigurator by overwritng the method
createClassInstance and replacing the line:

Class clazz = classLoader.loadClass(className);

with

Class clazz = Class.forName(className, false, classLoader);

Now it works fine with tomcat too.



在 2010-05-21五的 09:32 +0200,Xiang Yang写道:
> Hi all,
>
> According to the suggestion from Chad regarding my last email I've
> created an extension to RequestAbstractType and other SAML objects. It
> took a lot of time but was not so difficult as I had feared and I have a
> clean code structure and my freedom now. The developer manual is great!
>
> Now I put my SAML objects into the XMLTooling configuration file and use
> following code to load the config file:
> ------------------
> XMLConfigurator configurator = new XMLConfigurator();
> File configFile = new File("/opt/config/saml/my-conf.xml");
> configurator.load(configFile);
> ------------------
>
> This works fine if I run it directly, for example in Eclipse. However,
> if I run it as a tomcat webapp I got following exception:
> ---------------------------
> DEBUG - 2010-05-21 01:01:47:615
> [org.opensaml.xml.XMLConfigurator#initializeObjectProviders:230] ::
> Initializing object provider {urn:dynfed:protocol}TDSRequest
> ERROR - 2010-05-21 01:01:47:617
> [org.opensaml.xml.XMLConfigurator#createClassInstance:358] :: Can not
> create instance of de.mpg.dynfed.core.TDSRequestBuilder
> java.lang.ClassNotFoundException: de.mpg.dynfed.core.TDSRequestBuilder
> at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
> [na:1.6.0_18]
> at java.security.AccessController.doPrivileged(Native Method)
> [na:1.6.0_18]
> at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
> [na:1.6.0_18]
> at java.lang.ClassLoader.loadClass(ClassLoader.java:321) [na:1.6.0_18]
> at java.lang.ClassLoader.loadClass(ClassLoader.java:266) [na:1.6.0_18]
> at
> org.opensaml.xml.XMLConfigurator.createClassInstance(XMLConfigurator.java:354)
> [xmltooling-1.2.1.jar:1.2.1]
> ----------------------------
>
> I found two bug reports at sun:
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6500212
>
> http://bugs.sun.com/view_bug.do?bug_id=6434149
>
> It says following:
> -------------------------
> Generally speaking reflective loading of a class by name should be
> accomplished by using this static method in java.lang.Class:
>
> public static Class<?> forName(String name, boolean initialize,
> ClassLoader loader)
> throws ClassNotFoundException
>
> The ClassLoader.loadClass() method is more typically used for class loader
> delegation.
> Invocation of Class.forName() may eventually invoke ClassLoader.loadClass()
> after handling
> VM name resolution. In particular, for array classes, this would involve
> loading the array's
> component type.
> Thus, we highly recommend replacement of this code:
>
> myClassLoader.loadClass(className);
>
> With this code:
>
> Class.forName(className,false,myClassLoader);
>
> -----------------------------
>
> Can that the reason of the ClassNotFoundException I got? The
> XMLConfigurator uses exatly the loadClass method:
> ---------
>
> 353 ClassLoader classLoader = this.getClass().getClassLoader();
> 354 Class clazz = classLoader.loadClass(className);
> 355 Constructor constructor = clazz.getConstructor();
> ------------
>
> But why is its behavior different in tomcat environment than in Eclipse?
> And why it affects every class of
> mine but in the sun bug report only array class is mentioned? Confusing ....
>
> By the way, I have following java and tomcat environment:
> java:
> java version "1.6.0_18"
> OpenJDK Runtime Environment (IcedTea6 1.8) (6b18-1.8-0ubuntu1)
> OpenJDK Client VM (build 14.0-b16, mixed mode, sharing)
>
> tomcat is 6.0.24.
>
> Many thanks in advance!
>
> yang
>





Archive powered by MHonArc 2.6.16.

Top of Page