JavaEE(3) - RMI服务器和客户端
1. 开发RMI服务器
Net Beans创建java project: (qs) (Server.java)
package server; import java.rmi.*; //远程接口必须集成java.rmi.Remote接口
public interface Server extends Remote
{
//所有在Remote接口里声明的方法都应该抛出RemoteException异常
String helloWorld(String name) throws RemoteException;
Person getPerson(String name , int age) throws RemoteException;
}
Person.java
package server;
import java.io.*;
public class Person implements Serializable {
private String name;
private int age;
//无参数的构造器
public Person() {
}
//初始化全部属性的构造器
public Person(String name, int age) {
this.name = name;
this.age = age;
}
//name属性的setter和getter方法
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
//age属性的setter和getter方法
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return this.age;
}
}
ServerImpl.java
package server; import java.rmi.*;
import java.rmi.server.*;
import java.rmi.registry.*;
import javax.naming.*; //远程服务类,远程服务类必须继承UnicastRemoteObject,并实现Remote接口
public class ServerImpl extends UnicastRemoteObject implements Server
{
//由于默认构造器必须声明抛出RemoteException
//因此此处必须显式定义该构造器
public ServerImpl() throws RemoteException
{
}
//实现Remote接口必须实现的方法
public String helloWorld(String name) throws RemoteException
{
return name + ", 您好!";
}
//实现Remote接口必须实现的方法
public Person getPerson(String name , int age) throws RemoteException
{
return new Person(name , age);
}
//下面是服务类的本地方法,不会“暴露”为远程服务。
public void info()
{
System.out.println("我是本地方法");
}
//下面提供程序入口,将远程类实例绑定为本机的服务。
public static void main(String[] args) throws Exception
{
//创建远程服务类实例
Server imp = new ServerImpl();
//注册远程服务的端口
LocateRegistry.createRegistry(1099);
//将远程服务实例绑定为远程服务。
Naming.rebind("rmi://:1099/crazyit", imp);
}
}
2. 开发RMI客户端
需要RMI服务端的Server.clsss和Person.class
RMIClient.java
package client; import javax.naming.*;
import java.rmi.*;
import server.Server; public class RMIClient
{
public static void main(String[] args)throws Exception
{
//通过JNDI查找远程服务,并执行强制类型转换
Server ser = (Server)Naming.lookup("rmi://127.0.0.1:1099/crazyit");
System.out.println(ser instanceof java.rmi.server.RemoteStub);
//调用远程方法
System.out.println(ser.helloWorld("yeeku"));
//调用远程方法。
System.out.println(ser.getPerson("yeeku",28));
}
}
JavaEE(3) - RMI服务器和客户端的更多相关文章
- 使用Spring构建RMI服务器和客户端
上一篇文章我们实用JDK原生API构造了简单RMI应用,本篇将实用Spring框架来构造RMI的应用,实用Spring你会体验到简单,不需要那么多的条条框框,因为Spring给你做了很多封装. 项目构 ...
- [转帖]JavaEE中Web服务器、Web容器、Application服务器区别及联系
JavaEE中Web服务器.Web容器.Application服务器区别及联系 https://www.cnblogs.com/vipyoumay/p/5853694.html 在JavaEE 开发W ...
- SVN服务器和客户端安装教程
SVN是什么?有何用? SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁 ...
- 2016windows(10) wamp 最简单30分钟thrift入门使用讲解,实现php作为服务器和客户端的hello world
2016最简单windows(10) wamp 30分钟thrift入门使用讲解,实现php作为服务器和客户端的hello world thrift是什么 最简单解释 thrift是用来帮助各个编程语 ...
- python web编程-CGI帮助web服务器处理客户端编程
这几篇博客均来自python核心编程 如果你有任何疑问,欢迎联系我或者仔细查看这本书的地20章 另外推荐下这本书,希望对学习python的同学有所帮助 概念预热 eb客户端通过url请求web服务器里 ...
- GATT两个角色 服务器与客户端
两个设备应用数据的通信是通过协议栈的GATT层实现的. 从GATT角度来看,当两个设备建立连接后,他们处于以下两种角色之一: GATT服务器: 它是为GATT客户端提供数据服务的设备 GATT客户端: ...
- golang thrift 源码分析,服务器和客户端究竟是如何工作的
首先编写thrift文件(rpcserver.thrift),运行thrift --gen go rpcserver.thrift,生成代码 namespace go rpc service RpcS ...
- GATT 服务器与客户端角色
两个设备应用数据的通信是通过协议栈的GATT层实现的.从GATT角度来看,当两个设备建立连接后,他们处于以下两种角色之一: GATT服务器: 它是为GATT客户端提供数据服务的设备 GATT客户端: ...
- homework-05 服务器与客户端
首先非常抱歉第三次和第四次作业我没交上来,不想找借口强调原因,但是这两次作业我一定会补上,到时候会@助教.谢谢 回到这次作业! 这次作业邹老师没说博客的格式,所以在这里就没有什么回答问题的东西了.这次 ...
随机推荐
- HDOJ 4687 Boke and Tsukkomi 一般图最大匹配带花树+暴力
一般图最大匹配带花树+暴力: 先算最大匹配 C1 在枚举每一条边,去掉和这条边两个端点有关的边.....再跑Edmonds得到匹配C2 假设C2+2==C1则这条边再某个最大匹配中 Boke and ...
- win8/win10/win2012r2 存储池 冗余分析
StorageSpace:a. Simple,相当于RAID0,无冗余,不考虑b. Two-way Mirror,双重镜像,至少2块盘,性能单盘,可以坏一块盘c. Three-way Mirror,三 ...
- bootstarp modal自己主动调整宽度的JS代码
$('#ajaxPage').modal('show').css({ width: 'auto', 'margin-left': function () { return -($(this).widt ...
- 【PullToRefresh 系列基本用法】 Android装上拉下拉刷新控制具体的解释
转载请注明:http://blog.csdn.net/duguang77/article/details/40921601 作者信息: Chris Banes大神详情:https://github.c ...
- 希尔排序----java实现
思路:希尔排序是分组基础上的直接插入排序,给定的一个步长数组,每个小组先直接插入排序.虽然有四次循环,但是每次循环次数少. package com.sheepmu.text; import java. ...
- 【转】HLSL基础
原文地址http://blog.csdn.net/chpdirect1984/article/details/1911622 目录 前言 1.HLSL入门 1.1什么是着色器 1.2什么是HLSL 1 ...
- Hadoop之—— CentOS Warning: $HADOOP_HOME is deprecated解
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46389499 启动Hadoop时报了一个警告信息.我安装的Hadoop版本号是ha ...
- 4.锁定--Java的LockSupport.park()实现分析
LockSupport类是Java6(JSR166-JUC)引入的一个类,提供了主要的线程同步原语. LockSupport实际上是调用了Unsafe类里的函数.归结到Unsafe里,仅仅有两个函数: ...
- JSON连载java目的
一. 前台(JS 面向对象) 1. 定义SearchView对象 function SearchView() { } SearchView.prototype.setViewName = funct ...
- 使用autoconf和automake生成Makefile文件(转)
Makefile好难写 曾经也总结了一篇关于Makefile的文章<make和makefile的简单学习>.但是,总结完以后,发现写Makefile真的是一件非常痛苦的事情,的确非常痛苦. ...