2009-09-25 13 views
11

मेरे पास एक आरएमआई सर्वर और डेस्कटॉप आरएमआई क्लाइंट है। जब मैं सर्वर को पुनरारंभ करता हूं, तो मुझे क्लाइंट में त्रुटियां मिलती हैं। क्या क्लाइंट को पुनरारंभ किए बिना आरएमआई कनेक्शन को पुनरारंभ करना संभव है?सर्वर पुनरारंभ करने के बाद RMI क्लाइंट को पुन: कनेक्ट करें

java.rmi.ConnectException: Connection refused to host: xxx.xxx.xxx.xxx; nested exception is: 
    java.net.ConnectException: Connection refused: connect 
    at ...user code... 
Caused by: java.rmi.ConnectException: Connection refused to host: xxx.xxx.xxx.xxx; nested exception is: 
    java.net.ConnectException: Connection refused: connect 
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:574) 
    at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:185) 
    at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:171) 
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:94) 
    at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:179) 
    at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:132) 
    at $Proxy0.search(Unknown Source) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:592) 
    at org.springframework.remoting.rmi.RmiClientInterceptorUtils.invokeRemoteMethod(RmiClientInterceptorUtils.java:108) 
    at org.springframework.remoting.rmi.RmiClientInterceptor.doInvoke(RmiClientInterceptor.java:362) 
    at org.springframework.remoting.rmi.RmiClientInterceptor.invoke(RmiClientInterceptor.java:258) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) 
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 
    at $Proxy1.search(Unknown Source) 
    ... 3 more 
Caused by: java.net.ConnectException: Connection refused: connect 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) 
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:367) 
    at java.net.Socket.connect(Socket.java:524) 
    at java.net.Socket.connect(Socket.java:474) 
    at java.net.Socket.<init>(Socket.java:371) 
    at java.net.Socket.<init>(Socket.java:184) 
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22) 
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128) 
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:569) 
    ... 20 more 
+0

आपको किस प्रकार की त्रुटियां मिल रही हैं? – akf

उत्तर

5

जब सर्वर समाप्त हो जाता है, तो आप एक ConnectException प्राप्त होगा:

[संपादित करें] यहां स्टैकट्रेस है। उसके बाद आप एक नया सर्वर ऑब्जेक्ट प्राप्त करने के लिए बस Naming.lookup का उपयोग कर सकते हैं।

+0

यदि सर्वर पुनरारंभ किया गया है तो आपको इसके बजाय 'NoSuchObjectException' मिल सकता है। – EJP

20

आप स्प्रिंग उपयोग कर रहे हैं (अर्थात् RmiProxyFactoryBean), तो आप बस संपत्ति refreshStubOnConnectFailuretrue करने के लिए सेट कर सकते हैं और सेम सर्वर पुन: प्रारंभ करने बच जाएगा।

<property name="refreshStubOnConnectFailure" value="true" /> 
+0

आपकी टिप्पणी के लिए धन्यवाद। यह मेरे लिए समय बचा रहा है – firstthumb

+1

मैं वसंत का उपयोग कर रहा था। इससे मेरी मदद की। – DragonFax

+1

शानदार, उत्तर के लिए वसंत और खुद दोनों के लिए एक बड़ा धन्यवाद :) – James

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