Délai d'attente pour le Webservice de réponse?
J'ai un client qui appelle un service web.
En partie certaines des méthodes appelées peut prendre beaucoup de temps pour terminer sur le serveur (même jusqu'à 1 heure). Je veux que le client d'attendre la réponse pour l'époque, de façon à maintenir la connexion active!
J'ai essayé de définir la propriété suivante dans le client, mais sans succès:
((BindingProvider)port).getRequestContext().put("com.sun.xml.internal.ws.request.timeout", 0); //0 for disabling any timeouts
Je suis encore en train Exception Délai après un certain temps. La propriété qui doit être réglé pour éviter l'erreur suivante?
org.apache.cxf.interceptor.Fault: Transaction was rolled back, presumably because setRollbackOnly was called during a synchronization while invoking public abstract boolean my.method
at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:166)
at org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWSMethodInvoker.java:213)
at org.apache.openejb.server.cxf.ejb.EjbMethodInvoker.preEjbInvoke(EjbMethodInvoker.java:146)
at org.apache.openejb.server.cxf.ejb.EjbMethodInvoker.invoke(EjbMethodInvoker.java:72)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:75)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:107)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:211)
at org.apache.openejb.server.cxf.CxfWsContainer.onMessage(CxfWsContainer.java:73)
at org.apache.openejb.server.webservices.WsServlet.service(WsServlet.java:98)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.openejb.core.transaction.TransactionRolledbackException: Transaction was rolled back, presumably because setRollbackOnly was called during a synchronization
at org.apache.openejb.core.transaction.JtaTransactionPolicy.completeTransaction(JtaTransactionPolicy.java:335)
at org.apache.openejb.core.transaction.TxRequired.commit(TxRequired.java:75)
at org.apache.openejb.core.transaction.EjbTransactionUtil.afterInvoke(EjbTransactionUtil.java:73)
at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:258)
at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:190)
at org.apache.openejb.server.cxf.ejb.EjbMethodInvoker.preEjbInvoke(EjbMethodInvoker.java:119)
... 30 more
Caused by: javax.transaction.RollbackException: Unable to commit: transaction marked for rollback
at org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:272)
at org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:252)
at org.apache.openejb.core.transaction.JtaTransactionPolicy.completeTransaction(JtaTransactionPolicy.java:328)
... 35 more
Caused by: java.lang.Exception: Transaction has timed out
at org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:266)
... 37 more
Vous devez vous connecter pour publier un commentaire.
Êtes-vous sûr que c'est un délai d'attente? Avez-vous de configurer votre serveur de délai d'expiration de transaction correctement?
Pour le côté client délai d'attente vous avez besoin dans votre cxf configuration:
Délais d'attente sont exprimés en millisecondes.
Dans du code Java vous avez besoin d'obtenir le HTTPConduit et puis définissez HTTPClientPolicy:
voir de http://cxf.apache.org/docs/client-http-transport-including-ssl-support.html
Mise à jour
Pour votre
java.lang.ClassCastException
assurez-vous quecom.sun.xml.ws.client.sei.SEIStub
n'est pas dans le classpath ou de s'assurer que cxf pot est en avant du Soleil jaxws RI jar dans le classpath. Par exemple, essayez de supprimer jaxws-rt*.pot à partir de votre classpath.@WebService( portName =.. , serviceName =.. , targetNamespace =.. , endpointInterface =.. )
javax.jws.WebService;
java.lang.ClassCastException: com.sun.xml.internal.ws.client.sei.SEIStub cannot be cast to org.apache.cxf.frontend.ClientProxy at org.apache.cxf.frontend.ClientProxy.getClient(ClientProxy.java:121) at Myclass.getWebservice(Config.java:58) at Client.connect(Client.java:37) at Client.main(ApplicationRunner.java:28)
all cxf libs + neethi + stax2 + wsdl4j + xmlschema-core
. Je ne sais pas pourquoi j'ai besoin de toutes ces libs, mais je le suivi qu'il est au minimum nécessaire libs je ne suis pas une exception en quelque sorte. Avec ces libs il fonctionne comme dans votre exemple de prises de cxf.apache. Merci pour votre aide!Transaction has timed out
Exception...setReceiveTimeout
mais cela ne fonctionne pas.