嵌入式tomcat经典示例

嵌入式tomcat经典示例
(由网友--开源狂人提供)

package org.demo.common;

import org.hzy.demo.core.TomcatServer;
public class WebStart {
public static void main(String[] args) throws Exception {
/*
* Server server = new Server();
* SelectChannelConnector connector = new SelectChannelConnector();
* connector.setAcceptQueueSize(8); connector.setPort(80);
* server.setConnectors(new Connector[] { connector }); Context context =
* new WebAppContext("./WebRoot", "/"); server.addHandler(context);
* server.start(); server.join();
*/
new TomcatServer().start();
}


package org.hzy.demo.core;

import org.apache.catalina.Context;
import org.apache.catalina.Engine;
import org.apache.catalina.Host;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.startup.Embedded;


public abstract class BaseWebServerEmbed{
private static final int DEFAULT_PORT = 80;
private Embedded tomcat;

protected BaseWebServerEmbed() {
initEmbedded();
initShutdownHook();
}

protected abstract String[] getContextsAbsolutePath();

protected abstract String[] getContextsMappingPath();

protected abstract String getTomcatPath();

protected int getPort() {
return DEFAULT_PORT;
}

public void start() {
try {
long startTime = System.currentTimeMillis();
tomcat.start();
System.err.println("Embedded Tomcat started in "
+ (System.currentTimeMillis() - startTime) + " ms.");
} catch (Exception e) {
e.printStackTrace();
}
}

private void initEmbedded() {
tomcat = new Embedded();
tomcat.setCatalinaBase(getTomcatPath());

Host host = tomcat.createHost("127.0.0.1", tomcat.getCatalinaHome()
+ "/webapps");
String[] contexts = getContextsMappingPath();
String[] contextsPath = getContextsAbsolutePath();
Context context = null;

for (int i = 0; i < contexts.length; ++i) {
context = tomcat.createContext(contexts[i], contextsPath[i]);
host.addChild(context);
}

Engine engine = tomcat.createEngine();
engine.setName("WEB_SERVER");
engine.addChild(host);
engine.setDefaultHost(host.getName());

tomcat.addEngine(engine);
// 只能本机访问
//Connector connector = tomcat.createConnector("127.0.0.1", getPort(),false);
// 可从其它机器访问
Connector connector = tomcat.createConnector((java.net.InetAddress) null, getPort(), false);
connector.setURIEncoding("UTF-8");
tomcat.addConnector(connector);
}

private void initShutdownHook() {
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
stopTomcat();
}
});
}

private void stopTomcat() {
try {
tomcat.stop();
} catch (Exception e) {
e.printStackTrace();
}
}

}



package org.hzy.demo.core;


public class TomcatServer extends BaseWebServerEmbed {

protected String[] getContextsAbsolutePath() {
return new String[] { getSingleContextAbsolutePath() };
}

private String getSingleContextAbsolutePath() {
String path = System.getProperty("user.dir") + "/WebRoot";
return path;
}

protected String[] getContextsMappingPath() {
return new String[] { "/" };
}

protected String getTomcatPath() {
try {
return System.getProperty("user.dir") + "/webserver";
} catch (Exception e) {
return "/D:\\tomcat-embed";
}
}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值