从javax DOMSource中提取数据时,在saxon IdentityTransformer.transform中出现NullPointerException

时间:2012-10-16 08:32:29

标签: spring-ws saxon jdom-2

我正在使用 Spring Webservice(2.1.0)客户端向Soap UI Mock Webservice发送一条非常简单的消息。 (Hello World样式,没有名称空间)

在通过SpringWebserviceTemplate发送DOMSource之前,它是从中提取的 jdom2.Element为 jdom2.transform.JDOMSource 。 (JDOM 2.0.2)

Transformer是Saxon 9.4.0.4。

调用Spring Webservice Template函数sendSourceAndReceiveToResult 执行时 net.sf.saxon.IdentityTransformer 会抛出 NullPointerException 转换(DOMSource,responseResult)功能。

由于DOMSource在那时可用,我不知道会出现什么问题。

Stacktrace告诉我Nullpointer被抛出: net.sf.saxon.lib.SerializerFactory.getReceiver(第239行)

如果你可以推测可能的原因,这对我有很大帮助。

1 个答案:

答案 0 :(得分:1)

请注意,报告撒克逊问题的最佳方式是使用http://saxonica.plan.io的Saxon论坛或SourceForge上的saxon-help邮件列表。我们尝试监控StackOverflow上的问题,但通常是在我们注意到它们的前几天。

出现这种问题,原因通常是某些软件(如Spring Webservice)使用JAXP TransformerFactory机制来加载它在类路径上找到的任何XSLT转换器,但实际上并没有进行测试以确保它适用于任意XSLT转换器;人们通常只使用JDK提供的默认测试。从您的问题中不清楚您是否真的打算使用Saxon。

SerializerFactory的第239行实际上正在进行

throw new IllegalArgumentException("Unknown type of result: " + result.getClass());

(已经测试过结果是否是其认可的结果之一);所以它看起来好像结果(可能是传递给transform()方法的值)为null。检查responseResult值的内容。