简单记录⼀下内部tomcat启动
maven pom.xml
tomcat启动类
/** *
* @author Programming is an art from. * @Description: TODO */
public class TomcatStart {
public static int TOMCAT_PORT = 8080;
public static String TOMCAT_HOSTNAME = \"127.0.0.1\"; public static String WEBAPP_PATH = \"src/main\";
public static String WEBINF_CLASSES = \"/WEB-INF/classes\"; public static String CLASS_PATH = \"target/classes\"; public static String INTERNAL_PATH = \"/\";
public static void main(String[] args) throws ServletException, LifecycleException { TomcatStart.run(); }
public static void run() throws ServletException, LifecycleException { Tomcat tomcat = new Tomcat();
tomcat.setPort(TomcatStart.TOMCAT_PORT);
tomcat.setHostname(TomcatStart.TOMCAT_HOSTNAME); tomcat.setBaseDir(\".\"); // tomcat 信息保存在项⽬下 /*
* https://www.cnblogs.com/ChenD/p/10061008.html */
StandardContext myCtx = (StandardContext) tomcat
.addWebapp(\"/access\
/*
* true时:相关classes | jar 修改时,会重新加载资源,不过资源消耗很⼤
* autoDeploy 与这个很相似,tomcat⾃带的热部署不是特别可靠,效率也不⾼。⽣产环境不建议开启。 * 相关⽂档:
* http://www.blogjava.net/wangxinsh55/archive/2011/05/31/351449.html */
myCtx.setReloadable(false); // 上下⽂监听器
myCtx.addLifecycleListener(new AprLifecycleListener());
/*String webAppMount = System.getProperty(\"user.dir\") + File.separator + TomcatStart.CLASS_PATH; WebResourceRoot root = new StandardRoot(myCtx); root.addPreResources(
new DirResourceSet(root, TomcatStart.WEBINF_CLASSES, webAppMount, TomcatStart.INTERNAL_PATH));*/
// 注册servlet
tomcat.addServlet(\"/access\ // servlet mapping
myCtx.addServletMappingDecoded(\"/demo.do\ tomcat.start();
tomcat.getServer().await(); } }
注意! contextPath不要设置为 /否则会报错, 错误信息为以下。
警告: A context path must either be an empty string or start with a '/' and do not end with a '/'. The path [/] does not meet these criteria and has been changed to []Exception in thread \"main\" java.lang.NullPointerException
at org.apache.catalina.startup.Tomcat.addServlet(Tomcat.java:341) at org.apache.catalina.startup.Tomcat.addServlet(Tomcat.java:325) at cn.learn.config.TomcatStart.run(TomcatStart.java:63) at cn.learn.config.TomcatStart.main(TomcatStart.java:33)
servlet class
/** *
* @author Programming is an art from. * @Description: TODO */
public class DemoServlet extends HttpServlet{ /** * */
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); }
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.getWriter().print(\"access success\"); }
}
因篇幅问题不能全部显示,请点此查看更多更全内容