私は、WoodstoxのDeserializationExceptionに当たる前に、プロキシサービスからSOAP応答を変更/除去するソリューションを探していました。以下は私が得ている例外です。プロキシSOAPサービスの応答からCTRL-CHARを取り除くためにSpring/Woodstox jaxwsを設定する方法
これはそう何のTomcat、
は、WSDLを持っており、Javaのデスクトップアプリケーションではありません:CTRL-CHARのようstraigtの答えを配っする前にいくつかの事実のカスタムSOAPメッセージハンドラを作成し、XMLは有効ではありません
<bean id="serviceProxy" class="org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean"> <property name="serviceInterface" value="local generated stub"/> <property name="wsdlDocumentUrl" value="--wsdl URL--"/> <property name="namespaceUri" value="urn:address"/> <property name="serviceName" value="proxyService"/> <property name="portName" value="Some_Wsi_HandlerPort"/> <property name="lookupServiceOnStartup" value="false" /> </bean>
Webサービスクライアントの構成は以下の通りであるJAX-WS RIを介して生成されています
私は、次の設定を試してみましたが、それはうまくいきませんでした:
<jaxws:client id="localService">
<jaxws:properties>
<entry key="javax.xml.stream.XMLOutputFactory">
<ref bean="xmlOutputFactory"/>
</entry>
</jaxws:properties>
</jaxws:client>
<bean id="invalidCharHandler" class="com.ctc.wstx.api.InvalidCharHandler$ReplacingHandler">
<constructor-arg value=" "/>
</bean>
<bean id="xmlOutputFactory" class="com.ctc.wstx.stax.WstxOutputFactory"/>
<beanclass="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject">
<ref bean="xmlOutputFactory" />
</property>
<property name="targetMethod">
<value>setProperty</value>
</property>
<property name="arguments">
<list>
<util:constant static-field="com.ctc.wstx.api.WstxOutputProperties.P_OUTPUT_INVALID_CHAR_HANDLER"/>
<ref bean="invalidCharHandler" />
</list>
</property>
</bean>
私もカスタムSOAPHandlerとLogicalHandlerを作成しようとしたが、彼らはどちらかの助けにはなりませんでした。
私はこれのdidn、レスポンスボディからUnicodeの文字を検索および置換する方法がある知っているとレスポンスボディをmanupulatingした後、それを消費しますが、私が探していますが、単に上記WstxOutputProperties.P_OUTPUT_INVALID_CHAR_HANDLERの設定のようにフィルタであり、私はちょうどWoodstoxやSpringや、エラーを投げて通信を破る前に、応答から無効な文字をフィルタリングするためにカスタマイズできるものを手に入れたい。
org.springframework.remoting.RemoteAccessException:[null]でリモートサービスにアクセスできませんでした;ネストされた例外はcom.sun.xml.ws.encoding.soap.DeserializationException:Faです。応答を読み取るためにile化された: - リンク例外あり: [com.ctc.wstx.exc.WstxUnexpectedCharException:不正な文字((CTRL-CHAR、コード31)) at [row、col {未知のソース}]:[91222] org.springframework.remoting.jaxws.JaxWsPortClientInterceptor.invokeでorg.springframework.remoting.jaxws.JaxWsPortClientInterceptor.doInvoke(JaxWsPortClientInterceptor.java:565) で(JaxWsPortClientInterceptor.java:541) com.sun.proxyでorg.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) でorg.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) で 。$ Proxy42 .salesOrderInfo(不明な情報源)
java.io.FilterInputStream実装をコンフィグレーションに挿入するにはどうすればよいですか? – UCJava
@UCJava残念なことに、あなたが実際の呼び出し(あなたがそうでないように聞こえる)を制御しないと、私はそのことに答えられません。だから、サーバーを手に入れて適切なXML制御文字を与える方法を考えなければならないかもしれません。 – StaxMan