既存のアプリケーションにSOAPWebサービスを追加しようとしていますが、Saxon/Xalanの競合が原因で大きな問題が発生しています。Webアプリケーションを起動すると、常にエラーが発生します。
java.lang.IllegalArgumentException: Unknown type of result: class javax.xml.transform.dom.DOMResult
スタックトレース:
Caused by: java.lang.IllegalArgumentException: Unknown type of result: class javax.xml.transform.dom.DOMResult
at net.sf.saxon.event.SerializerFactory.getReceiver(SerializerFactory.java:154)
at net.sf.saxon.IdentityTransformer.transform(IdentityTransformer.java:24)
at org.springframework.xml.transform.TransformerHelper.transform(TransformerHelper.java:138)
at org.springframework.xml.transform.TransformerObjectSupport.transform(TransformerObjectSupport.java:96)
at org.springframework.ws.wsdl.wsdl11.provider.InliningXsdSchemaTypesProvider.getSchemaElement(InliningXsdSchemaTypesProvider.java:113)
at org.springframework.ws.wsdl.wsdl11.provider.InliningXsdSchemaTypesProvider.addTypes(InliningXsdSchemaTypesProvider.java:101)
at org.springframework.ws.wsdl.wsdl11.ProviderBasedWsdl4jDefinition.afterPropertiesSet(ProviderBasedWsdl4jDefinition.java:233)
at org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition.afterPropertiesSet(DefaultWsdl11Definition.java:182)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1479)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1419)
スタンドアロンWebアプリケーションでのSOAPWebサービスの作成のプロトタイプを作成しましたが、正常に機能しました。プロトタイプを確認したところ、Saxonへの参照はなく、変圧器は次のタイプでした。
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl
既存の(大きな)Webアプリケーションにコードを追加するのは簡単でしたが、変換が発生したとき、Transformオブジェクトのタイプは次のとおりでした。
net.sf.saxon.IdentityTransformer
現在、Saxonはアプリケーションの一部で使用されており、(おそらく)単に削除することはできません。(私はこのルートを実行しましたが、ワームの缶のようです)。DefaultWsdl11Definitionオブジェクトを使用してWSDLスキーマを作成しています。アプリケーションのこの側面の変換では、SaxonではなくXalanを使用する必要があるとどのように述べることができますか?Springを使用してすべてを接続しています。SOAPWebサービスのサーブレットクラスは次のとおりです。
<bean id="projectSearch" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition">
<property name="schema" ref="schema"/>
<property name="portTypeName" value="ProjectSearch"/>
<property name="targetNamespace" value="http://FOO.FOO/foo"/>
<property name="locationUri" value="/soap/reso"/>
<property name="requestSuffix" value="Request"/>
<property name="responseSuffix" value="Response"/>
</bean>
<bean id="schema" class="org.springframework.xml.xsd.SimpleXsdSchema">
<property name="xsd" value="/WEB-INF/ws-project.xsd"/>
</bean>
Saxon / Xalanの問題を解決する方法について誰かアドバイスはありますか?
ありがとう、
フィル