Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6461674

Usage of XMLSecurity internal API throws ClassLoading issue with JDK1.6

XMLWordPrintable

    • 6
    • b98
    • sparc
    • solaris

      Access Manager is using XML Security API (internal API) provided by Java Web Services Development pack since it's 6.0 release to support XML Signature and XML Encryption as part of supporting supporting standards (SAML and Project Liberty).

      The JDK1.6 release now bundles XML Security API in it's rt.jar and promotes the usage of JSR105 and JSR106 for XML Signature and Encryption.

      However, this makes the usage of internal API that's been used by the Access Manager throws Class loading issue. More accurately, it's failing in the registration of a XML Signature transformation class.

      Snippet from Sean Mullan is as follows:
      /***

      Yes, that's the problem. The Apache Transform code uses Class.forName() which uses the current classloader and that is why you are getting a ClassNotFoundException. You did not see this problem prior to JDK 6 because the classloaders (of Transform and STRTransform) were the same.
      ***/


      /home/ms109299/jdk1.6.0/bin/java -Xbootclasspath/p:/opt/SUNWam/lib/xmlsec.jar -classpath /home/ms109299/wss:/home/ms109299/am71/ns/userx/clientsdk/lib/amclientsdk.jar:/usr/share/lib/mps/secv1/jss4.jar:/opt/SUNWam/lib/servlet.jar:/usr/share/lib/jax-qname.jar:/opt/SUNWam/lib/jaxb-api.jar:/usr/share/lib/jaxb-impl.jar:/usr/share/lib/jaxb-xjc.jar:/usr/share/lib/saaj-api.jar:/usr/share/lib/saaj-impl.jar:/opt/SUNWam/locale:/opt/SUNWam/lib/ldapjdk.jar TestHandler
      java.lang.ClassNotFoundException: com/sun/identity/wss/security/STRTransform
              at java.lang.Class.forName0(Native Method)
              at java.lang.Class.forName(Class.java:169)
              at com.sun.org.apache.xml.internal.security.transforms.Transform.register(Unknown Source)
              at com.sun.identity.wss.security.STRTransform.<clinit>(STRTransform.java:77)
              at java.lang.Class.forName0(Native Method)
              at java.lang.Class.forName(Class.java:169)
              at com.sun.identity.saml.xmlsig.AMSignatureProvider.class$(AMSignatureProvider.java:141)
              at com.sun.identity.saml.xmlsig.AMSignatureProvider.<init>(AMSignatureProvider.java:140)
              at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
              at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
              at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
              at java.lang.reflect.Constructor.newInstance(Constructor.java:506)
              at java.lang.Class.newInstance0(Class.java:355)
              at java.lang.Class.newInstance(Class.java:308)
              at com.sun.identity.saml.xmlsig.XMLSignatureManager.<init>(XMLSignatureManager.java:64)
              at com.sun.identity.saml.xmlsig.XMLSignatureManager.getInstance(XMLSig

            mullan Sean Mullan
            duke J. Duke
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: