⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rpcdispatchershuntest.java

📁 JGRoups源码
💻 JAVA
字号:
package org.jgroups.tests;import org.jgroups.*;import org.jgroups.blocks.GroupRequest;import org.jgroups.blocks.RequestHandler;import org.jgroups.blocks.RpcDispatcher;import org.jgroups.util.RspList;import java.io.IOException;import java.util.Vector;/** * Tests message sending and shunning.Use: * <ol> * <li>Start multiple instances * <li>Send a few messages * <li>Shun a member * <li>Send a message from another member (must work !) * </ol> * @author Bela Ban * @version $Id: RpcDispatcherShunTest.java,v 1.2 2005/11/12 06:38:44 belaban Exp $ */public class RpcDispatcherShunTest implements MembershipListener, RequestHandler, ChannelListener {    JChannel           channel;    RpcDispatcher      disp;    public static void main(String[] args) {        String props=null;        for(int i=0; i < args.length; i++) {            String arg=args[i];            if(arg.equals("-props")) {                props=args[++i];                continue;            }            help();            return;        }        try {            new RpcDispatcherShunTest().start(props);        }        catch(Exception e) {            e.printStackTrace();        }    }    private void start(String props) throws IOException, ChannelException {        channel=new JChannel(props);        channel.addChannelListener(this);        channel.setOpt(Channel.AUTO_RECONNECT, Boolean.TRUE);        disp=new RpcDispatcher(channel, null, this, this,                false, // deadlock detection is disabled                true); // concurrent processing is enabled        channel.connect("MessageDispatcherTestGroup");        mainLoop();    }    private void mainLoop() throws IOException {        while(true) {            int c;            System.in.skip(System.in.available());            System.out.println("\n[1] Send [2] Shun [3] Print view [q] Quit");            c=System.in.read();            switch(c) {            case -1:                break;            case '1':                invokeGroupMethod();                break;            case '2':                shun();                break;            case '3':                View v=channel.getView();                System.out.println("View: " + v);                break;            case 'q':                channel.close();                return;            default:                break;            }        }    }    public Object helloWorld() {        System.out.println("method helloWorld() was called");        return "same to you";    }    private void shun() {        System.out.println("shunning this member");        channel.up(new Event(Event.EXIT));    }    private void invokeGroupMethod() {        RspList rsp_list;        View v=channel.getView();        if(v == null)            return;        Vector members=new Vector(v.getMembers());        System.out.println("sending to " + members);        rsp_list=disp.callRemoteMethods(members, "helloWorld", null, (String[])null, GroupRequest.GET_ALL, 0);        System.out.println("responses:\n" + rsp_list);    }    private static void help() {        System.out.println("MessageDispatcherShunTest [-help] [-props <props>]");    }    public Object handle(Message msg) {        return "same to you";    }    public void viewAccepted(View new_view) {        System.out.println("-- view: " +  new_view);    }    public void suspect(Address suspected_mbr) {    }    public void block() {    }    public void channelConnected(Channel channel) {        // System.out.println("-- channel connected");    }    public void channelDisconnected(Channel channel) {        // System.out.println("-- channel disconnected");    }    public void channelClosed(Channel channel) {        // System.out.println("-- channel closed");    }    public void channelShunned() {        // System.out.println("-- channel shunned");    }    public void channelReconnected(Address addr) {        // System.out.println("-- channel reconnected");    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -