在我本地的jBoss机器上,生成PDF很好。但是,当我尝试发布(到目前为止看来如此)基本上在NetWeaver上部署了相同应用程序代码的任何内容时,生成都会因以下错误而崩溃:
08-06-18:00:46:45 [HTTP Worker [@802492534]] ERROR [JRStyledTextParser:paveljanicek] Error while loading available fonts
net.sf.jasperreports.engine.JRRuntimeException: javax.xml.parsers.ParserConfigurationException
at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.<init>(SimpleFontExtensionHelper.java:156)
at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.getInstance(SimpleFontExtensionHelper.java:131)
at net.sf.jasperreports.engine.fonts.FontExtensionsRegistry.ensureFontExtensions(FontExtensionsRegistry.java:80)
at net.sf.jasperreports.engine.fonts.FontExtensionsRegistry.getExtensions(FontExtensionsRegistry.java:57)
at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getExtensions(DefaultExtensionsRegistry.java:130)
at net.sf.jasperreports.engine.util.JRStyledTextParser.<clinit>(JRStyledTextParser.java:86)
at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:111)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:69)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:57)
at net.sf.jasperreports.engine.fill.JRFiller.createBandReportFiller(JRFiller.java:219)
at net.sf.jasperreports.engine.fill.JRFiller.createReportFiller(JRFiller.java:234)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:134)
最糟糕的是,我无法考虑如何重现此错误。这是我已经在目标计算机上检查的内容:
在我的本地计算机上:
有人知道要检查什么,在哪里看吗?
答案 0 :(得分:0)
NW使用默认的XML解析器,该解析器不支持设置安全性功能“ http://apache.org/xml/features/disallow-doctype-decl”。此功能由6.4.2版的Jasper样式表解析器设置
快速解决方案是使用不同的XML解析器,该功能通过在NW属性中将系统属性“ javax.xml.parsers.DocumentBuilderFactory
”设置为适当的XML解析器来支持上述功能。
肯定是问题在西北。
但是,我确实找到了一个Oracle等效的XML解析器(仍然基于Xerces),该解析器在设置XML功能时更加宽容:com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
。
此解析器随项目中使用的Oracle JVM一起提供,因此我们无需添加其他库,实际上是基于JavaDocs的默认解析器。
Netweaver JVM决定改为使用oracle.xml.jaxp.JXDocumentBuilderFactory
作为默认设置。