- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Transformer 文档 ( https://docs.oracle.com/javase/8/docs/api/javax/xml/transform/TransformerFactory.html#newTransformer-javax.xml.transform.Source- ) 说
Care must be taken not to use this Transformer in multiple Threads running concurrently.
如果我的 XSLT 源已修复,我是否可以缓存 Transformer 对象,以便我的所有请求都将使用相同的 Transformer,而不是在每个请求上重新创建它?
最佳答案
像 Transformer 这样的 JAXP 类是接口(interface),并且它们有多种实现(目前使用最广泛的两个是 Xalan 和 Saxon)。打破多线程规则的实际效果将取决于您使用的处理器;但在这两种情况下,它们都是相当不可预测的。 Transformer 可能保存变量和动态执行上下文的当前状态,因此您确实不希望两个转换重写彼此的变量。
为了避免每次使用时重新编译样式表的成本,您需要缓存 Templates 对象,而不是 Transformer 对象。理论上,您可以连续重用 Transformer 在单个线程中连续执行多个转换,但这没有意义:只需为每个新转换创建一个新的 Transformer(从缓存的模板)。
另一件事需要注意的是 DOM 不是线程安全的,即使在只读模式下也是如此。不允许两个转换同时访问同一棵 DOM 树。如果您确实需要在多个转换之间共享源文档,那么最好的方法最终取决于您使用的是 Xalan 还是 Saxon。
关于java - 请求澄清多线程环境中 TransformerFactory 的 XSLT Transformer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58067811/
我编写了在打印之前将文档转换为字符串的代码 TransformerFactory tf = TransformerFactory.newInstance(); Tran
我有一个 Java 中的 XSLT 转换器(实际上是它的 Apache FOP 渲染为 PDF),我已经在其中设置了一个自定义 URIResolver(用于“servlet-context:”URI)
我面临着一个非常烦人的问题,导致服务器 Java 进程终止,从这段代码中踢出(精简): _sesXslProc = new ArrayList(); TransformerFactory tFacto
我遇到一个问题,我不知道根本原因到底是什么。 我创建了 javax.xml.transform.TransformerFactory 的实例,然后直接解析 xsltSource: protected
我有以下代码: final TransformerFactory factory = TransformerFactory.newInstance(); factory.setAttribute(XM
我正在使用 JAXP XSLT API (javax.xml.transform) 来转换 xml 文件。 TransformerFactory transformerFactory = Transf
我需要为 XML 文档的离线转换编写程序。使用以下内容加载原始 XML 文件时,我已经能够停止 DTD 网络查找: DocumentBuilderFactory factory; factory =
出于安全原因,我添加了声明: transformerFactory.setFeature("http://javax.xml.XMLConstants/property/accessExternalD
在我的 Web 应用程序中,我需要使用 Saxon TransformerFactory 才能使用 XSLT 2.0,但我不能使用 setProperty 方法,因为我在 Web 服务器上没有此权限并
我正在使用 Apache FOP 2.4 生成一个以 XML 文件作为输入的 PDF 文档。为了防止 XXE 攻击,我需要在 TransformerFactory 中设置安全处理功能 (FEATURE
Transformer 文档 ( https://docs.oracle.com/javase/8/docs/api/javax/xml/transform/TransformerFactory.ht
我打算在我的 JSF 2.0 项目中使用 Saxon-B 9。但是在添加对 Saxon & Saxon-dom 的依赖后,异常开始出现在启动时: Sep 25, 2010 6:05:45 PM com
在jdk1.6中,我在设置的时候 transformerFactory.setFeature(XMLConstants.ACCESS_EXTERNAL_DTD, false) 我遇到了以下错误: ja
在哪里可以找到作为 javax.xml.TranformerFactory.setAttribute(String,String) 的合法输入的属性列表?输入非法字符串会产生讨厌的运行时异常。 最佳答
我们无法正确转换 Unicode 字符。我们以 XML 格式提供输入,当我们尝试转换时,我们无法取回原始字符串。 这是我正在使用的代码, StringCarrier OStringCarrier =
TransformerFactory.newInstance().newTransformer(streamSource) 怎么会返回 null。根据 javadoc 这是不可能的: http://d
我正在使用 javax.xml.transform.Transform 将 XML 文件转换为 PDF。这本身就可以正常工作,但项目的某些部分正在使用 Xalan,它实现了自己的 Transforme
Java API 保证它永远不会返回 null - 但对我来说,它是! http://download.oracle.com/javase/6/docs/api/javax/xml/transform
我的问题: Fortify 4.2.1 将以下代码标记为易受 XML 外部实体攻击。 TransformerFactory factory = TransformerFactory.newInstan
我创建了一个网络应用程序,它使用 Saxon 库进行 XSLT 转换。当 Web 应用程序使用自己的名称(等于 webapps 目录中的子目录的名称)部署在 Tomcat 上时,此应用程序运行良好。但
我是一名优秀的程序员,十分优秀!