我有一个很大的 XSLT 字符串,用于将 XML 转换为 json。我正在 dropwizard Web 服务中执行此操作,其中非常需要并发性。当我将此 XSLT 字符串存储在文件中时,它会导致所有 Web 服务线程从文件系统按顺序访问该文件(从而延迟执行)。
如果我尝试将该 XSLT 存储为 java 字符串,则会收到 constant string too long
异常。存储此 XSLT 以便我的线程可以并行访问它的最佳方式是什么?
最佳答案
如果 XSLT 源确实那么大,您可能应该将其存储在一个文件中,例如作为类路径资源,并且只加载和解析一次:
private static Templates largeTemplate;
初始化使用(仅一次):
try (InputStream in = Test.class.getResourceAsStream("path/to/large.xslt")) {
TransformerFactory transformerFactory = TransformerFactory.newInstance();
largeTemplate = transformerFactory.newTemplates(new StreamSource(in));
}
然后对于每个线程:
Transformer transformer = largeTemplate.newTransformer();
// Use transformer here
关于java - 并行读取大型 XSLT 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50011740/