2014-08-30 3 views
1

J'ai créé un client de service Web en utilisant CxF configurés via Spring comme indiqué ci-dessous:CXF Délai d'attente ne fonctionne pas

<!-- HTTP Conduit --> 
<http-conf:conduit name="*.http-conduit"> 
    <http-conf:client ConnectionTimeout="30000" 
     ReceiveTimeout="30000" /> 
</http-conf:conduit> 

<!-- Client Proxies --> 
<jaxws:client name="wsClient" serviceName="..." 
    serviceClass="..." 
    address="..." wsdlLocation="..."> 
</jaxws:client> 

Maintenant, lorsque le service est en place, le OK de travail de tout, mais le problème est, lorsque le service est en panne les valeurs de délai d'attente dans le HTTPConduit sont ignorées et je reçois l'erreur suivante après 1 seconde:

org.apache.cxf.interceptor.Fault: Could not send Message. 
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64) 
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263) 
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:570) 
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:479) 
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:382) 
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:335) 
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96) 
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:136) 

Caused by: java.net.ConnectException: Tried all: '1' addresses, but could not connect over HTTP to server: '192.168.80.55', port: '24004' 
at weblogic.net.http.HttpClient.openServer(HttpClient.java:333) 
at weblogic.net.http.HttpClient.openServer(HttpClient.java:425) 
at weblogic.net.http.HttpClient.New(HttpClient.java:252) 
at weblogic.net.http.HttpURLConnection.connect(HttpURLConnection.java:213) 
at weblogic.net.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:279) 
at org.apache.cxf.transport.http.HTTPCon2014-08-30 13:06:59 ERROR: javax.xml.ws.WebServiceException: Could not send Message. 

Toute idée pourquoi le consommateur ne reste pas pendant toute la durée du délai d'attente avant de soulever cette erreur?

Répondre

1

Le délai d'expiration ne s'applique pas lorsque le serveur est arrêté. Le ConnectionTimeout est combien attendre avant de se connecter.

Le ReceiveTimeout est combien attendre avant de recevoir une réponse.

Dans votre cas, aucun serveur n'écoute sur ce port. Ainsi, lorsque vos clients tentent de se connecter, les clients échouent immédiatement.

0

Qu'entendez-vous par 'down'? Service répond avec un 404? Port fermé (connexion refusée)? L'hôte est en panne (aucune connexion possible en raison d'un dépassement de temps)?

+0

Lorsque le service est arrêté, l'hôte est en panne ou le service ne fonctionne pas sur ce port. –

Questions connexes