`
zhykhs
  • 浏览: 60410 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

spring rmi 简单应用

阅读更多

最近当涉及到spring rmi操作时,对于客户端提供接口给服务器端的情况还是第一次使用,今天晚上抽出一点时间做了一个小程序,希望能给spring rmi应用者,带来帮助,同时希望大家互相讨论.

1.程序分为客户端和服务端,分别用clientRmi,serverRmi来表示

1.1客户端三个类.

(1).IMessage(接口)

package client;

import java.util.List;

public interface IMessage {

	public void putMessage(String str);

	public List<String> getMessage();
}

 

(2).MessageImpl(上边接口的实现类)

package client;

import java.util.ArrayList;
import java.util.List;

public class MessageImpl implements IMessage {

	private static List<String> strings = new ArrayList<String>();

	@Override
	public List<String> getMessage() {
		synchronized (strings) {
			while (true) {
				if (strings.size() == 0) {
					try {
						strings.wait();
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				} else {
					return strings;
				}
			}
		}
	}

	@Override
	public void putMessage(String str) {
		synchronized (strings) {
			strings.add(str);
			strings.notifyAll();
		}
	}

}

 

(3).MainClient(包含Main方法)

package client;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainClient {

	public static void main(String[] args) {
		ApplicationContext factory = new ClassPathXmlApplicationContext(
				"clientRmi.xml");
		final IMessage mess = (IMessage) factory.getBean("messageImpl");

		Runnable run = new Runnable() {
			@Override
			public void run() {
				while (true) {
					try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					System.out.println(mess.getMessage().size());
				}
			}
		};

		Thread thread = new Thread(run);
		thread.start();
	}
}

 

2.2服务器端也有三个类

(1).IMessage(接口和上边的一样)

(2).ThreadTool(线程工具类)这个类通过rmi访问client端的messageImpl类并且传递值过去

package server;


public class ThreadTool implements Runnable {

	private IMessage message;

	public void setMessage(IMessage message) {
		this.message = message;
	}

	@Override
	public void run() {
		for (int i = 0; i < 100000; i++) {
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			message.putMessage("value" + i);
		}
	}

}

 

(3).MainServer(启动server端的类)

package server;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainServer {

	public static void main(String[] args) {
		ApplicationContext factory = new ClassPathXmlApplicationContext(
				"serverRmi.xml");
		ThreadTool threadTool = (ThreadTool) factory.getBean("threadTool");
		threadTool.run();
	}
}

 首先启动client端,然后是server端,打开client端的控制台,server端将定时想client的List<String>数据结构中放入值.client的Console中便可以看到结果.

  • serverRmi.rar (3.5 MB)
  • 描述: server端--zhy
  • 下载次数: 108
2
0
分享到:
评论

相关推荐

    spring jar 包详解

    如果你的应用仅仅用到简单的Inversion of Control / Dependency Injection(IoC/DI)容器,那么只需spring-core.jar与spring-beans.jar即可;如果你对发布的大小要求很高,那么就得精挑细选了,只取包含自己所需特性...

    最新最全的spring开发包

    spring jar包详细介绍 spring.jar是包含有完整发布的单个jar包,spring....Spring测试套件使用了其中大量mock类,这样测试就更加简单。模拟HttpServletRequest和HttpServletResponse类在Web应用单元测试是很方便的。

    Spring 2.5 jar 所有开发包及完整文档及项目开发实例

    如果你的应用仅仅用到简单的Inversion of Control / Dependency Injection(IoC/DI)容器,那么只需spring-core.jar与spring-beans.jar即可;如果你对发布的大小要求很高,那么就得精挑细选了,只取包含自己所需特性...

    开源框架 Spring Gossip

    Spring MVC 入门 从一个最简单的 Spring Web 应用程式,来看看 Spring MVC 框架的架构与 API 组成元素。 第一个 Spring MVC 程式 WebApplicationContext Handler Mapping Handler ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点实施 7.2.3. AspectJ切入点表达式 7.2.4. 便利的切入...

    Spring 2.0 开发参考手册

    6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点实施 7.2.3. AspectJ切入点表达式 7.2.4. ...

    spring in action英文版

    第二部分 Spring在业务层的应用  第4章 征服数据库  4.1 学习Spring的DAO理念  4.1.1 理解Spring的DataAccessException  4.1.2 与DataSource一起工作  4.1.3 一致的DAO支持  4.2 在Spring中使用...

    Spring攻略(第二版 中文高清版).part1

    8.1 用Spring MVC开发简单的Web应用 280 8.1.1 问题 280 8.1.2 解决方案 281 8.1.3 工作原理 283 8.2 用@RequestMapping映射请求 293 8.2.1 问题 293 8.2.2 解决方案 294 8.2.3 工作原理 294 8.3 ...

    Pro Spring Integration (Apress)

    是Spring框架创建的又一个API,面向企业应用集成(EAI)。Spring Integration非常轻量、易于测试;几乎没有入门门槛,概念上比任何“自己编写”的解决方法都要简单。长远来看,它更为灵活、更具有适应性。一旦使用,...

    Spring中文帮助文档

    2.6.4. 将Spring 应用程序上下文部署为JCA adapter 2.6.5. 计划任务 2.6.6. 对Java 5 (Tiger) 支持 2.7. 移植到Spring 2.5 2.7.1. 改变 2.8. 更新的样例应用 2.9. 改进的文档 I. 核心技术 3. IoC(控制反转)...

    spring chm文档

    6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点实施 7.2.3. AspectJ切入点表达式 7.2.4. ...

    Spring API

    2.6.4. 将Spring 应用程序上下文部署为JCA adapter 2.6.5. 计划任务 2.6.6. 对Java 5 (Tiger) 支持 2.7. 移植到Spring 2.5 2.7.1. 改变 2.8. 更新的样例应用 2.9. 改进的文档 I. 核心技术 3. IoC(控制反转)...

    Spring攻略(第二版 中文高清版).part2

    8.1 用Spring MVC开发简单的Web应用 280 8.1.1 问题 280 8.1.2 解决方案 281 8.1.3 工作原理 283 8.2 用@RequestMapping映射请求 293 8.2.1 问题 293 8.2.2 解决方案 294 8.2.3 工作原理 294 8.3 ...

    Spring in Action(第2版)中文版

    16.5spring中带有dwr的支持ajax的应用程序 16.5.1直接web远程控制 16.5.2访问spring管理的beandwr 16.6小结 附录a装配spring a.1下载spring a.1.1研究spring发布 a.1.2构建自己的类路径 a.2把spring添加为一...

Global site tag (gtag.js) - Google Analytics