Package org.rzo.yajsw.app

Source Code of org.rzo.yajsw.app.WrapperManagerProxy

/* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
* <p/>
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details. 
*/
package org.rzo.yajsw.app;

import java.net.URL;
import java.util.logging.ConsoleHandler;
import java.util.logging.Logger;

import org.rzo.yajsw.boot.WrapperClassLoader;
import org.rzo.yajsw.boot.WrapperLoader;
import org.rzo.yajsw.log.MyLogger;

// TODO: Auto-generated Javadoc
/**
* The Class WrapperMangerProxy.
*/
public class WrapperManagerProxy
{

  /** The wrapper class loader. */
  static ClassLoader  wrapperClassLoader;

  /**
   * Gets the wrapper manager.
   *
   * @param args
   *            the args
   *
   * @return the wrapper manager
   */
  public static WrapperManager getWrapperManager(final String[] args)
  {
    wrapperClassLoader = getWrapperClassLoader();
    Class wrapperManagerClass;
    final WrapperManager wm;
    WrapperManager result = null;
    try
    {
      wrapperManagerClass = wrapperClassLoader.loadClass("org.rzo.yajsw.app.WrapperManagerImpl");
      wm = (WrapperManager) wrapperManagerClass.newInstance();
      wm.init(args, wrapperClassLoader);
      // start the wrapper manager in a separate thread
      // so application may start even if communication to controller
      // takes time

      new Thread(new Runnable()
      {

        public void run()
        {
          try
          {
            wm.start();
          }
          catch (Exception ex)
          {
            ex.printStackTrace();
          }
        }
      }, "yajsw.app.manager.start").start();
      // give the manager.start a chance.
      Thread.yield();
      result = wm;
      String preScript = System.getProperty("wrapper.app.pre_main.script");
      if (preScript != null & !"".equals(preScript))
      {
        Logger logger = new MyLogger();
        logger.addHandler(new ConsoleHandler());
        wm.executeScript(preScript, wrapperClassLoader);
      }

    }
    catch (Exception e1)
    {
      e1.printStackTrace();
    }

    return result;
  }

  /**
   * Gets the wrapper class loader.
   *
   * @return the wrapper class loader
   */
  private static ClassLoader getWrapperClassLoader()
  {
    URL[] urlsArr = WrapperLoader.getWrapperClasspath("App", true);
    if (urlsArr == null)
      return Thread.currentThread().getContextClassLoader();
    return new WrapperClassLoader(urlsArr, ClassLoader.getSystemClassLoader());
  }

}
TOP

Related Classes of org.rzo.yajsw.app.WrapperManagerProxy

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.