您的位置:首页 > 运维架构 > Tomcat

嵌入式Tomcat

2014-04-28 22:38 225 查看

下面为嵌入使用Tomcat的示例代码:

import java.net.URL;

import org.apache.catalina.Context;
import org.apache.catalina.core.AprLifecycleListener;
import org.apache.catalina.core.StandardServer;
import org.apache.catalina.deploy.FilterDef;
import org.apache.catalina.deploy.FilterMap;
import org.apache.catalina.startup.Tomcat;
import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;

import com.beust.jcommander.JCommander;
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.google.inject.servlet.GuiceFilter;

public class WebServer {

private final FrontendSettings webServerSettings;
private final GuiceListener guiceListener;
private final Tomcat tomcat;

@Inject
public WebServer(
FrontendSettings webServerSettings,
GuiceListener guiceListener) {
this.webServerSettings = webServerSettings;
this.guiceListener = guiceListener;
this.tomcat = new Tomcat();
}

private FilterDef createFilterDef(String filterName, String filterClass) {
FilterDef filterDef = new FilterDef();
filterDef.setFilterName(filterName);
filterDef.setFilterClass(filterClass);
return filterDef;
}

private FilterMap createFilterMap(String filterName, String urlPattern) {
FilterMap filterMap = new FilterMap();
filterMap.setFilterName(filterName);
filterMap.addURLPattern(urlPattern);
return filterMap;
}

public void run() throws Exception {
String appBase = ".";
tomcat.setPort(webServerSettings.getPort());

tomcat.setBaseDir("webapp");
tomcat.getHost().setAppBase(appBase);

String contextPath = "/";

// Add AprLifecycleListener to give native speed boost
// sudo apt-get install libtcnative-1
StandardServer server = (StandardServer)tomcat.getServer();
AprLifecycleListener listener = new AprLifecycleListener();
server.addLifecycleListener(listener);

Context context = tomcat.addWebapp(contextPath, appBase);
context.addFilterDef(createFilterDef("guice", GuiceFilter.class.getName()));
FilterDef struts2FilterDef = createFilterDef("struts2",
StrutsPrepareAndExecuteFilter.class.getName());
struts2FilterDef.addInitParameter("struts.devMode",
Boolean.toString(webServerSettings.isDevModeEnabled()));
context.addFilterDef(struts2FilterDef);
context.addFilterMap(createFilterMap("guice", "/*"));
context.addFilterMap(createFilterMap("struts2", "/*"));

tomcat.start();
tomcat.getServer().await();
}

public static void main(String[] args) throws Exception {
FrontendSettings webServerSettings = new FrontendSettings();
new JCommander(webServerSettings, args);

Guice.createInjector(new FrontendModule(webServerSettings));

Injector injector = Guice.createInjector();

WebServer server = injector.getInstance(WebServer.class);
server.run();
}

}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: