org.springframework.l'accès distant.RemoteAccessException: impossible d'accéder HTTP invoker de service à distance se produit lors du démarrage de tâches à partir de anbother fil
J'ai un traitement au printemps avec JavaFX client, et j'obtiens cette erreur quand jamais venu méthode est appelé, ce qui s'exécute dans un autre thread (pour les tâches en arrière-plan) - qui n'est pas le principal JavaFx fil.
org.springframework.remoting.RemoteAccessException: Could not access HTTP invoker remote service at [http://localhost:8080/server/service/security/UserGroupService];
nested exception is java.net.SocketTimeoutException: Read timed out
at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.convertHttpInvokerAccessException(HttpInvokerClientInterceptor.java:211)
at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.invoke(HttpInvokerClientInterceptor.java:144)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy63.batchJobSetAccessRightsToConsultant(Unknown Source)
at client.view.control.reporting.AccessRightsBatchDialog$1Local$744.invoke$(AccessRightsBatchDialog.fx:374)
at com.sun.javafx.functions.Function1.invoke(Function1.java:44)
at com.sun.javafx.functions.Function1.invoke$(Function1.java:38)
at client.async.AsyncTask.taskRun(AsyncTask.fx:71)
at client.async.AsyncTaskHelper.run(AsyncTaskHelper.java:32)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78)
at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106)
at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1116)
at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.readLine(MultiThreadedHttpConnectionManager.java:1413)
at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1973)
at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1735)
at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1098)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
at org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor.executePostMethod(CommonsHttpInvokerRequestExecutor.java:195)
at org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor.doExecuteRequest(CommonsHttpInvokerRequestExecutor.java:129)
at org.springframework.remoting.httpinvoker.AbstractHttpInvokerRequestExecutor.executeRequest(AbstractHttpInvokerRequestExecutor.java:136)
at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.executeRequest(HttpInvokerClientInterceptor.java:191)
at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.executeRequest(HttpInvokerClientInterceptor.java:173)
at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.invoke(HttpInvokerClientInterceptor.java:141)
... 11 more
La dernière modification que j'ai faite, et je soupçonne une cause de cela - parce que j'ai besoin de l'utilisateur des informations à partir de la session HTTP, dans chaque service de proxy , je suis de passage ce httpInvokerRequestExecutor bean:
<bean id="httpInvokerRequestExecuter" class="org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor" >
for example:
<bean id="testServiceProxy"
class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
<property name="serviceUrl" value="${remoteUrl}/service/test/TestService" />
<property name="serviceInterface"
value="common.service.test.TestService" />
<property name="httpInvokerRequestExecutor" ref="httpInvokerRequestExecuter" />
</bean>
Avec des méthodes qui fonctionnent dans le thread principal, cela ne semble se produire.
Toutes les idées à l'origine et les solutions possibles sont très bien accueilli.
OriginalL'auteur Julia | 2012-10-22
Vous devez vous connecter pour publier un commentaire.
Inrease le délai d'attente pour
httpInvokerRequestExecuter
. La valeur par défaut est d'une minute. Vous pouvez soit augmenter ou mettre à 0, ce qui signifie qu'il ne sera jamais timeout (probablement pas une bonne idée, mais bon pour un test).Bean définition de supprimer readTimeout (ou le montant applicable):
Vous pouvez essayer d'augmenter le délai d'attente pour
httpInvokerRequestExecuter
La valeur par défaut est d'une minute. Vous pouvez soit augmenter ou mettre à 0, ce qui signifie qu'il ne sera jamais timeout (probablement pas une bonne idée, mais bon pour un test). <bean id="httpInvokerRequestExecuter" class="org.springframework.l'accès distant.httpinvoker.CommonsHttpInvokerRequestExecutor" > <property name="readTimeout" valeur="0" /> </bean>hey j'ai googlé pour la même solution, les essais maintenant, semble de sa de travail ! J'ai aussi dû changer le gestionnaire de connexion pour le rendre multi-thread. Si vous le souhaitez, rédigez votre réponse que la Réponse n'est pas un commentaire, afin que je puisse l'accepter . Merci pour l'aide!
édité le texte de ma réponse
OriginalL'auteur Wilhelm Kleu