有什么方法可以加快对JAXB Marshaller.marshal(Object, OutputStream)
的调用?
我正在处理的项目是使用 JAXB 来 [un] 编组具有相当大的 XML 模式的对象。通话someJaxbMarshaller.marshal(results, out)
需要 2 秒才能完成。其他一切(JPA 获取、空间过滤、相当多的其他逻辑)只需要大约 1 秒。所以使用 JAXB 使我的请求响应时间增加了三倍。我正在缓存 JAXBContext 和 Marshaller 对象,以尽可能加快速度。只有实际的编组让我放慢了速度。有什么建议么?
我正在使用与JAX-WS 2.2.3捆绑在一起的JAXB 2.2.3u1。较新的版本似乎破坏了很多东西,所以我们被锁定在那个版本的 JAXB 中(覆盖使用JAXB 2.2.4u1的包含 Java 的JAX-WS 2.2.5 - 我们不能使用它,因为它会引发负载)。我们也在JDK 1.3.0_30上,它正在Eclipse Indigo中运行。我看到了使用 Woodstox 的建议,但JAX-WS 2.2.3已经包含它。我尝试将其换成最新版本,但这会使编组速度减慢了约 0.2 秒。删除 Woodstox 与使用 JAX-WS 中包含的版本具有完全相同的性能。NullPointerException
支持正在编组的对象的架构大小约为5 MB。JAXB 生成的实际 XML 文档大小为117 KB。