001 package railo.cli; 002 003 import java.io.File; 004 import java.rmi.RemoteException; 005 import java.util.HashMap; 006 import java.util.Map; 007 008 import javax.servlet.ServletException; 009 010 import railo.cli.servlet.ServletConfigImpl; 011 import railo.cli.servlet.ServletContextImpl; 012 import railo.loader.engine.CFMLEngine; 013 import railo.loader.engine.CFMLEngineFactory; 014 015 public class CLIInvokerImpl implements CLIInvoker { 016 017 private ServletConfigImpl servletConfig; 018 private CFMLEngine engine; 019 private long lastAccess; 020 021 public CLIInvokerImpl(File root, String servletName) throws ServletException{ 022 Map<String,Object> attributes=new HashMap<String, Object>(); 023 Map<String, String> initParameters=new HashMap<String, String>(); 024 initParameters.put("railo-server-directory", new File(root,"server").getAbsolutePath()); 025 026 ServletContextImpl servletContext = new ServletContextImpl(root, attributes, initParameters, 1, 0); 027 servletConfig = new ServletConfigImpl(servletContext, servletName); 028 engine = CFMLEngineFactory.getInstance(servletConfig); 029 030 031 } 032 033 @Override 034 public void invoke(Map<String, String> config) throws RemoteException { 035 try { 036 engine.cli(config,servletConfig); 037 lastAccess=System.currentTimeMillis(); 038 } catch (Throwable t) { 039 throw new RemoteException("fail to call CFML Engine", t); 040 } 041 } 042 043 public long lastAccess() { 044 return lastAccess; 045 } 046 047 }