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服务器和客户端的更多相关文章

  1. 使用Spring构建RMI服务器和客户端

    上一篇文章我们实用JDK原生API构造了简单RMI应用,本篇将实用Spring框架来构造RMI的应用,实用Spring你会体验到简单,不需要那么多的条条框框,因为Spring给你做了很多封装. 项目构 ...

  2. [转帖]JavaEE中Web服务器、Web容器、Application服务器区别及联系

    JavaEE中Web服务器.Web容器.Application服务器区别及联系 https://www.cnblogs.com/vipyoumay/p/5853694.html 在JavaEE 开发W ...

  3. SVN服务器和客户端安装教程

    SVN是什么?有何用? SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁 ...

  4. 2016windows(10) wamp 最简单30分钟thrift入门使用讲解,实现php作为服务器和客户端的hello world

    2016最简单windows(10) wamp 30分钟thrift入门使用讲解,实现php作为服务器和客户端的hello world thrift是什么 最简单解释 thrift是用来帮助各个编程语 ...

  5. python web编程-CGI帮助web服务器处理客户端编程

    这几篇博客均来自python核心编程 如果你有任何疑问,欢迎联系我或者仔细查看这本书的地20章 另外推荐下这本书,希望对学习python的同学有所帮助 概念预热 eb客户端通过url请求web服务器里 ...

  6. GATT两个角色 服务器与客户端

    两个设备应用数据的通信是通过协议栈的GATT层实现的. 从GATT角度来看,当两个设备建立连接后,他们处于以下两种角色之一: GATT服务器: 它是为GATT客户端提供数据服务的设备 GATT客户端: ...

  7. golang thrift 源码分析,服务器和客户端究竟是如何工作的

    首先编写thrift文件(rpcserver.thrift),运行thrift --gen go rpcserver.thrift,生成代码 namespace go rpc service RpcS ...

  8. GATT 服务器与客户端角色

    两个设备应用数据的通信是通过协议栈的GATT层实现的.从GATT角度来看,当两个设备建立连接后,他们处于以下两种角色之一: GATT服务器: 它是为GATT客户端提供数据服务的设备 GATT客户端:  ...

  9. homework-05 服务器与客户端

    首先非常抱歉第三次和第四次作业我没交上来,不想找借口强调原因,但是这两次作业我一定会补上,到时候会@助教.谢谢 回到这次作业! 这次作业邹老师没说博客的格式,所以在这里就没有什么回答问题的东西了.这次 ...

随机推荐

  1. 安卓反汇编工具arm-eabi-objdump

    安卓反汇编工具 在Arm平台系统自带的反编译工具在android/prebuild/linux-/toolchail/arm-abil-/bin目录下的arm_eabi-objdump进行反汇编 ar ...

  2. 【原创】leetCodeOj --- Find Peak Element 解题报告

    题目地址: https://oj.leetcode.com/problems/find-peak-element/ 题目内容: A peak element is an element that is ...

  3. 【原创】纯OO:从设计到编码写一个FlappyBird (四)

    第三部分请点这里 这里来实现Obstacle类.其实flappybird的本质就是小鸟原地掉,然后几根柱子在走.这也是在Game类里,用obs.move()来实现游戏逻辑的原因. 我们首先必须确定几个 ...

  4. ORACLE触发特定的解释

    ORACLE PL/SQL编程八: 把触发器说透 本篇主要内容例如以下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 ...

  5. Ubuntu通过使用PyCharm 执行调试 Odoo 8.0 可能的问题

    实现步骤,请移步http://shine-it.net/index.php?topic=16603.0 或 http://www.mindissoftware.com/2014/09/11/Run-O ...

  6. 制作service服务,shell脚本小例子(来自网络)

    事先准备工作:源码安装apache .安装目录为/usr/local/httpd 任务需求:1.可通过 service httpd start|stop|status|restart 命令对服务进行控 ...

  7. 【C++探索之旅】第一部分第三课:第一个C++程序

    内容简介 1.第一部分第三课:第一个C++程序 2.第一部分第四课预告:内存的使用 第一个C++程序 经过上两课之后,我们已经知道了什么是编程,编程的语言,编程的必要软件,C++是什么,我们也安装了适 ...

  8. 站点系统压力測试Jmeter+Badboy

    近期项目须要压力測试,因此搜了几款试用,首选的是LoadRunner这款大名鼎鼎的測试软件: LoadRunner11 下载请猛戳这里 传送门LoadRunner破解文件 下载请猛戳这里 传送门Loa ...

  9. javascript的位操作、整数、二进制

    位与(x&y):对操作数进行二进制与的操作,如果两个操作数的某一位两个都为1,将对应的结果位设为1. 0x0007 & 0x0003 = 0x0003 \ 一个小型年老棕色的狗:64 ...

  10. IIS安装asp组件:JMail 邮件收发组件

    JMail简介 jmail是一种服务器端的邮件发送组件,和个人用的客户端邮件软件不一样的.jmail是在服务器上给程序用来发邮件用的,除了软件编程人员,其他人一般平常用不上. jmail是一个第三方邮 ...