2017-02-04 6 views
0

私は非常に新しいApache CXFです。私は外部サーバーから受信したSOAPメッセージから名前空間を削除する問題に取り組んでいます(消費用クライアントとして機能していますサービス)サーバーから受信したSOAPメッセージから名前空間を削除する方法

wsdlから生成されたスタブは、@WebResultで異なる名前空間を持ち、サーバーシステムから受信したSOAPエンベロープは異なります。 クライアントの検証が失敗しないように、ネームスペースをレスポンスメッセージから削除するために汎用ソリューションを適用したいと考えています。

o.a.c.p.PhaseInterceptorChain - インターセプタ用{http://www.abc.xyz/webservices/facade}サービス#{http://www.abc.xyz/webservices/facade} serviceNameのは、例外をスロー今

org.apache.cxf.interceptor.Faultを巻き戻した:予期しない要素{http://www.abc.xyz/webservices/facade} serviceResponseが見つかりました。期待される{http://www.abc.xyz/webservices/facade/ xxxx} serviceResponse。

助けてください。私は、""でサーバーがハングを{http://www.abc.xyz/webservices/facade/**xxx**}serviceResponseを交換しようとすると、それはorg.apacheで無限ループに入ったときに、このアプローチでは

(CXF変換機能)

Map<String, String> inTransformMap = Collections.singletonMap("{http:// www.abc.xyz/webservices/facade/**xxx**}serviceResponse", ""); 
org.apache.cxf.interceptor.transform.TransformInInterceptor transformInInterceptor = new org.apache.cxf.interceptor.transform.TransformInInterceptor(); 
transformInInterceptor.setInTransformElements(inTransformMap); 
proxy.getInInterceptors().add(transformInInterceptor); 

ソリューションは、今までに試してみました.cxf.staxutils.transform.InTransformReader.handleDeepDrop()line 266

+0

ようこそスタックオーバーフロー!私たちはQ&Aサイトであり、雇用者向けサービスではありません。これまでに何を試みたのか、それがうまくいかなかった理由を説明してください。参照:[なぜ誰かが私を助けることができますか?実際の質問ではありませんか?](http://meta.stackoverflow.com/q/284236) –

答えて

0

私はついにこの問題を次のように解決できました

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); 
Map<String, Object> props = factory.getProperties(); 
if (null == props) { 
    props = new HashMap<String, Object>(); 
} 
props.put("soap.no.validate.parts", true); 
factory.setProperties(props); 

上記の解決策では、着信応答の検証をオフにすることができ、org.apache.cxf.interceptor.Faultのような例外はありません。予期しない要素。

関連する問題