Package com.l2jfrozen.gameserver.powerpak.Servers

Source Code of com.l2jfrozen.gameserver.powerpak.Servers.WebServer

package com.l2jfrozen.gameserver.powerpak.Servers;

import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.util.logging.Level;
import java.util.logging.Logger;

import com.l2jfrozen.Config;
import com.l2jfrozen.L2Properties;
import com.l2jfrozen.gameserver.powerpak.PowerPakConfig;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;

public class WebServer extends Thread
{
  private static WebServer _instance;

  public static WebServer getInstance()
  {
    if(_instance == null)
      _instance = new WebServer();
    return _instance;
  }

  private HttpServer _server;
  protected static final Logger _log = Logger.getLogger(WebServer.class.getName());

  private WebServer()
  {
    if(PowerPakConfig.WEBSERVER_ENABLED)
      try
      {
        int handlers = 0;
        _server = HttpServer.create(new InetSocketAddress(InetAddress.getByName(PowerPakConfig.WEBSERVER_HOST), PowerPakConfig.WEBSERVER_PORT), 10);
        L2Properties p = new L2Properties("./config/powerpak/websevices.properties");
        for(Object s : p.keySet())
        {
          String contextHandlerName = p.getProperty(s.toString());
          try
          {
            Class<?> contextHandler = Class.forName(contextHandlerName);
            if(contextHandler != null && HttpHandler.class.isAssignableFrom(contextHandler))
            {
              _server.createContext(s.toString(), (HttpHandler) contextHandler.newInstance());
              handlers++;
            }
          }
          catch(Exception e)
          {
            if(Config.ENABLE_ALL_EXCEPTIONS)
              e.printStackTrace();

            _log.log(Level.WARNING, "WebServer: Error while creating handler " + contextHandlerName + " for '" + s.toString() + "': " + e);
            continue;
          }

        }
        if(handlers > 0)
        {
          _server.start();
          Runtime.getRuntime().addShutdownHook(this);
          _log.info("WebServer: Listen at " + PowerPakConfig.WEBSERVER_HOST + ":" + PowerPakConfig.WEBSERVER_PORT);
          _log.info("WebServer: " + handlers + " context handler(s) registred");
        }
      }
      catch(Exception e)
      {
        if(Config.ENABLE_ALL_EXCEPTIONS)
          e.printStackTrace();

        _log.log(Level.WARNING, "WebServer: Error " + e + " while staring");
        _server = null;
      }
  }

  @Override
  public void run()
  {
    if(_server != null)
    {
      System.out.println("WebServer: stopped");
      _server.stop(0);
      _server = null;
    }
  }
}
TOP

Related Classes of com.l2jfrozen.gameserver.powerpak.Servers.WebServer

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.