免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1226 | 回复: 0
打印 上一主题 下一主题

程序嵌入Tomcat服务器 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-12 11:52 |只看该作者 |倒序浏览

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.catalina.Connector;
import org.apache.catalina.Context;
import org.apache.catalina.Engine;
import org.apache.catalina.Host;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.Logger;
import org.apache.catalina.logger.FileLogger;
import org.apache.catalina.startup.Embedded;
import org.yak.util.YAKGlobals;
import java.io.File;
import java.net.InetAddress;
/**
* 启动一个 Tomcat 服务器
*
* @author J.Y.N
*/
public class AdminConsolePlugin implements Plugin {
private static Embedded server = null;
private Engine engine = null;
private Host host = null;
private int port;// 服务器工作端口
private Context context;
private int securePort;// 服务器安全工作端口
private File pluginDir;// 插件目录
/**
  * Create a jetty module.
  */
public AdminConsolePlugin() {
}
public void restartListeners() {
  try {
   String restarting = "服务器管理程序重启";
   System.out.println(restarting);
   server.stop();
   server.removeContext(context);
   server.removeHost(host);
   server.removeEngine(engine);
   engine = server.createEngine();
   engine.setName("yak");
   host = server.createHost("localhost", pluginDir.getAbsoluteFile()
     .toString());
   engine.addChild(host);
   engine.setDefaultHost(host.getName());
   // Add web-app
   context = server.createContext("", pluginDir.getAbsoluteFile()
     + File.separator + "web");
   host.addChild(context);
   server.addEngine(engine);
   loadListeners();
   server.start();
   printListenerMessages();
  } catch (Exception e) {
  }
}
private void loadListeners() throws Exception {
  String interfaceName = YAKGlobals.getXMLProperty("server.domain",
    "127.0.0.1");
  port = Integer.parseInt(YAKGlobals.getXMLProperty("server.port", "80"));
  Connector connector = server.createConnector(InetAddress
    .getByName(interfaceName), port, false);
  server.addConnector(connector);
}
public void initializePlugin(PluginManager manager, File pluginDir) {
  this.pluginDir = pluginDir;
  try {
   if (System.getProperty("org.apache.commons.logging.LogFactory") == null) {
    System.setProperty("org.apache.commons.logging.LogFactory",
      "org.mortbay.log.Factory");
   }
   File logDir = new File(YAKGlobals.getHomeDirectory(), "logs");
   if (!logDir.exists()) {
    logDir.mkdirs();
   }
   FileLogger logFile = new FileLogger();
   logFile.setDirectory(logDir.getAbsolutePath());
   logFile.setPrefix("tomca-console");
   // Create an embedded server
   server = new Embedded();
   server.setLogger(logFile);
   // print all log statments to standard error
   server.setDebug(Logger.WARNING);
   server.setCatalinaHome(pluginDir.getAbsoluteFile().getParent());
   // Create an engine
   engine = server.createEngine();
   engine.setName("yak");
   // Create a default virtual host
   host = server.createHost("localhost", pluginDir.getAbsoluteFile()
     .toString());
   engine.addChild(host);
   engine.setDefaultHost(host.getName());
   // Create the ROOT context
   context = server.createContext("", pluginDir.getAbsoluteFile()
     + File.separator + "web");
   host.addChild(context);
   // Install the assembled container hierarchy
   server.addEngine(engine);
   loadListeners();
   // Start the embedded server
   server.start();
   printListenerMessages();
  } catch (Exception e) {
   System.err.println("Error starting admin console: "
     + e.getMessage());
  }
}
public void destroyPlugin() {
  host = null;
  try {
   if (server != null) {
    server.stop();
    server = null;
   }
  } catch (LifecycleException e) {
  }
}
/**
  * Returns the Jetty instance started by this plugin.
  *
  * @return the Jetty server instance.
  */
public static Embedded getServer() {
  return server;
}
/**
  * Writes out startup messages for the listeners.
  */
private void printListenerMessages() {
  String warning = ("admin.console.warning");
  String listening = ("admin.console.listening");
}
}

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/1677/showart_67253.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP