无法转换 javax.xml.transform.stax.StAXSource Camel-Springws 类型的来源

Can't transform a Source of type javax.xml.transform.stax.StAXSource Camel-Springws

在服务器中部署 war 时偶尔会遇到此问题。问题在重新启动时得到解决。有时需要多次重启才能解决问题。

我在上下文中使用了以下 bean 配置

<bean id="baseCamelMarshallerWSTemplate" class="org.springframework.ws.client.core.WebServiceTemplate" scope="prototype">
    <constructor-arg ref="messageFactory" />
    <property name="transformerFactoryClass" value="com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl"/>
</bean>

我已将 baseCamelMarshallerWSTemplate 添加到 springws 端点配置中,如下所示:

from("spring-ws:rootqname:{http://example.com/}GetFoo?endpointMapping=#endpointMapping&webServiceTemplate=baseCamelMarshallerWSTemplate")

但问题似乎出现了。由于限制,无法在服务器中将变压器工厂设置为 com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl 作为 java 系统 属性。

请提供任何其他解决方案。

Camel-Springws 提供了一个直接指定变压器工厂的选项,它解决了这个问题。

在您的 bean 配置文件中,指定要使用的转换器工厂 class

<bean id="transformerFactory" class="com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl"/>

将 transformerFactory 添加到 Springws 端点配置中,如下所示:

spring-ws:rootqname:{http://services.com/ServiceV1.0}Request?endpointMapping=#endpointMapping&transformerFactory=#transformerFactory