2012-01-31 8 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 (...) विधि में मैंने कुछ डब्ल्यूएस-सुरक्षा गुण सेट किए हैं, इसमें समस्या होने की संभावना नहीं है।

मैंने सीएक्सएफ लॉग मुद्रित किए, मैं देख सकता हूं कि इनबाउंड संदेश में सही डेटा है।

सीएक्सएफ स्रोत कोड से, ऐसा लगता है कि सीएक्सएफ साबुन संदेश को पुनः प्राप्त करने में विफल रहता है, लेकिन मुझे नहीं पता कि इसे कैसे हल किया जाए। कृपया मेरी मदद करें! 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 कोड में डिबगिंग और मदद लेने के बाद, मैं अंत में इस समस्या का समाधान:

यहाँ CXF स्रोत कोड है। समस्या इनबाउंड संदेश के कारण होती है, http संदेश में सामग्री-प्रकार शीर्षलेख की कमी होती है, जिसके कारण सीएक्सएफ XMLStreamReader बनाने में विफल रहता है, और फिर सामग्री को पढ़ने में विफल रहता है, इस प्रकार एक NullPointerException फेंक दिया जाता है। सीएक्सएफ समुदाय में लोगों के लिए बहुत धन्यवाद!

मैं एक प्रश्न पूछा और वहाँ का जवाब मिल गया: http://cxf.547215.n5.nabble.com/CXF-client-exception-Interceptor-for-XXX-has-thrown-exception-unwinding-now-td5449373.html#a5449764

+0

आप व्याख्या कर सकते हैं क्या आप अपने कोड में बदल समस्या को हल करने? –

+1

मुझे याद नहीं है, यह बहुत समय पहले है। शायद मैंने सामग्री-प्रकार शीर्षलेख कहीं इंजेक्शन दिया? – Wint

संबंधित मुद्दे