RMI平台下的分布式消息传送模型详解:组件结构与应用实例

需积分: 4 2 下载量 33 浏览量 更新于2024-09-19 收藏 726KB DOC 举报
RMI分布式消息传送模型是一种基于商业消息传送平台构建的解决方案,这个平台以RMI技术为核心,旨在实现分布式的点对点和发布/订阅通信,以及高效的消息队列管理。RMI平台由两个主要模块构成:消息传送模块和业务模块。 消息传送模块是底层基础,利用RMI技术处理Java程序之间的纯Java消息传递,确保跨网络节点的可靠通信。它负责建立与客户端如APP(应用程序)和外部AP(外部应用点)的连接,并处理消息的发送和转发。客户端如APP管理着FO(功能对象)的集合,而FO是消息的发送者或接收者,通常在Java程序中实现特定功能,如电力系统的CLI-GW模块。 业务模块则位于消息传送模块之上,包括高级功能如画面显示、业务命令处理、日志记录和MIB网络信息收集等,这些功能为用户提供直观的界面和数据管理。在电力系统中,除了RMI平台,还包括其他子模块如WEB(网页接口)、MAP(图形化管理界面)等,它们通过RMI平台的通信机制集成在一起,形成完整的应用系统。 RMI消息传送系统采用集中式架构,主要组件包括EDServer(消息分发服务器)、APP(管理FO的应用容器)、FO(功能对象)以及外部AP。EDServer是核心组件,负责连接管理和服务的分发。APP和FO位于同一Java虚拟机内,而EDServer与APP可能部署在不同的网络环境或虚拟机中,通过RMI进行跨虚拟机通信。 尽管RMI是实现分布式系统的关键技术,但本文的重点在于RMI平台的组件设计和消息传递模型,而非深入探讨RMI的具体实现细节。理解这种模型有助于开发者设计和优化分布式应用,提高系统的可扩展性和性能。通过这种方式,RMI分布式消息传送模型为复杂的企业级应用提供了强大的支持和灵活性。

java.lang.IllegalStateException: mBeanFactory.removeContext.addServicedFail at org.apache.catalina.mbeans.MBeanFactory.removeContext(MBeanFactory.java:767) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:294) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) at com.sun.jmx.remote.security.MBeanServerAccessController.invoke(MBeanServerAccessController.java:468) at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468) at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76) at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309) at java.security.AccessController.doPrivileged(Native Method) at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1408) at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829) at sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357) at sun.rmi.transport.Transport$1.run(Transport.java:200) at sun.rmi.transport.Transport$1.run(Transport.java:197) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:196) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:688) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)

2023-06-03 上传