针对spring远程接口访问,本文给出一个实际的例子供参考,如果有不足之处,尚请原谅
RMI调用的过程,我的理解大致如下:
1 客户端和服务器端约定好要用于远程调用的方法的接口(包括方法名和输入输出参数)。
2 服务器端将远程服务绑定到某个端口,进行TCP/IP监听(例如监听地址为rmi://127.0.0.1:1099)。
3 客户端与服务器建立TCP/IP连接(当然事先要知道服务器端的监听地址),按照接口声明的方法发送数据(可序列化的Java对象)以及要调用的服务名、方法名等。
4 服务器端将接收到的数据(字节流)反序列化,得到要调用的方法和参数信息;然后服务器端进行本地计算(方法调用)。
6 服务器端将计算的结果(可序列化的Java对象)发送给客户端。
7 客户端从接收到的返回数据(字节流)中进行反序列化,得到运算结果。
8 客户端断开与服务器端的TCP/IP连接,远程调用结束。
服务端开发
1.声明要发布为rmi服务的接口
package demo.rmi.server;
public interface IHelloWorld{
public void print(String message);
}
2.实现要发布为RMI服务的接口
package demo.rmi.server;
public class HelloWorldImpl implements IHelloWorld {
public void print (String message) {
Sysetm.out.println(message)
}
}
}
首先在Spring配置文件中(这里我命名为server.xml),配置所需要的Bean。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="helloWorldService" class="demo.rmi.server.HelloWorldImpl" />
<!-- define a RMI service listening at port 1009 -->
<bean id="serviceExportert" class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="service"><ref bean=" helloWorldService " /></property>
<property name="serviceName"><value> helloWorldService </value></property>
<property name="serviceInterface"><value>demo.rmi.server. IHelloWorld </value></property>
<!-- defaults to 1099 --> <property name="registryPort" value="1001" />
</bean>
</beans>
然后启动我们的RMI服务,进行绑定和监听
package demo.rmi.server;
import java.rmi.RemoteException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.remoting.rmi.RmiServiceExporter;
public class RMIServer {
public void startByAPI() {
RmiServiceExporter exporter = new RmiServiceExporter();
try {
exporter.setServiceInterface(IHelloWorld.class);
exporter.setServiceName("serviceByAPI");
exporter.setService(new HelloWorldImpl());
exporter.setRegistryPort(1009);
exporter.afterPropertiesSet();
} catch (RemoteException e) {
System.out.println("error when export service", e);
}
}
当我们初始化Spring的ApplicationContext后,Spring会自动完成RMI服务的绑定和监听。
客户端开发
首先在Spring配置文件中(这里我命名为client.xml),配置所需要的Bean
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<!-- define a RMI client service which send to port 1001 -->
<bean id="helloWorldServiceProxy" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name="serviceUrl">
<value>rmi://127.0.0.1:1001/helloWorldService</value>
</property>
<property name="serviceInterface">
<value>demo.rmi.server.IPresence</value>
</property>
</bean>
</beans>
然后我们可以编写客户端进行RMI调用的代码。
package demo.rmi.client;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import demo.rmi.server.IPresence;
public class RMIClient {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(
"client.xml");
System.out.println("RMI client initialized successfully!");
// test get a RMI client service via Spring API at runtime
// RmiProxyFactoryBean factory = new RmiProxyFactoryBean();
// factory.setServiceInterface(IHelloWorld.class);
// factory.setServiceUrl("rmi://127.0.0.1:1009/helloWorldService");
// factory.afterPropertiesSet();
//
// IPresence service2 = (IHelloWorld) factory.getObject();
IPresence service = (IPresence) context
.getBean("helloWorldServiceProxy ");
StringBuilder presentitiesInfo = new StringBuilder();
Service.print(“hello world!”);
}
}
如果在服务端显示"hello world"提示,则表示spring rmi远程接口调用成功
分享到:
相关推荐
Dubbo是一个高性能、轻量级的开源Java RPC框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。 Dubbo提供了三大核心能力:面向接口的远程方法调用、智能容错和负载均衡,以及服务自动注册...
模块包括:定时任务调度、服务器监控、平台监控、平台设置、开发平台、单点登录、Redis分布式高速缓存、会员、营销、在线用户、日志、在线人数、访问次数、调用次数、直接集群、接口文档、生成模块、代码实例、安装...
模块包括:定时任务调度、服务器监控、平台监控、平台设置、开发平台、单点登录、Redis分布式高速缓存、会员、营销、在线用户、日志、在线人数、访问次数、调用次数、直接集群、接口文档、生成模块、代码实例、安装...
模块包括:定时任务调度、服务器监控、平台监控、平台设置、开发平台、单点登录、Redis分布式高速缓存、会员、营销、在线用户、日志、在线人数、访问次数、调用次数、直接集群、接口文档、生成模块、代码实例、安装...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
各种EJB之间的调用源码示例,用远程接口的引用访问EJB、函数将被FirstEJB调用,同时它将调用secondEJB 基于JAVA的UDP服务器模型源代码 2个目标文件 摘要:Java源码,网络相关,UDP 基于JAVA的UDP服务器模型源代码...
各种EJB之间的调用源码示例,用远程接口的引用访问EJB、函数将被FirstEJB调用,同时它将调用secondEJB 基于JAVA的UDP服务器模型源代码 2个目标文件 摘要:Java源码,网络相关,UDP 基于JAVA的UDP服务器模型源代码...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...