TransformerFactory.newInstance() returns the same instance twice ----------------------------------------------------------------
Key: XALANJ-2538 URL: https://issues.apache.org/jira/browse/XALANJ-2538 Project: XalanJ2 Issue Type: Bug Security Level: No security risk; visible to anyone (Ordinary problems in Xalan projects. Anybody can view the issue.) Reporter: Daniel Doubleday Priority: Minor We had very strange classloader errors in our webapp when using xalan. (linkage error. classloader tried to load class twice) {noformat} java.lang.LinkageError: loader (instance of org/apache/catalina/loader/WebappClassLoader): attempted duplicate class definition for name: "org/apache/xml/serializer/ToXMLStream" at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) at java.lang.ClassLoader.defineClass(ClassLoader.java:616) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:905) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1354) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233) at org.apache.xml.serializer.ObjectFactory.findProviderClass(ObjectFactory.java:505) at org.apache.xml.serializer.SerializerFactory.getSerializer(SerializerFactory.java:127) at org.apache.xalan.transformer.TransformerIdentityImpl.createResultContentHandler(TransformerIdentityImpl.java:259) at org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:329) at com.jamesmurty.utils.XMLBuilder.toWriter(XMLBuilder.java:667) at com.jamesmurty.utils.XMLBuilder.asString(XMLBuilder.java:690) at com.jamesmurty.utils.XMLBuilder.asString(XMLBuilder.java:706) at org.jets3t.service.acl.AccessControlList.toXml(AccessControlList.java:210) at org.jets3t.service.impl.rest.httpclient.RestStorageService.putAclImpl(RestStorageService.java:1441) at org.jets3t.service.impl.rest.httpclient.RestStorageService.createObjectImpl(RestStorageService.java:1636) at org.jets3t.service.impl.rest.httpclient.RestStorageService.pubObjectWithRequestEntityImpl(RestStorageService.java:1540) at org.jets3t.service.impl.rest.httpclient.RestStorageService.putObjectImpl(RestStorageService.java:1527) at org.jets3t.service.StorageService.putObject(StorageService.java:800) at org.jets3t.service.multi.ThreadedStorageService$CreateObjectRunnable.run(ThreadedStorageService.java:1332) at java.lang.Thread.run(Thread.java:662) {noformat} When diving deeper we found this strange behaviour: {noformat} public static void main(String[] args) throws Exception { Runnable loader = new Runnable() { @Override public void run() { System.out.println(TransformerFactory.newInstance()); } }; Thread thread = new Thread(loader); Thread thread2 = new Thread(loader); thread.start(); thread2.start(); } {noformat} would occasionally print out: (in most cases two different instances were returned) {noformat} org.apache.xalan.processor.TransformerFactoryImpl@5cac6a45 org.apache.xalan.processor.TransformerFactoryImpl@5cac6a45 {noformat} this is on java -version java version "1.6.0_24" Java(TM) SE Runtime Environment (build 1.6.0_24-b07-334-10M3326) Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02-334, mixed mode) -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: xalan-dev-unsubscr...@xml.apache.org For additional commands, e-mail: xalan-dev-h...@xml.apache.org