Java tutorial
/** * Copyright (c) Acroquest Technology Co, Ltd. All Rights Reserved. * Please read the associated COPYRIGHTS file for more details. * * THE SOFTWARE IS PROVIDED BY Acroquest Technolog Co., Ltd., * WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDER BE LIABLE FOR ANY * CLAIM, DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING * OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. */ package acromusashi.stream.client; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Option; import org.apache.commons.cli.OptionBuilder; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; import org.apache.storm.thrift.transport.TTransportException; import org.apache.storm.utils.DRPCClient; import org.apache.storm.utils.Utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * DRPCServer???? * * @author kimura */ public class DrpcRequestClient { /** ? */ private static final int DEFAULT_PORT = 3772; /** */ private static final int DEFAULT_TIMEOUT = 30000; /** logger */ private static final Logger logger = LoggerFactory.getLogger(DrpcRequestClient.class); /** * ????? */ public DrpcRequestClient() { } /** * ?<br> * <br> * ?/?<br> * <ul> * <li>-h DRPCServer(</li> * <li>-p DRPCServer?(? 3772)</li> * <li>-t DRPC(??)(? 30000)</li> * <li>-f DRPC(function)()</li> * <li>-s DRPC()</li> * <li>-sh </li> * </ul> * * @param args */ public static void main(String... args) { DrpcRequestClient client = new DrpcRequestClient(); client.startSendRequest(args); } /** * DRPC?? * * @param args */ public void startSendRequest(String... args) { Options cliOptions = createOptions(); CommandLineParser parser = new PosixParser(); CommandLine commandLine = null; HelpFormatter help = new HelpFormatter(); try { commandLine = parser.parse(cliOptions, args); } catch (ParseException pex) { help.printHelp(DrpcRequestClient.class.getName(), cliOptions, true); return; } if (commandLine.hasOption("sh")) { // ?????????? help.printHelp(DrpcRequestClient.class.getName(), cliOptions, true); return; } // ?? String drpcHost = commandLine.getOptionValue("h"); String function = commandLine.getOptionValue("f"); String funcArg = commandLine.getOptionValue("a"); int drpcPort = DEFAULT_PORT; if (commandLine.hasOption("p") == true) { drpcPort = Integer.parseInt(commandLine.getOptionValue("p")); } int timeout = DEFAULT_TIMEOUT; if (commandLine.hasOption("t") == true) { timeout = Integer.parseInt(commandLine.getOptionValue("t")); } sendRequest(drpcHost, drpcPort, timeout, function, funcArg); } /** * DRPC?? * * @param host DRPCServer * @param port DRPCServer? * @param timeout DRPC(??) * @param func DRPC(function) * @param funcArg DRPC */ public void sendRequest(String host, int port, int timeout, String func, String funcArg) { DRPCClient client = null; try { client = createClient(host, port, timeout); } catch (Exception ex) { logger.error("DRPCClient connect failed.", ex); return; } String result = null; try { result = client.execute(func, funcArg); logger.info("DRPCRequest result is " + result); } catch (Exception ex) { logger.error("DRPCRequest failed.", ex); } finally { client.close(); } } /** * DRPCClient?? * * @param host DRPCServer * @param port DRPCServer? * @param timeout DRPC(??) * @return DRPCClient * @throws TTransportException Transport failed. */ protected DRPCClient createClient(String host, int port, int timeout) throws TTransportException { return new DRPCClient(Utils.readStormConfig(), host, port, timeout); } /** * ??? * * @return ?? */ public static Options createOptions() { Options cliOptions = new Options(); // DRPCServer Host OptionBuilder.hasArg(true); OptionBuilder.withArgName("DRPCServer Host"); OptionBuilder.withDescription("DRPCServer Host"); OptionBuilder.isRequired(true); Option serverOption = OptionBuilder.create("h"); // DRPCServer Port OptionBuilder.hasArg(true); OptionBuilder.withArgName("DRPCServer Port"); OptionBuilder.withDescription("DRPCServer Port"); OptionBuilder.isRequired(false); Option portOption = OptionBuilder.create("p"); // OptionBuilder.hasArg(true); OptionBuilder.withArgName("DRPC Request Timeout"); OptionBuilder.withDescription("DRPC Request Timeout"); OptionBuilder.isRequired(false); Option timeoutOption = OptionBuilder.create("t"); // DRPC Function OptionBuilder.hasArg(true); OptionBuilder.withArgName("DRPC Function"); OptionBuilder.withDescription("DRPC Function"); OptionBuilder.isRequired(true); Option functionOption = OptionBuilder.create("f"); // DRPC Function Arg OptionBuilder.hasArg(true); OptionBuilder.withArgName("DRPC Function Arg"); OptionBuilder.withDescription("DRPC Function Arg"); OptionBuilder.isRequired(true); Option funcArgOption = OptionBuilder.create("a"); // OptionBuilder.withDescription("show help"); Option helpOption = OptionBuilder.create("sh"); cliOptions.addOption(serverOption); cliOptions.addOption(portOption); cliOptions.addOption(timeoutOption); cliOptions.addOption(functionOption); cliOptions.addOption(funcArgOption); cliOptions.addOption(helpOption); return cliOptions; } }