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