[ 
https://issues.apache.org/jira/browse/TOMEE-1071?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13819034#comment-13819034
 ] 

Erik Vikström commented on TOMEE-1071:
--------------------------------------

Hi, I can confirm that your fix works.
Thanks!

> NoClassDefFoundError - SVGDocument
> ----------------------------------
>
>                 Key: TOMEE-1071
>                 URL: https://issues.apache.org/jira/browse/TOMEE-1071
>             Project: TomEE
>          Issue Type: Bug
>    Affects Versions: (trunk/tomee)
>            Reporter: Erik Vikström
>
> We have a web-application using Apache FOP. When we generate PDF files 
> containing SVG graphics, we get an exception:
> {noformat}
> java.lang.ClassNotFoundException: org.w3c.dom.svg.SVGDocument
>       
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
>       
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
>       
> org.apache.tomee.catalina.LazyStopWebappClassLoader.loadClass(LazyStopWebappClassLoader.java:109)
>       java.lang.ClassLoader.defineClass1(Native Method)
>       java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
>       java.lang.ClassLoader.defineClass(ClassLoader.java:615)
>       java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
>       
> org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2918)
>       
> org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1174)
>       
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1669)
>       
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
>       
> org.apache.tomee.catalina.LazyStopWebappClassLoader.loadClass(LazyStopWebappClassLoader.java:109)
>       org.apache.batik.dom.svg.SVGDOMImplementation.createDocument(Unknown 
> Source)
>       
> org.apache.fop.fo.extensions.svg.SVGDOMContentHandlerFactory$Handler.startElement(SVGDOMContentHandlerFactory.java:128)
>       
> org.apache.fop.fo.FOTreeBuilder$MainFOHandler.startElement(FOTreeBuilder.java:306)
>       org.apache.fop.fo.FOTreeBuilder.startElement(FOTreeBuilder.java:175)
>       
> org.apache.xalan.transformer.TransformerIdentityImpl.startElement(TransformerIdentityImpl.java:1073)
>       org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
>       
> org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown 
> Source)
>       
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
>  Source)
>       
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown 
> Source)
>       org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
>       org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
>       org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
>       org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
>       
> org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:485)
>       org.apache.fop.servlet.FopServlet.render(FopServlet.java:244)
>       org.apache.fop.servlet.FopServlet.renderFO(FopServlet.java:183)
>       org.apache.fop.servlet.FopServlet.doGet(FopServlet.java:120)
>       javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
>       javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
> {noformat}
> We have traced the problem down to a class called 
> "org.apache.openejb.util.classloader.URLClassLoaderFirst".
> In the method "public static boolean shouldSkip(final String name)" you 
> simply check if the classname starts with "org.w3c.dom", and if so - you 
> delegate the loading of the class to the parent classloader. Since the 
> "org.w3c.dom.svg" classes is not part of Tomee, this will of course result in 
> the exception above.
> The workaround for us in this case was to apply the system-property:
> openejb.classloader.forced-load=org.w3c.dom.svg,org.w3c.dom.smil,org.w3c.css,org.w3c.dom.events
> It would be desired if these kind of classes would be loaded from the Web-app 
> without having to apply this property. Alternatively you need to include all 
> sub-API's for packages that you force being loaded by the parent class loader.
> This seems to be a behavior change compared to 1.5.x.



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to