Caching infinispan xml解析器中的多个配置文件错误
您好,我正在尝试使用infinispan中的多个配置文件,如 问题是当我运行我的应用程序时,我得到了这个异常Caching infinispan xml解析器中的多个配置文件错误,caching,w3c,infinispan,jcache,Caching,W3c,Infinispan,Jcache,您好,我正在尝试使用infinispan中的多个配置文件,如 问题是当我运行我的应用程序时,我得到了这个异常 Caused by: java.lang.NullPointerException at org.infinispan.configuration.parsing.XMLExtendedStreamReaderImpl.include(XMLExtendedStreamReaderImpl.java:439) at org.infinispan.configuration
Caused by: java.lang.NullPointerException
at org.infinispan.configuration.parsing.XMLExtendedStreamReaderImpl.include(XMLExtendedStreamReaderImpl.java:439)
at org.infinispan.configuration.parsing.XMLExtendedStreamReaderImpl.nextTag(XMLExtendedStreamReaderImpl.java:135)
at org.infinispan.configuration.parsing.Parser.parseContainer(Parser.java:680)
at org.infinispan.configuration.parsing.Parser.readElement(Parser.java:113)
at org.infinispan.configuration.parsing.ParserRegistry.parseElement(ParserRegistry.java:224)
at org.infinispan.configuration.parsing.ParserRegistry.parse(ParserRegistry.java:194)
at org.infinispan.configuration.parsing.ParserRegistry.parse(ParserRegistry.java:180)
at org.infinispan.configuration.parsing.ParserRegistry.parse(ParserRegistry.java:151)
... 60 more
infinispan.xml
<infinispan
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:infinispan:config:11.0 https://www.infinispan.org/schemas/infinispan-config-11.0.xsd"
xmlns="urn:infinispan:config:11.0"
xmlns:xi="http://www.w3.org/2001/XInclude">
<cache-container name="CacheManger">
<xi:include href="classpath:infinispan-2.xml" />
<local-cache name="testcache2"/>
</cache-container>
</infinispan>
<local-cache name="testcache"/>
当我在infinispan类中调试时,我找到了将解析xi include节点(XMLExtendedStreamReaderImpl)的方法,但resourceResolver变量始终为null!!:
private void include() throws XMLStreamException {
String href = getAttributeValue(null, "href");
try {
URL url = resourceResolver.resolveResource(href);
InputStream inputStream = url.openStream();
XMLStreamReader subReader = factory.createXMLStreamReader(inputStream);
includeStack.push(new Included(inputStream, streamReader));
streamReader = new XMLExtendedStreamReaderImpl(factory, new URLXMLResourceResolver(url), parser, subReader, properties, stack);
} catch (IOException e) {
throw new XMLStreamException(e);
}
}
您是否尝试过不使用类路径:
是的,我已经尝试过了,但仍然存在相同的问题我想知道您是如何获得空resourceResolver的:据我所知,该字段是最终字段,应该已初始化。在任何情况下,我们都使用JDK URL类来解析资源,但它不支持类路径
协议,因为默认情况下没有为其安装URL处理程序。我不知道我的代码中有什么问题,但resourceResolver始终为空,因此代码甚至没有尝试查找我的第二个文件(屏幕截图:说明中)我猜问题出在getConfigurationBuilderHolder中的JCacheManager类中,它将null传递给解析(屏幕截图:在描述中)
private void include() throws XMLStreamException {
String href = getAttributeValue(null, "href");
try {
URL url = resourceResolver.resolveResource(href);
InputStream inputStream = url.openStream();
XMLStreamReader subReader = factory.createXMLStreamReader(inputStream);
includeStack.push(new Included(inputStream, streamReader));
streamReader = new XMLExtendedStreamReaderImpl(factory, new URLXMLResourceResolver(url), parser, subReader, properties, stack);
} catch (IOException e) {
throw new XMLStreamException(e);
}
}