java 内嵌tomcat_Embed Tomcat Java(内嵌tomcat启动简述)_塔比星上琉球生的博客-程序员秘密

技术标签: java 内嵌tomcat  

简单记录一下内部tomcat启动

maven pom.xml

org.apache.tomcat.embed

tomcat-embed-core

8.5.28

org.apache.tomcat

tomcat-jasper

8.5.28

org.springframework

spring-web

5.0.4.RELEASE

compile

org.springframework

spring-webmvc

5.0.4.RELEASE

compile

org.apache.maven.plugins

maven-compiler-plugin

3.5.1

1.8

1.8

UTF-8

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", System.getProperty("user.dir") + File.separator + TomcatStart.WEBAPP_PATH);

/*

* 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", "demoServlet", new DemoServlet());

// servlet mapping

myCtx.addServletMappingDecoded("/demo.do", "demoServlet");

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!!!");

}

}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33498603/article/details/114186466

智能推荐

GTX高速收发器Transceiver概述与收发共同特征(UG476)_king阿金的博客-程序员秘密_ug476

目录本文主要对xilinx的GTX核的使用手册进行阅读,UG476,可以对照着原文再看我的博文。Ch1.Transceiver and Tool OverviewCh2.Shared Features2.1Reference Clock Input Structure2.2Reference Clock Selection and Distribution2.3Reset ...

BZOJ1828: [Usaco2010 Mar]balloc 农场分配 贪心+线段树_Oakley_的博客-程序员秘密_usaco 农场分配

1828: [Usaco2010 Mar]balloc 农场分配Time Limit: 3 Sec  Memory Limit: 32 MBSubmit: 552  Solved: 298[Submit][Status][Discuss]DescriptionInput第1行:两个用空格隔开的整数:N和M * 第2行到N+1行:第i+1行表示一个整数

Asp.Net中WebForm与MVC,Web API模式对比_sinolover的博客-程序员秘密

webform,web mvc和web api都是asp.net官方的三套框架,想对比下三者的关系,查了下资料,web api跟web mvc基本同属一脉,只是mvc多了一个视图渲染,网上有些博客介绍了webform和mvc底层源码实现的不同,但不够直观简洁,博客园有一篇博客,很简洁的说明的两者的关系,出于学习和记录的原因,进行了复制转载http://www.cnblogs.com/chay12...

2020.6.10笔记——数据类型和变量_kaiwen310的博客-程序员秘密

一、原始数据类型1、数据型JavaScript中的数值包含整数和浮点数,所有数值都以双精度浮点型来表示。双精度浮点数可以表示-2的53次方到2的53次方的整数,也可以表示为正负1.7976的10的308次方的最大值和正负2.2250乘以10的-308次方的浮点数数值型十进制数121.2-23.222e33-1.3e33.E-212e+20十六进制0x00XABCDEF0x1a2b3c4d八进制数0001230241234特殊值:1)Infinity无穷大1.79

PropertyChangeSupport类_延卿的博客-程序员秘密_propertysupport 报错c#

最近看代码一直碰到这个类,先做一个总结。先看PropertyChangeSupport类的官方文档解释:  This is a utility class that can be used by beans that support bound properties.  You can use an instance of this class as a member field of

Win7 FTP搭建_liang_236的博客-程序员秘密

Win7 FTP搭建流程1.创建用户(登录FTP)我的电脑右键->管理->本地用户和组->用户->“右键”新建用户->输入用户名和密码再点创建。2.F盘(可以自行定义文件路径)新建文件夹share,然后在share文件夹再次创建“upload”和“download”两个文件夹。3.安装IIS组件在开始菜单里—>控制面板-〉添加或删除程序->..._1671465600

随便推点

DP入门_姓卑名鄙的博客-程序员秘密

动态规划算法他针对满足特定条件的一类问题,对各状态维度进行分阶段、有顺序、无重复、决策性的遍历求解。dp入门,主要讲解dp里的几个经典的案例,通过案例来感受动态规划的主要思想例题一:数字三角形Description73 88 1 02 7 4 44 5 2 6 5(图一)图一表示一个5行的数字三角形。假设给定一个n行数字三角形,计算出从三角形顶至底的一条路径,使该路径经过的数字总和最大。每一步只能由当前位置向左下或右下。Input你的程序要能接受标准输入。第一行包含一个整数T,表示

图像处理旋转坐标旋转_weixin_44804536的博客-程序员秘密_图像 旋转 算法 坐标 变换

import numpy as npimport osimport cv2from math import *def rotate_images(path, angle): image_dir = path pathDir = os.listdir(image_dir) for s in pathDir: newDir = os.path.joi...

Python+OSMnx+调用实例+代码(Openstreetmap边界路网下载+路径规划返回)_VincentGIS的博客-程序员秘密_ox.get_nearest_node

1安装安装是OSMnx应用最难的一步。相比其他python包,OSMnx较难安装,以下为笔者安装经验:①建议应用anaconda作为python开发环境。conda install -c conda-forge osmnx首先,可在Anaconda Prompt中键入以上代码尝试下载。若失败,参考以下内容。②建议创建一个虚拟环境安装OSMnx。详细步骤如下:conda create -n osmnx_env python=3.7 #创建版本为3.7的虚拟环境activate osmnx_env

数据结构【栈、队列、串】复习题_weixin_30628077的博客-程序员秘密

第三章 栈和队列一 选择题1. 对于栈操作数据的原则是( B )。A. 先进先出 B. 后进先出 C. 后进后出 D. 不分顺序2. 在作进栈运算时,应先判别栈是否( ① B ),在作退栈运算时应先判别栈是否( ② A)。当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为( ③B )。为了增加内存空间的利用率和减少溢出的可能性...

C8051F 使用 U-EC6 烧录器,烧录失败的原因_happygrilclh的博客-程序员秘密_c8051f410程序烧写

使用 新华龙的 U-EC6程序下载器,给 C8051F MCU下载程序的时候,一直下载不成功。查找原因:1. 查看接线是否正确,确保线的联通着。2. 确保仿真器好着。3. 烧录软件,设置要正确。4. 芯片供电正常。过程:1. 确保接线方式正确。2. 修复了仿真器的固件。3.4. 控制板是3.3V供电,但是我却5V供电,换成3.3V供电后,烧录成功。...

【原创】oracle数据库应用中实现汉字“同音”查询_griefforyou的博客-程序员秘密

要实现“同音”查询当然要先得到汉字的汉语拼音了,在网上随处可以找到ASP的汉字转拼音的代码,如以下代码:    Set d = CreateObject("Scripting.Dictionary")     d.add "a",-20319     d.add "ai",-20317     d.add "an",-20304     d.add "ang",-20295     d.add "

推荐文章

热门文章

相关标签