64 lines
2.0 KiB
Java
64 lines
2.0 KiB
Java
package com.baeldung.tomcat;
|
|
|
|
import org.apache.catalina.Context;
|
|
import org.apache.catalina.LifecycleException;
|
|
import org.apache.catalina.startup.Tomcat;
|
|
import org.apache.tomcat.util.descriptor.web.FilterDef;
|
|
import org.apache.tomcat.util.descriptor.web.FilterMap;
|
|
|
|
import java.io.File;
|
|
|
|
/**
|
|
* Created by adi on 1/10/18.
|
|
*/
|
|
public class ProgrammaticTomcat {
|
|
|
|
private Tomcat tomcat = null;
|
|
|
|
//uncomment for live test
|
|
// public static void main(String[] args) throws LifecycleException, ServletException, URISyntaxException, IOException {
|
|
// startTomcat();
|
|
// }
|
|
|
|
public void startTomcat() throws LifecycleException {
|
|
tomcat = new Tomcat();
|
|
tomcat.setPort(8080);
|
|
tomcat.setHostname("localhost");
|
|
String appBase = ".";
|
|
tomcat
|
|
.getHost()
|
|
.setAppBase(appBase);
|
|
|
|
File docBase = new File(System.getProperty("java.io.tmpdir"));
|
|
Context context = tomcat.addContext("", docBase.getAbsolutePath());
|
|
|
|
//add a servlet
|
|
Class servletClass = MyServlet.class;
|
|
Tomcat.addServlet(context, servletClass.getSimpleName(), servletClass.getName());
|
|
context.addServletMappingDecoded("/my-servlet/*", servletClass.getSimpleName());
|
|
|
|
//add a filter and filterMapping
|
|
Class filterClass = MyFilter.class;
|
|
FilterDef myFilterDef = new FilterDef();
|
|
myFilterDef.setFilterClass(filterClass.getName());
|
|
myFilterDef.setFilterName(filterClass.getSimpleName());
|
|
context.addFilterDef(myFilterDef);
|
|
|
|
FilterMap myFilterMap = new FilterMap();
|
|
myFilterMap.setFilterName(filterClass.getSimpleName());
|
|
myFilterMap.addURLPattern("/my-servlet/*");
|
|
context.addFilterMap(myFilterMap);
|
|
|
|
tomcat.start();
|
|
//uncomment for live test
|
|
// tomcat
|
|
// .getServer()
|
|
// .await();
|
|
}
|
|
|
|
public void stopTomcat() throws LifecycleException {
|
|
tomcat.stop();
|
|
tomcat.destroy();
|
|
}
|
|
}
|