CXF client exception: l'Intercepteur pour {XXX} a la levée d'une exception, le déroulement maintenant
Je suis de la rencontre avec cette suite de CXF exception:
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
le code qui provoque cette exception:
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();
Cette exception est levée dans la dernière ligne: port.someMethod().
Dans le configWSProps(...) la méthode j'ai mis une certaine WS-propriétés de Sécurité, il ne devrait pas avoir de problème ici.
J'ai imprimé la cxf les journaux, je vois que le message entrant est correct les données.
De la CXF code source, il semble que CXF ne parvient pas à récupérer le message soap, mais je ne sais pas comment résoudre ce problème. S'il vous plaît aider moi!
ici est la CXF code source:
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
OriginalL'auteur Wint | 2012-01-31
Vous devez vous connecter pour publier un commentaire.
Après le débogage dans le cxf code et cherchant de l'aide dans le cxf liste de diffusion, j'ai enfin résolu ce problème.
Le problème est causé par le message entrant, le message http manque l'entête content-type, ce qui provoque la CXF ne parviennent pas à créer un XMLStreamReader, et puis impossible de lire le contenu, donc un NullPointerException est levée.
Un grand merci aux gars de la CXF communauté!
J'ai posé une question et obtenu de réponse là:
http://cxf.547215.n5.nabble.com/CXF-client-exception-Interceptor-for-XXX-has-thrown-exception-unwinding-now-td5449373.html#a5449764
Je ne me souviens pas, c'est il y a longtemps. Peut-être que j'ai injecté le header content-type quelque part?
OriginalL'auteur Wint
Assurez-vous que le point de terminaison est correct ou accessibles par le biais de cet environnement où le composant a été déployé.
Peut-être il serait proxy question qui ne passe pas le point de terminaison.
OriginalL'auteur Ajay