Package railo.cli

Source Code of railo.cli.CLIFactory

package railo.cli;

import java.io.File;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.rmi.ConnectException;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.RemoteServer;
import java.rmi.server.UnicastRemoteObject;
import java.util.Map;

import javax.servlet.ServletException;


//import railo.cli.servlet.ServletConfigImpl;
//import railo.cli.servlet.ServletContextImpl;

public class CLIFactory extends Thread {
 
  private static final int PORT=8893;
  private File root;
  private String servletName;
  private Map<String, String> config;
  private long idleTime;
 
  public CLIFactory(File root, String servletName, Map<String, String> config) {
    this.root=root;
    this.servletName=servletName;
    this.config=config;
   
    this.idleTime=60000;
    String strIdle = config.get("idle");
    if(strIdle!=null) {
      try{
        idleTime=Long.parseLong(strIdle);
      }
      catch(Throwable t){}
    }
  }
 
  @Override
  public void run() {
   
    String name=root.getAbsolutePath();
    InetAddress current=null;
    try {
      current = InetAddress.getLocalHost();
    } catch (UnknownHostException e1) {
      e1.printStackTrace();
      return;
    }
    try {
      try {
        // first try to call existing service
        invoke(current,name);
       
      }
      catch (ConnectException e) {
        startInvoker(name);
        invoke(current,name);
      }
    }
    catch (Throwable t) {
      t.printStackTrace();
    }
  }
 
  private void invoke(InetAddress current, String name) throws RemoteException, NotBoundException {
    Registry registry = LocateRegistry.getRegistry(current.getHostAddress(),PORT);
    CLIInvoker invoker = (CLIInvoker) registry.lookup( name );
    invoker.invoke(config);
  }

  private void startInvoker(String name) throws ServletException, RemoteException {
    Registry myReg = getRegistry(PORT);
    CLIInvokerImpl invoker=new CLIInvokerImpl(root, servletName);
    CLIInvoker stub = (CLIInvoker) UnicastRemoteObject.exportObject( invoker, 0 );
    myReg.rebind( name, stub );
    if(idleTime>0){
      Closer closer = new Closer(myReg,invoker,name,idleTime);
      closer.setDaemon(false);
      closer.start();
    }
  }

  public static Registry getRegistry(int port) {
    Registry registry=null;
    try {
       
       registry= LocateRegistry.createRegistry( port );
    }
    catch (RemoteException e) {}
   
    try {
       
       if(registry==null)registry= LocateRegistry.getRegistry(port);
    }
    catch (RemoteException e) {
    }
   
   
    RemoteServer.setLog(System.out );
   
    return registry;
  }
}
TOP

Related Classes of railo.cli.CLIFactory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.