2012-01-31 5 views
11

を巻き戻し、例外をスローした私は、この次CXF例外に遭遇しています:CXFクライアントの例外:{XXX}のインターセプタは今

warning: Interceptor for {http://example.com/wsdl/esc/2011-12-12/}AmazonEC2#{http://example.com/wsdl/esc/2011-12-12/}NewDescribeImages has thrown exception, unwinding now 
java.lang.NullPointerException 
    at org.apache.cxf.binding.soap.interceptor.StartBodyInterceptor.handleMessage(StartBodyInterceptor.java:59) 
    at org.apache.cxf.binding.soap.interceptor.StartBodyInterceptor.handleMessage(StartBodyInterceptor.java:37) 
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263) 
    at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:762) 
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1582) 
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1467) 
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1375) 
    at org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47) 
    at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:188) 
    at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) 
    at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:623) 
    at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) 
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263) 
    at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:510) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:440) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:343) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:295) 
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) 
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) 
    at $Proxy31.newDescribeImages(Unknown Source) 
    at test.App.main(App.java:62) 
javax.xml.ws.soap.SOAPFaultException: Fault string, and possibly fault code, not set 

この例外の原因コード:

MyService ms =new MyService(); 
    MyServicePort port = ms.getAmazonEC2Port(); 
    BindingProvider bp = (BindingProvider) port; 
    bp.getRequestContext() 
      .put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, 
        "http://192.180.33.12:8773/services/myservice_url/"); 

    Client client = ClientProxy.getClient(portType); 
    client.getInInterceptors().add(new LoggingInInterceptor()); 
    client.getOutInterceptors().add(new LoggingOutInterceptor()); 
    Endpoint endpoint = client.getEndpoint(); 

    Map<String, Object> inProps=new HashMap<String, Object>(); 
    Map<String,Object> outProps = new HashMap<String,Object>(); 
    configWSProps(inProps, outProps); //here is some WS-Security properties 

    WSS4JInInterceptor wssIn = new WSS4JInInterceptor(inProps); 
    WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps); 

    endpoint.getInInterceptors().add(wssIn); 
    endpoint.getOutInterceptors().add(wssOut); 

    SomeResponseType response = port.someMethod(); 

この例外はあります最後の行にスローされます:port.someMethod()。 configWSProps(...)メソッドで、いくつかのWS-Securityプロパティーを設定しましたが、ここで問題が発生する可能性は低いです。

私はcxfログを印刷しましたが、着信メッセージに正しいデータが含まれていることがわかりました。

CXFソースコードから、CXFがSOAPメッセージの取得に失敗したようですが、これを解決する方法はわかりません。私を助けてください!ここ

はCXFのソースコードです: http://grepcode.com/file/repo1.maven.org/maven2/org.apache.cxf/cxf-rt-bindings-soap/2.4.1/org/apache/cxf/binding/soap/interceptor/StartBodyInterceptor.java/#59

答えて

14

CXFコードでデバッグするとCXFメーリングリストで助けを求めて後、私は最終的にこの問題を解決しました。 問題はインバウンドメッセージによって引き起こされます.HTMLメッセージにはcontent-typeヘッダーがないため、CXFがXMLStreamReaderの作成に失敗し、コンテンツの読み取りに失敗し、NullPointerExceptionがスローされます。 CXFコミュニティの皆さん、ありがとうございました!

私が質問をし、そこに答えました: http://cxf.547215.n5.nabble.com/CXF-client-exception-Interceptor-for-XXX-has-thrown-exception-unwinding-now-td5449373.html#a5449764

+0

あなたが問題を解決するために、あなたのコードで変更内容を説明することはできますか? –

+1

私は覚えていない、それはずっと前です。多分私はコンテンツタイプのヘッダをどこかに注入したでしょうか? – Wint