📄 rpcdispatchershuntest.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 + -