1.远程接口定义
package org.spring.rmi;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.List;
/**
* 远程接口继承Remote
* @author chenyw
*
*/
public interface UserService extends Remote{
/**
* 返回用户列表
* @return
* @throws RemoteException
*/
public List<User> getUsers()throws RemoteException;;
}
2.远程接口实现
package org.spring.rmi;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.List;
/**
* 远程接口继承Remote
* @author chenyw
*
*/
public interface UserService extends Remote{
/**
* 返回用户列表
* @return
* @throws RemoteException
*/
public List<User> getUsers()throws RemoteException;;
}
3.实体实现序列化接口
package org.spring.rmi;
import java.io.Serializable;
/**
* user 序列化
* @author chenyw
*
*/
public class User implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
public User(String id,String name){
this.id= id;
this.name= name;
}
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
4.spring服务端配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean id="userService" class="org.spring.rmi.UserServiceImpl">
<!-- any additional properties, maybe a DAO? -->
</bean>
<!-- rmi服务端bean -->
<bean class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="serviceName" value="userService" />
<property name="service" ref="userService" />
<property name="serviceInterface"
value="org.spring.rmi.UserService" />
<!-- 端口默认为1099 -->
<property name="registryPort" value="1199" />
</bean>
<!-- rmi客户端bean -->
<bean id="rmiService"
class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name="serviceInterface">
<value>org.spring.rmi.UserService</value>
</property>
<property name="serviceUrl">
<value>rmi://localhost:1199/userService</value>
</property>
</bean>
</beans>
由于客户端与服务端都在同一个项目,所以也把客户端的配置写入了,也可以将客户端和服务端分开,写成两个项目,这里就不在详细说明了。如果分开项目请注意(服务器端的接口一定要拷贝一份到客户端,而且包名一定要相同)
5.客户端调用远程接口
package org.spring.rmi;
import java.rmi.RemoteException;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class RmiClient {
/**
* @param args
*/
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(
"spring_rmi.xml");
UserService service=(UserService)context.getBean("rmiService");
try {
List<User> user = service.getUsers();
for (User u : user) {
System.out.println(u.getName());
}
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
(1)将项目部署到tomcat启动
(2)执行RmiClient 程序即可远程调用
运行结果
yuwen1
yuwen2
yuwen3
yuwen4
yuwen5
如有spring架构用到的包或web.xml不明之处请参照
本人开了个充值淘宝网店。有需要的朋友请访问的店铺并拍下所充值的话费,
本店已加入消费保障服务计划,货源来源于淘宝充值平台,安全可靠便捷,
支付过后立即到账
http://xiaowen168.taobao.com
分享到:
相关推荐
在这个“spring+rmi非本地实现”的项目中,我们有两个主要部分:客户端(client)和服务端(rmiserver)。让我们深入探讨一下这两个部分以及它们如何协同工作。 1. **服务端(rmiserver)**: - **创建RMI接口**:...
总结,"spring+rmi实现非本地部署"涉及了Spring框架、RMI技术以及Web应用的集成,这些知识点在Java分布式系统开发中至关重要。通过理解并熟练掌握这些内容,开发者可以构建出高效、可扩展的分布式服务系统。
具体到这个压缩包“springRMI”,我们可以推测它可能包含了以下几个部分: 1. **配置文件**:如`applicationContext.xml`,其中定义了Spring容器中的Bean,可能包括RMI服务的接口和实现。 2. **远程接口**:`.java`...
Spring框架对RMI的支持使得它更易于集成到现代企业级应用中,实现了服务间的松耦合和高效通信。本文将详细讲解Spring与RMI的整合,以及如何通过"SpringRMIClient"和"SpringRMIServer"这两个示例文件实现跨项目的远程...
spring 与rmi 的整合 1.首先编写接口 interface : 这里的接口要继承Remote, 它是一个标识接口 2.编写实现类 3.编写main方法用于启动 service 4 配置spring文件 编写客户端测试类
- **配置RMI服务**:在Spring的XML配置文件中,使用`<bean>`标签定义RMI服务,指定远程接口、实现类以及RMI服务的端口。 - **注册RMI服务**:使用`<bean>`标签的`lookup-by-name`属性,将服务注册到RMI注册表。 - **...
在这个"Spring RMI小例子"中,我们将深入理解Spring如何简化RMI的使用,以及如何通过它实现跨网络的交互。 首先,RMI允许Java对象在不同的JVM之间进行通信,仿佛它们都在同一个进程中运行。Spring通过提供自动注册...
在这个"SpringRMI小例子"中,我们将深入探讨如何利用Spring框架来增强RMI的功能,使其更加灵活和易于管理。 首先,我们需要理解Spring框架在RMI中的角色。Spring提供了对RMI的高级抽象,通过其`org.springframework...
6. **源码分析**:在提供的压缩包文件`SpringRMI`中,可能包含了上述所有步骤的代码示例。通过阅读这些源码,你可以深入理解Spring RMI的工作原理,包括服务暴露、注册、代理创建等。 7. **工具使用**:在开发过程...
在IT行业中,远程方法调用(Remote Method ...通过上述整合,我们可以构建一个健壮的分布式系统,利用Spring的高级特性管理和控制RMI服务,同时利用RMI实现跨JVM的通信。这样的系统既易于维护,又具有高度的可扩展性。
3. **Spring配置**:在Spring配置文件中,你需要声明一个`RmiServiceExporter`,它会暴露你的服务实现为RMI服务。你可以通过指定`serviceInterface`和`serviceImplementation`属性来关联接口和实现。 4. **客户端...
本篇将深入探讨Spring如何与RMI结合,以及客户端和服务器端的实现细节。 ### 一、Spring RMI 服务器端集成 1. **定义远程接口**:首先,我们需要创建一个Java接口,该接口将定义远程服务的方法。例如,我们可以...
Spring Remote Method Invocation ...理解并熟练掌握Spring RMI接口实现,能帮助开发者构建健壮的分布式系统,提高系统的可扩展性和可维护性。但同时也需要注意,随着技术的更新,适时考虑采用更先进的远程通信方式。
3. **事务管理**:Spring 的 AOP 支持可以在 RMI 调用中添加事务管理,确保跨远程调用的一致性。 4. **异常处理**:Spring 可以帮助封装 RMI 调用中可能出现的异常,提供统一的错误处理策略。 通过这个 "java ...
这个压缩包文件“Spring+RMI”很可能包含了实现这样一个远程调用示例的所有必要组成部分,包括配置文件、接口定义、服务器端实现以及客户端调用代码。 首先,我们来理解一下Java RMI。RMI是Java提供的一种原生的...
本文将深入探讨"spring rmi 改造"这一主题,主要关注如何在原有的Spring RMI实现上进行优化,加入线程池控制以提高系统性能和资源利用率。 首先,让我们理解Spring RMI的基本概念。Spring RMI允许开发者利用Spring...
3. **配置Spring容器**:在Spring的XML配置文件中,你需要声明一个`<bean>`来表示远程服务,使用`<rmi:export>`或`<bean class="org.springframework.remoting.rmi.RmiServiceExporter">`标签将服务导出为RMI。...
3. **Spring配置(Spring Configuration)**:在Spring配置文件中,我们需要声明远程服务bean,并配置RMI服务器和客户端的设置。例如: ```xml <bean id="rmiRegistry" class="org.springframework.remoting.rmi....
3. **配置RMIServer**:在Spring配置文件中,使用`RmiRegistryFactoryBean`创建RMI注册表,并使用`RmiServiceExporter`导出远程服务。 ```xml <bean id="registry" class="org.springframework.remoting.rmi....
1. 远程调用RMI(Remote Method Invocation): 通过使用 RmiProxyFactoryBean 和 RmiServiceExporter,并且,Spring支持两个传统的RMI(使用 java.rmi.Remote接口和java.rmi.RemoteException)和通过RMI调用器实现的...