gpt4 book ai didi

java - 尝试解析 apache-commons-chains 的目录 XML 时出现 EmptyStackException

转载 作者:行者123 更新时间:2023-12-02 06:11:29 25 4
gpt4 key购买 nike

我有一个在 Oracle weblogic 中运行的 Java 项目。我们正在使用 apache-commons-chains。当尝试解析 XML 时,我们会间歇性地收到 EmptyStackException。大多数时候 XML 都可以工作。但有时我们会遇到这个问题。

我尝试在本地计算机上运行和调试代码。从来没有发现那里有问题。这是日志堆栈

java.util.EmptyStackException at org.apache.commons.collections.ArrayStack.pop(ArrayStack.java:122) at org.apache.commons.digester.Digester.endElement(Digester.java:1208) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:609) at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:183) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1343) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2786) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:648) at weblogic.xml.jaxp.WebLogicXMLReader.parse(WebLogicXMLReader.java:133) at weblogic.xml.jaxp.RegistryXMLReader.parse(RegistryXMLReader.java:173) at org.apache.commons.digester.Digester.parse(Digester.java:1827) at org.apache.commons.chain.config.ConfigParser.parse(ConfigParser.java:190)

public Catalog getCatalog() throws Exception {
if (catalog == null) {
parser.parse(IAFullEngineWorkFlow.class.getClassLoader().getResource("/resource URI/"));
catalog = CatalogFactoryBase.getInstance().getCatalog();
}
return catalog;
}

理想情况下,我们应该从中获取 Catalog 对象。但它会抛出上述错误。

最佳答案

找到了解决方案。 apache commons 中的解析器不是线程安全的。只需要在 getCatalog 函数中使用synchronized即可。

`

public synchronised  static Catalog getCatalog() throws Exception {
if (catalog == null) {
parser.parse(SampleClass.class.getClassLoader().getResource("/resource URI/"));
catalog = CatalogFactoryBase.getInstance().getCatalog();
}
return catalog;
}

关于java - 尝试解析 apache-commons-chains 的目录 XML 时出现 EmptyStackException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55903480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com