同一台机器上的A系统调B系统的RMI服务,抛出一下异常:
[appframe] DEBUG 2013-08-05 17:58:14,428 -com.plat.resmgr.dao.impl.MetadataSubscibeRequisitionDaoImpl.findAll(Unknown Source) -99613 [http-6262-3] - finding all MetadataSubscibeRequisition instances
[appframe] DEBUG 2013-08-05 17:58:18,868 -com.googlecode.jsonplugin.JSONUtil.writeJSONToResponse(JSONUtil.java:163) -104053 [http-6262-2] - [JSON]{"message":null,"resTodayCountList":[0,0,0],"resTotalCntList":[0,0,1],"sele":false}
[appframe] ERROR 2013-08-05 17:58:24,418 -com.plat.sap.action.SummaryPropertyDataAction.haveDataContentView(SummaryPropertyDataAction.java:139) -109603 [http-6262-10] - 浏览字典数据出错:1075897256>>>Lookup of RMI stub failed; nested exception is java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.io.EOFException
org.springframework.remoting.RemoteLookupFailureException: Lookup of RMI stub failed; nested exception is java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.io.EOFException
at org.springframework.remoting.rmi.RmiClientInterceptor.lookupStub(RmiClientInterceptor.java:215)
at org.springframework.remoting.rmi.RmiClientInterceptor.getStub(RmiClientInterceptor.java:237)
at org.springframework.remoting.rmi.RmiClientInterceptor.invoke(RmiClientInterceptor.java:257)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy65.viewDictionaryHtml(Unknown Source)
at com.plat.sap.action.SummaryPropertyDataAction.haveDataContentView(SummaryPropertyDataAction.java:135)
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:597)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.io.EOFException
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at java.rmi.Naming.lookup(Naming.java:84)
at org.springframework.remoting.rmi.RmiClientInterceptor.lookupStub(RmiClientInterceptor.java:200)
... 127 more
Caused by: java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2554)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1297)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
at sun.rmi.server.MarshalInputStream.readLocation(MarshalInputStream.java:285)
at sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStream.java:228)
at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1531)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1493)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
... 130 more
虽然程序所在的服务器配置了两个IP,但非双网卡那种的,所以自然忽略了“/etc/hosts”的配置问题,因此总在思考其它的因素。周折好长时间回来,经过大牛指点,在“/etc/hosts”中的“127.0.0.1 web web”的行尾加了一个“localhost”,重启OK了。
关于“/etc/hosts”文件的说明:
一般情况下hosts文件的每行为一个主机,每行由三部份组成,每个部份由空格隔开。其中#号开头的行做说明,不被系统解释。
hosts文件的格式如下:
IP地址 主机名/域名
第一部份:网络IP地址;
第二部份:主机名或域名;
第三部份:主机名别名;
分享到:
相关推荐
- **异常处理**:RMI调用可能遇到网络中断、远程对象不存在等问题,因此客户端需要适当地捕获和处理`java.rmi`包下的异常,如`RemoteException`。 3. **RMI通信机制**: - **marshalling**与**unmarshalling**:...
RMI会自动处理网络传输和异常处理。 6. **反序列化和序列化**:RMI使用Java的序列化机制来处理参数和返回值的网络传输。所有远程方法的参数和返回值都必须是可序列化的。 Java RMI还有许多高级特性,例如: - **...
- `java.rmi.RemoteException`是最常见的RMI异常,通常表示网络或序列化问题。 - `NotBoundException`表示试图查找的远程对象未在注册表中找到。 6. **性能优化**: - 使用持久化的RMI注册表,减少启动时的绑定...
5. **处理异常**:由于网络通信的不可靠性,必须妥善处理`RemoteException`和其他可能的网络相关异常。 Java RMI的实现基于Java的序列化机制,这意味着远程方法的参数和返回值都必须是可序列化的。Java RMI还提供了...
这些方法必须抛出`java.rmi.RemoteException`异常。 #### 实现远程接口 接下来,需要实现前面定义的远程接口。实现类将包含远程对象的具体业务逻辑。 #### 编写服务器端代码 服务器端的主要职责是创建远程对象...
接口中的每个方法都可能抛出java.rmi.RemoteException,这是所有RMI异常的根异常。 2. **远程实现(Remote Implementation)**:实现了远程接口的类,其中包含了具体的业务逻辑。这些类的对象将在服务器端运行,并...
- **异常处理**:RMI系统会把远程抛出的异常包装成`RemoteException`传递给客户端。 5. **RMI示例** - 一个简单的RMI应用可能包括一个远程接口、实现该接口的服务器端类、客户端调用类,以及启动服务器和客户端的...
这个简单的例子展示了Spring RMI的基本用法,但实际应用中可能需要考虑更多因素,如安全性、事务管理、异常处理等。通过Spring RMI,我们可以轻松地构建可扩展的分布式系统,利用其强大的特性来提升系统的灵活性和...
- `java.rmi.RemoteException`是最常见的RMI异常,通常表示网络或序列化问题。 - `NotBoundException`表示试图查找的远程对象未在注册表中找到。 - `ConnectException`和`UnknownHostException`通常表示网络问题...
这些方法必须声明为`remote`,并且可能会抛出`java.rmi.RemoteException`或其他网络相关的异常。 2. **远程实现(Remote Implementation)**:实现了远程接口的Java类,实际提供了远程方法的实现。这个类通常通过...
8. **异常处理**:由于网络问题或远程对象的问题,RMI调用可能会抛出异常,包括`RemoteException`和其他子类,如`ConnectException`和`NotBoundException`。 在示例中,你可能会看到以下文件结构: - `...
7. **异常处理**:`java.rmi.RemoteException`是RMI中常见的异常,它捕获了所有与远程调用相关的错误,包括网络中断、超时等。 8. **安全性**:虽然RMI提供了基本的安全特性,如SSL加密,但默认情况下并不启用。在...
- **异常处理**:RMI中的异常通常包括网络连接问题、对象不存在、版本不匹配等,需要适当地捕获和处理。 - **RMI与EJB的结合**:EJB(Enterprise JavaBeans)是Java EE的一部分,RMI常用于EJB组件之间的通信,尤其...
- **自动异常处理**:Spring RMI会自动处理RMI相关的异常,如网络故障、远程对象不存在等。 - **事务支持**:Spring可以为RMI调用提供事务管理,确保操作的原子性和一致性。 ### 4. Spring AOP与RMI结合 Spring的...
5. **异常处理**:RMI调用可能会抛出异常,如 `java.rmi.RemoteException` 和 `java.rmi.NoSuchObjectException`。开发者需要妥善处理这些异常,确保程序的健壮性。 6. **安全性**:RMI提供了安全机制,如SSL/TLS...
7. **异常处理**:RMI调用可能会遇到各种网络和运行时异常,例如`java.rmi.RemoteException`,因此在调用远程方法时应进行适当的异常处理。 通过“rmi.rar”中的源代码,你可以学习如何定义和实现远程接口,创建和...
5. **异常处理**:处理可能出现的网络、序列化或缓存相关异常。 6. **测试用例**:演示如何测试RMI服务的有效性和Ehcache的缓存效果。 通过分析和运行这个Demo,开发者可以学习到RMI的生命周期管理、Ehcache的缓存...
这些方法抛出`RemoteException`异常,表明它们可以在远程对象上调用。 2. **远程对象(Remote Object)**:实现了远程接口的对象,可以部署在远程服务器上。为了使一个类成为可远程访问的,它必须扩展`...
1. `java.rmi`: 核心API,包含了RMI的基本接口和异常。 2. `java.rmi.activation`: 提供可激活对象的API,允许对象在需要时被激活。 3. `java.rmi.dgc`: 分布式垃圾收集器(DGC)的API,用于管理远程对象的生命周期。 ...
7. **异常处理(Exception Handling)**:由于网络的不可靠性,RMI调用可能会抛出各种异常,包括`RemoteException`和`ConnectException`等。良好的异常处理策略是确保程序健壮性的关键。 8. **安全性(Security)**...