RMI实例—RMI分布式议程服务—分布式实验—西工大


原文链接:https://blog.youkuaiyun.com/Sardar_/article/details/78887586

在原文的代码基础上

  1. 优化了异常检测。

  2. 增加了线程安全,用vector替代了arraylist

  3. 优化了代码结构

也就是加强版,无BUG版本

题目简介:

主要功能
1) 使用Java RMI创建一个分布式议程共享服务。不同的用户可以使用这个共享议程服务执行查询、添加和删除会议的操作。服务器支持会议的登记和清除等功能;

2) 议程共享服务包括以下功能:用户注册、添加会议、查询会议、删除会议、清除会议;

3) 用户注册
新用户注册需要填写用户名和密码,如果用户名已经存在,则注册失败并打印提示信息,否则注册成功并打印成功提示。使用如下命令进行用户注册:

4) 添加会议
已注册的用户可以添加会议。会议必须涉及到两个已注册的用户,一个只涉及单个用户的会议无法被创建。会议的信息包括开始时间、结束时间、会议标题、会议参与者。当一个会议被添加之后,它必须出现在创建会议的用户和参加会议的用户的议程中。如果一个用户的新会议与已经存在的会议出现时间重叠,则无法创建会议。最终,用户收到会议添加结果的提示。使用如下命令进行会议的添加:

5) 查询会议
已注册的用户通过给出特定时间区间(给出开始时间和结束时间)在议程中查询到所有符合条件的会议记录。返回的结果列表按时间排序。在列表中,包括开始时间、结束时间、会议标题、会议参与者等信息。使用如下命令进行会议的查询:

6) 删除会议
已注册的用户可以根据会议的信息删除由该用户创建的会议。使用如下命令进行删除会议操作:

7) 清除会议
已注册的用户可以清除所有由该用户创建的会议。使用如下命令进行清除操作:

使用方法:

1.启动RMISever

2.启动RMIClient,输入命令

 

项目结构:

 

package ssd8.rmi.bean;

import java.util.Date;

public class Meeting {

    private User sponsor;
    private User otheruser;
    private Date start;
    private Date end;
    private String title;
    private int id;

    public Meeting(User sponsor, User otheruser, Date start, Date end, String title) {
        super();
        this.sponsor = sponsor;
        this.otheruser = otheruser;
        this.start = start;
        this.end = end;
        this.title = title;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public User getSponsor() {
        return sponsor;
    }
    public void setSponsor(User sponsor) {
        this.sponsor = sponsor;
    }
    public User getOtheruser() {
        return otheruser;
    }
    public void setOtheruser(User otheruser) {
        this.otheruser = otheruser;
    }
    public Date getStart() {
        return start;
    }
    public void setStart(Date start) {
        this.start = start;
    }
    public Date getEnd() {
        return end;
    }
    public void setEnd(Date end) {
        this.end = end;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
}
package ssd8.rmi.bean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Vector;

public class User implements Serializable {
    private String name;
    private String password;
    private Vector<Meeting> schedule;

    public User(String name, String password) {
        super();
        this.name = name;
        this.password = password;
        this.schedule = new Vector<Meeting>();
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Vector<Meeting> getSchedule() {
        return schedule;
    }
}
package ssd8.rmi.interface_rmi;

import java.rmi.Remote;
import java.text.ParseException;

/**
 * 远程接口必须扩展接口java.rmi.Remote
 * @author Sarda
 */
public interface RMIInterface extends Remote {

    /**
     * 注册用户
     * 如果用户名存在,返回false,否则注册新用户,返回true
     */
    public boolean register(String name, String password)throws java.rmi.RemoteException;

    /**
     * 添加新会议
     * 账号密码不正确,返回0
     * 会议发起者和参与者是同一个用户,返回-1
     * 会议参与者没有注册,返回-2
     * 会议时间与发起者时间冲突,返回-3
     * 会议时间与参与者时间冲突,返回-4
     * 添加成功,返回1
     * @throws P
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值