List of usage examples for java.lang Thread Thread
public Thread(String name)
From source file:org.apache.uima.examples.as.GetMetaRequest.java
/** * retrieve meta information for a UIMA-AS Service attached to a broker * It uses the port 1099 as the JMX port on the broker, unless overridden * by defining the system property activemq.broker.jmx.port with a value of another port number * It uses the default JMX ActiveMQ Domain "org.apache.activemq", unless overridden * by defining the system property activemq.broker.jmx.domain with a value of the domain to use * This normally never needs to be done unless multiple brokers are run on the same node * as is sometimes done for unit tests. * @param args - brokerUri serviceName [-verbose] *//*from w w w .j av a 2s . co m*/ public static void main(String[] args) { if (args.length < 2) { System.err.println("Need arguments: brokerURI serviceName [-verbose]"); System.exit(1); } String brokerURI = args[0]; String queueName = args[1]; boolean printReply = false; if (args.length > 2) { if (args[2].equalsIgnoreCase("-verbose")) { printReply = true; } else { System.err.println("Unknown argument: " + args[2]); System.exit(1); } } final Connection connection; Session producerSession = null; Queue producerQueue = null; MessageProducer producer; MessageConsumer consumer; Session consumerSession = null; TemporaryQueue consumerDestination = null; long startTime = 0; // Check if JMX server port number was specified jmxPort = System.getProperty("activemq.broker.jmx.port"); if (jmxPort == null || jmxPort.trim().length() == 0) { jmxPort = "1099"; // default } try { // First create connection to a broker ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(brokerURI); connection = factory.createConnection(); connection.start(); Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { public void run() { try { if (connection != null) { connection.close(); } if (jmxc != null) { jmxc.close(); } } catch (Exception ex) { } } })); URI target = new URI(brokerURI); String brokerHost = target.getHost(); attachToRemoteBrokerJMXServer(brokerURI); if (isQueueAvailable(queueName) == QueueState.exists) { System.out.println("Queue " + queueName + " found on " + brokerURI); System.out.println("Sending getMeta..."); } else if (isQueueAvailable(queueName) == QueueState.existsnot) { System.err.println("Queue " + queueName + " does not exist on " + brokerURI); System.exit(1); } else { System.out.println("Cannot see queues on JMX port " + brokerHost + ":" + jmxPort); System.out.println("Sending getMeta anyway..."); } producerSession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); producerQueue = producerSession.createQueue(queueName); producer = producerSession.createProducer(producerQueue); consumerSession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); consumerDestination = consumerSession.createTemporaryQueue(); // ----------------------------------------------------------------------------- // Create message consumer. The consumer uses a selector to filter out messages other // then GetMeta replies. Currently UIMA AS service returns two messages for each request: // ServiceInfo message and GetMeta message. The ServiceInfo message is returned by the // service immediately upon receiving a message from a client. This serves dual purpose, // 1) to make sure the client reply destination exists // 2) informs the client which service is processing its request // ----------------------------------------------------------------------------- consumer = consumerSession.createConsumer(consumerDestination, "Command=2001"); TextMessage msg = producerSession.createTextMessage(); msg.setStringProperty(AsynchAEMessage.MessageFrom, consumerDestination.getQueueName()); msg.setStringProperty(UIMAMessage.ServerURI, brokerURI); msg.setIntProperty(AsynchAEMessage.MessageType, AsynchAEMessage.Request); msg.setIntProperty(AsynchAEMessage.Command, AsynchAEMessage.GetMeta); msg.setJMSReplyTo(consumerDestination); msg.setText(""); producer.send(msg); startTime = System.nanoTime(); System.out.println("Sent getMeta request to " + queueName + " at " + brokerURI); System.out.println("Waiting for getMeta reply..."); ActiveMQTextMessage reply = (ActiveMQTextMessage) consumer.receive(); long waitTime = (System.nanoTime() - startTime) / 1000000; System.out.println( "Reply from " + reply.getStringProperty("ServerIP") + " received in " + waitTime + " ms"); if (printReply) { System.out.println("Reply MessageText: " + reply.getText()); } } catch (Exception e) { System.err.println(e.toString()); } System.exit(0); }
From source file:de.cosmocode.palava.core.Main.java
/** * Application entry point./*www.ja va 2 s . co m*/ * * @param args command line arguments */ public static void main(String[] args) { AsciiArt.print(); final Main main; try { main = new Main(args); /* CHECKSTYLE:OFF */ } catch (RuntimeException e) { /* CHECKSTYLE:ON */ LOG.error("configuration error", e); printToStdErr(e); System.exit(1); throw e; } main.start(); LOG.debug("Adding shutdown hook"); Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { @Override public void run() { main.stop(); synchronized (main) { main.notify(); } } })); main.waitIfNecessary(); System.exit(0); }
From source file:ca.ualberta.exemplar.core.Exemplar.java
public static void main(String[] rawArgs) throws FileNotFoundException, UnsupportedEncodingException { CommandLineParser cli = new BasicParser(); Options options = new Options(); options.addOption("h", "help", false, "shows this message"); options.addOption("b", "benchmark", true, "expects input to be a benchmark file (type = binary | nary)"); options.addOption("p", "parser", true, "defines which parser to use (parser = stanford | malt)"); CommandLine line = null;/* ww w . j av a 2s. c om*/ try { line = cli.parse(options, rawArgs); } catch (ParseException exp) { System.err.println(exp.getMessage()); System.exit(1); } String[] args = line.getArgs(); String parserName = line.getOptionValue("parser", "malt"); if (line.hasOption("help")) { HelpFormatter formatter = new HelpFormatter(); formatter.printHelp("sh ./exemplar", options); System.exit(0); } if (args.length != 2) { System.out.println("error: exemplar requires an input file and output file."); HelpFormatter formatter = new HelpFormatter(); formatter.printHelp("sh ./exemplar <input> <output>", options); System.exit(0); } File input = new File(args[0]); File output = new File(args[1]); String benchmarkType = line.getOptionValue("benchmark", ""); if (!benchmarkType.isEmpty()) { if (benchmarkType.equals("binary")) { BenchmarkBinary evaluation = new BenchmarkBinary(input, output, parserName); evaluation.runAndTime(); System.exit(0); } else { if (benchmarkType.equals("nary")) { BenchmarkNary evaluation = new BenchmarkNary(input, output, parserName); evaluation.runAndTime(); System.exit(0); } else { System.out.println("error: benchmark option has to be either 'binary' or 'nary'."); System.exit(0); } } } Parser parser = null; if (parserName.equals("stanford")) { parser = new ParserStanford(); } else { if (parserName.equals("malt")) { parser = new ParserMalt(); } else { System.out.println(parserName + " is not a valid parser."); System.exit(0); } } System.out.println("Starting EXEMPLAR..."); RelationExtraction exemplar = null; try { exemplar = new RelationExtraction(parser); } catch (FileNotFoundException e) { e.printStackTrace(); } BlockingQueue<String> inputQueue = new ArrayBlockingQueue<String>(QUEUE_SIZE); PlainTextReader reader = null; reader = new PlainTextReader(inputQueue, input); Thread readerThread = new Thread(reader); readerThread.start(); PrintStream statementsOut = null; try { statementsOut = new PrintStream(output, "UTF-8"); } catch (FileNotFoundException e1) { e1.printStackTrace(); System.exit(0); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); System.exit(0); } statementsOut.println("Subjects\tRelation\tObjects\tNormalized Relation\tSentence"); while (true) { String doc = null; try { doc = inputQueue.take(); } catch (InterruptedException e) { e.printStackTrace(); } if (doc.isEmpty()) { break; } List<RelationInstance> instances = exemplar.extractRelations(doc); for (RelationInstance instance : instances) { // Output SUBJ arguments in a separate field, for clarity boolean first = true; for (Argument arg : instance.getArguments()) { if (arg.argumentType.equals("SUBJ")) { if (first) { first = false; } else { statementsOut.print(",,"); } statementsOut.print(arg.argumentType + ":" + arg.entityId); } } // Output the original relation statementsOut.print("\t" + instance.getOriginalRelation() + "\t"); // Output the DOBJ arguments, followed by POBJ first = true; for (Argument arg : instance.getArguments()) { if (arg.argumentType.equals("DOBJ")) { if (first) { first = false; } else { statementsOut.print(",,"); } statementsOut.print(arg.argumentType + ":" + arg.entityId); } } for (Argument arg : instance.getArguments()) { if (arg.argumentType.startsWith("POBJ")) { if (first) { first = false; } else { statementsOut.print(",,"); } statementsOut.print(arg.argumentType + ":" + arg.entityId); } } statementsOut.print("\t" + instance.getNormalizedRelation()); statementsOut.print("\t" + instance.getSentence()); statementsOut.println(); } } System.out.println("Done!"); statementsOut.close(); }
From source file:ee.ria.xroad.common.signature.BatchSignerIntegrationTest.java
/** * Main program entry point./*www . jav a 2s . c om*/ * @param args command-line arguments * @throws Exception in case of any errors */ public static void main(String[] args) throws Exception { if (args.length == 0) { printUsage(); return; } ActorSystem actorSystem = ActorSystem.create("Proxy", ConfigFactory.load().getConfig("proxy")); SignerClient.init(actorSystem); Thread.sleep(SIGNER_INIT_DELAY); // wait for signer client to connect BatchSigner.init(actorSystem); X509Certificate subjectCert = TestCertUtil.getConsumer().cert; X509Certificate issuerCert = TestCertUtil.getCaCert(); X509Certificate signerCert = TestCertUtil.getOcspSigner().cert; PrivateKey signerKey = TestCertUtil.getOcspSigner().key; List<String> messages = new ArrayList<>(); for (String arg : args) { messages.add(FileUtils.readFileToString(new File(arg))); } latch = new CountDownLatch(messages.size()); Date thisUpdate = new DateTime().plusDays(1).toDate(); final OCSPResp ocsp = OcspTestUtils.createOCSPResponse(subjectCert, issuerCert, signerCert, signerKey, CertificateStatus.GOOD, thisUpdate, null); for (final String message : messages) { new Thread(() -> { try { byte[] hash = hash(message); log.info("File: {}, hash: {}", message, hash); MessagePart hashPart = new MessagePart(MessageFileNames.MESSAGE, SHA512_ID, calculateDigest(SHA512_ID, message.getBytes()), message.getBytes()); List<MessagePart> hashes = Collections.singletonList(hashPart); SignatureBuilder builder = new SignatureBuilder(); builder.addPart(hashPart); builder.setSigningCert(subjectCert); builder.addOcspResponses(Collections.singletonList(ocsp)); log.info("### Calculating signature..."); SignatureData signatureData = builder.build( new SignerSigningKey(KEY_ID, CryptoUtils.CKM_RSA_PKCS_NAME), CryptoUtils.SHA512_ID); synchronized (sigIdx) { log.info("### Created signature: {}", signatureData.getSignatureXml()); log.info("HashChainResult: {}", signatureData.getHashChainResult()); log.info("HashChain: {}", signatureData.getHashChain()); toFile("message-" + sigIdx + ".xml", message); String sigFileName = signatureData.getHashChainResult() != null ? "batch-sig-" : "sig-"; toFile(sigFileName + sigIdx + ".xml", signatureData.getSignatureXml()); if (signatureData.getHashChainResult() != null) { toFile("hash-chain-" + sigIdx + ".xml", signatureData.getHashChain()); toFile("hash-chain-result.xml", signatureData.getHashChainResult()); } sigIdx++; } try { verify(signatureData, hashes, message); log.info("Verification successful (message hash: {})", hash); } catch (Exception e) { log.error("Verification failed (message hash: {})", hash, e); } } catch (Exception e) { log.error("Error", e); } finally { latch.countDown(); } }).start(); } latch.await(); actorSystem.shutdown(); }
From source file:wh.contrib.RewardOptimizerHttpClient.java
public static void main(String[] args) throws Exception { HttpParams params = new BasicHttpParams(); params.setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 30000) .setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 10000) .setIntParameter(CoreConnectionPNames.SOCKET_BUFFER_SIZE, 64 * 1024) .setBooleanParameter(CoreConnectionPNames.STALE_CONNECTION_CHECK, false) .setBooleanParameter(CoreConnectionPNames.TCP_NODELAY, true) .setParameter(CoreProtocolPNames.USER_AGENT, "HttpComponents/1.1 (RewardOptimizer - karlthepagan@gmail.com)"); final ConnectingIOReactor ioReactor = new DefaultConnectingIOReactor(2, params); BasicHttpProcessor httpproc = new BasicHttpProcessor(); httpproc.addInterceptor(new RequestContent()); httpproc.addInterceptor(new RequestTargetHost()); httpproc.addInterceptor(new RequestConnControl()); httpproc.addInterceptor(new RequestUserAgent()); httpproc.addInterceptor(new RequestExpectContinue()); // We are going to use this object to synchronize between the // I/O event and main threads RequestCount requestCount = new RequestCount(1); BufferingHttpClientHandler handler = new BufferingHttpClientHandler(httpproc, new MyHttpRequestExecutionHandler(requestCount), new DefaultConnectionReuseStrategy(), params); handler.setEventListener(new EventLogger()); final IOEventDispatch ioEventDispatch = new DefaultClientIOEventDispatch(handler, params); Thread t = new Thread(new Runnable() { public void run() { try { ioReactor.execute(ioEventDispatch); } catch (InterruptedIOException ex) { System.err.println("Interrupted"); } catch (IOException e) { System.err.println("I/O error: " + e.getMessage()); }//from w ww . ja va 2 s . c om System.out.println("Shutdown"); } }); t.start(); List<SessionRequest> reqs = new ArrayList<SessionRequest>(); // reqs.add(ioReactor.connect( // new InetSocketAddress("www.yahoo.com", 80), // null, // new HttpHost("www.yahoo.com"), // null)); // reqs.add(ioReactor.connect( // new InetSocketAddress("www.google.com", 80), // null, // new HttpHost("www.google.ch"), // null)); // reqs.add(ioReactor.connect( // new InetSocketAddress("www.apache.org", 80), // null, // new HttpHost("www.apache.org"), // null)); reqs.add(ioReactor.connect(new InetSocketAddress("www.wowhead.com", 80), null, new HttpHost("www.wowhead.com"), null)); // Block until all connections signal // completion of the request execution synchronized (requestCount) { while (requestCount.getValue() > 0) { requestCount.wait(); } } System.out.println("Shutting down I/O reactor"); ioReactor.shutdown(); System.out.println("Done"); }
From source file:org.atomspace.pi2c.runtime.Server.java
public static void main(String[] args) throws Exception { System.err.println("::: ----------------------------------------------------------------------- :::"); System.err.println("::: ------------------------------ STARTING ------------------------------:::"); System.err.println("::: ----------------------------------------------------------------------- :::"); System.err.println("\n::: SYSTEM-Properties: :::"); Set<?> properties = System.getProperties().keySet(); for (Object object : properties) { System.err.println("::: " + object.toString() + " = " + System.getProperty(object.toString())); }/* w w w .j a va2 s. c o m*/ System.err.println("\n::: ENV-Properties: :::"); properties = System.getenv().keySet(); for (Object object : properties) { System.err.println("::: " + object.toString() + " = " + System.getenv(object.toString())); } windows = System.getProperty("os.name").toLowerCase().startsWith("windows"); linux = System.getProperty("os.name").toLowerCase().startsWith("linux"); sunos = System.getProperty("os.name").toLowerCase().startsWith("sun"); freebsd = System.getProperty("os.name").toLowerCase().startsWith("freebsd"); if (linux || sunos) { //USR2-Signal-Handel lookup internal Server STATUS for Linux or SunOS System.err.println("::: " + new Date() + "::: run unter Linux or SunOS :::"); addUnixSignalStatusHandle(); } else if (freebsd) { System.err.println("::: " + new Date() + "::: run unter FreeBSD :::"); } else if (windows) { //Gracefull Shutdown JFrame for Windows, because can not kill -15 <pid> on Window or in Eclipse Console System.err.println("::: " + new Date() + " ::: run unter windows :::"); addWindowsShutdownHandle(); } else { System.err.println("UNKNOWN OS:" + System.getProperty("os.name")); } status = STATUS_STARTING; Server server = new Server(); Thread serverThread = new Thread(server); serverThread.start(); //Thread can stop by Shutdown-Hook while (true) { try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); break; } } }
From source file:MainServer.java
public static void main(String[] args) { int port = 1234; String filepath = ""; String complete_path = ""; String connection_type = ""; String ip_address = ""; int port_out = 0; int delay = 20; //20 by default //parse commands using getOpt (cli) //add Options Options options = new Options(); options.addOption("p", true, "port_to_listen_on"); options.addOption("d", true, "directory"); options.addOption("T", false, "TCP mode"); options.addOption("U", false, "UDP mode"); options.addOption("s", true, "iPAddress"); options.addOption("P", true, "port_to_connect_to"); options.addOption("D", true, "delay"); CommandLineParser clp = new DefaultParser(); try {// w w w. jav a2s.co m CommandLine cl = clp.parse(options, args); //options for the server if (cl.hasOption("p")) { port = Integer.parseInt(cl.getOptionValue("p")); } else { System.err.println("No valid port selected."); return; } if (cl.hasOption("d")) { filepath = cl.getOptionValue("d"); //if there a '/' in front, remove it to make it a valid directory if (filepath.substring(0, 1).equalsIgnoreCase("/")) { filepath = filepath.substring(1); } } else { System.err.println("No valid directory given."); return; } if (cl.hasOption("D")) { delay = Integer.parseInt(cl.getOptionValue("D")); } //options for the client if (cl.hasOption("T")) { connection_type = "T"; } else if (cl.hasOption("U")) { connection_type = "U"; } if (cl.hasOption("s")) { ip_address = cl.getOptionValue("s"); } if (cl.hasOption("P")) { port_out = Integer.parseInt(cl.getOptionValue("P")); } } catch (ParseException e) { //TODO: handle exception } //create directory (if it doesn't already exist) try { Files.createDirectories(Paths.get(filepath)); } catch (Exception e) { //TODO: handle exception System.err.println("Couldn't create directory"); System.err.println(filepath); } //read in required files (create them if they dont already exist) try { Files.createFile(Paths.get(filepath + "/gossip.txt")); Files.createFile(Paths.get(filepath + "/peers.txt")); } catch (Exception e) { //TODO: handle exception } WriteToFiles.readFiles(filepath); //start the servers TCPServerSock tcpServer = new TCPServerSock(port, filepath, delay); UDPServer udpServer = new UDPServer(port, filepath); Thread tcpThread = new Thread(tcpServer); Thread udpThread = new Thread(udpServer); tcpThread.start(); udpThread.start(); //start the client if (!connection_type.equals("") && port_out != 0 && !ip_address.equals("")) { Client client = new Client(ip_address, port_out, connection_type); Thread clientThread = new Thread(client); clientThread.start(); } //Start thread to forget peers ForgetPeer forgetPeer = new ForgetPeer(filepath + "/peers.txt", delay); Thread forgetPeerThread = new Thread(forgetPeer); forgetPeerThread.start(); }
From source file:com.bskyb.cg.environments.server.LogServer.java
public static void main(String[] args) { ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext( "context/logServerAppCtx.xml"); LogServer logServer = (LogServer) applicationContext.getBean("logServer"); new Thread(logServer).start(); }
From source file:fredboat.FredBoat.java
public static void main(String[] args) throws LoginException, IllegalArgumentException, InterruptedException, IOException, UnirestException { Runtime.getRuntime().addShutdownHook(new Thread(ON_SHUTDOWN)); log.info("\n\n" + " ______ _ ____ _ \n" + " | ____| | | _ \\ | | \n" + " | |__ _ __ ___ __| | |_) | ___ __ _| |_ \n" + " | __| '__/ _ \\/ _` | _ < / _ \\ / _` | __|\n" + " | | | | | __/ (_| | |_) | (_) | (_| | |_ \n" + " |_| |_| \\___|\\__,_|____/ \\___/ \\__,_|\\__|\n\n"); I18n.start();//w w w . ja va 2s .co m //Attach log adapter SimpleLog.addListener(new SimpleLogToSLF4JAdapter()); //Make JDA not print to console, we have Logback for that SimpleLog.LEVEL = SimpleLog.Level.OFF; int scope; try { scope = Integer.parseInt(args[0]); } catch (NumberFormatException | ArrayIndexOutOfBoundsException ignored) { log.info("Invalid scope, defaulting to scopes 0x111"); scope = 0x111; } log.info("Starting with scopes:" + "\n\tMain: " + ((scope & 0x100) == 0x100) + "\n\tMusic: " + ((scope & 0x010) == 0x010) + "\n\tSelf: " + ((scope & 0x001) == 0x001)); log.info("JDA version:\t" + JDAInfo.VERSION); Config.loadDefaultConfig(scope); try { API.start(); } catch (Exception e) { log.info("Failed to ignite Spark, FredBoat API unavailable", e); } try { if (!Config.CONFIG.getJdbcUrl().equals("") && !Config.CONFIG.getOauthSecret().equals("")) { DatabaseManager.startup(Config.CONFIG.getJdbcUrl(), null, Config.CONFIG.getHikariPoolSize()); OAuthManager.start(Config.CONFIG.getBotToken(), Config.CONFIG.getOauthSecret()); } else { log.warn("No JDBC URL and/or secret found, skipped database connection and OAuth2 client"); log.warn("Falling back to internal SQLite db"); DatabaseManager.startup("jdbc:sqlite:fredboat.db", "org.hibernate.dialect.SQLiteDialect", Config.CONFIG.getHikariPoolSize()); } } catch (Exception e) { log.info("Failed to start DatabaseManager and OAuth2 client", e); } //Initialise event listeners listenerBot = new EventListenerBoat(); listenerSelf = new EventListenerSelf(); //Commands if (Config.CONFIG.getDistribution() == DistributionEnum.DEVELOPMENT || Config.CONFIG.getDistribution() == DistributionEnum.MAIN) MainCommandInitializer.initCommands(); if (Config.CONFIG.getDistribution() == DistributionEnum.DEVELOPMENT || Config.CONFIG.getDistribution() == DistributionEnum.MUSIC || Config.CONFIG.getDistribution() == DistributionEnum.PATRON) MusicCommandInitializer.initCommands(); log.info("Loaded commands, registry size is " + CommandRegistry.getSize()); //Check MAL creds executor.submit(FredBoat::hasValidMALLogin); //Check imgur creds executor.submit(FredBoat::hasValidImgurCredentials); //Initialise JCA executor.submit(FredBoat::loadJCA); /* Init JDA */ if ((Config.CONFIG.getScope() & 0x110) != 0) { initBotShards(listenerBot); } if ((Config.CONFIG.getScope() & 0x001) != 0) { log.error("Selfbot support has been removed."); //fbClient = new FredBoatClient(); } if (Config.CONFIG.getDistribution() == DistributionEnum.MUSIC && Config.CONFIG.getCarbonKey() != null) { CarbonitexAgent carbonitexAgent = new CarbonitexAgent(Config.CONFIG.getCarbonKey()); carbonitexAgent.setDaemon(true); carbonitexAgent.start(); } ShardWatchdogAgent shardWatchdogAgent = new ShardWatchdogAgent(); shardWatchdogAgent.setDaemon(true); shardWatchdogAgent.start(); }
From source file:ch.epfl.leb.sass.commandline.CommandLineInterface.java
/** * Shows help, launches the interpreter and executes scripts according to input args. * @param args input arguments/* w w w. j av a2 s .c o m*/ */ public static void main(String args[]) { // parse input arguments CommandLineParser parser = new DefaultParser(); CommandLine line = null; try { line = parser.parse(options, args); } catch (ParseException ex) { System.err.println("Parsing of arguments failed. Reason: " + ex.getMessage()); System.err.println("Use -help for usage."); System.exit(1); } // decide how do we make the interpreter available based on options Interpreter interpreter = null; // show help and exit if (line.hasOption("help")) { HelpFormatter helpFormatter = new HelpFormatter(); helpFormatter.printHelp("java -jar <jar-name>", options, true); System.exit(0); // launch interpreter inside current terminal } else if (line.hasOption("interpreter")) { // assign in, out and err streams to the interpreter interpreter = new Interpreter(new InputStreamReader(System.in), System.out, System.err, true); interpreter.setShowResults(true); // if a script was given, execute it before giving access to user if (line.hasOption("script")) { try { interpreter.source(line.getOptionValue("script")); } catch (IOException ex) { Logger.getLogger(BeanShellConsole.class.getName()).log(Level.SEVERE, "IOException while executing shell script.", ex); } catch (EvalError ex) { Logger.getLogger(BeanShellConsole.class.getName()).log(Level.SEVERE, "EvalError while executing shell script.", ex); } } // give access to user new Thread(interpreter).start(); // only execute script and exit } else if (line.hasOption("script")) { interpreter = new Interpreter(); try { interpreter.source(line.getOptionValue("script")); System.exit(0); } catch (IOException ex) { Logger.getLogger(BeanShellConsole.class.getName()).log(Level.SEVERE, "IOException while executing shell script.", ex); System.exit(1); } catch (EvalError ex) { Logger.getLogger(BeanShellConsole.class.getName()).log(Level.SEVERE, "EvalError while executing shell script.", ex); System.exit(1); } // Launches the RPC server with the model contained in the file whose // filename was passed by argument. } else if (line.hasOption("rpc_server")) { IJPluginModel model = new IJPluginModel(); File file = new File(line.getOptionValue("rpc_server")); try { FileInputStream stream = new FileInputStream(file); model = IJPluginModel.read(stream); } catch (FileNotFoundException ex) { System.out.println("Error: " + file.getName() + " not found."); System.exit(1); } catch (Exception ex) { ex.printStackTrace(); } // Check whether a port number was specified. if (line.hasOption("port")) { try { port = Integer.valueOf(line.getOptionValue("port")); System.out.println("Using port: " + String.valueOf(port)); } catch (java.lang.NumberFormatException ex) { System.out.println("Error: the port number argument is not a number."); System.exit(1); } } else { System.out.println("No port number provided. Using default port: " + String.valueOf(port)); } RPCServer server = new RPCServer(model, port); System.out.println("Starting RPC server..."); server.serve(); } else if (line.hasOption("port") & !line.hasOption("rpc_server")) { System.out.println("Error: Port number provided without requesting the RPC server. Exiting..."); System.exit(1); // if System.console() returns null, it means we were launched by // double-clicking the .jar, so launch own BeanShellConsole // if System.console() returns null, it means we were launched by // double-clicking the .jar, so launch own ConsoleFrame } else if (System.console() == null) { BeanShellConsole cframe = new BeanShellConsole("SASS BeanShell Prompt"); interpreter = cframe.getInterpreter(); cframe.setVisible(true); System.setOut(cframe.getInterpreter().getOut()); System.setErr(cframe.getInterpreter().getErr()); new Thread(cframe.getInterpreter()).start(); // otherwise, show help } else { HelpFormatter helpFormatter = new HelpFormatter(); helpFormatter.printHelp("java -jar <jar-name>", options, true); System.exit(0); } if (interpreter != null) { printWelcomeText(interpreter.getOut()); } }