package com.test;
import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.startup.Tomcat;
import org.apache.tomcat.util.scan.StandardJarScanner;
import javax.servlet.ServletException;
/**
* 嵌入式tomcat web应用启动类,
*/
public class TomcatBootstrapHelper {
private static final char ENTER_CHAR = '\n';
/**
* 默认端口
*/
private static final int DEFAULT_PORT = 8080;
private static final String DEFULT_ENV = "dev";
private int port = DEFAULT_PORT;
/**
* 是否启用servlet 3.0 支持,如果启用的话,就需要扫描jar包中是否有Servlet等annotation,这个会影响启动时间,默认不开启
*/
private boolean isServlet3Enable = false;
/**
* 构建一个<code>TomcatBootstrapHelper.java</code>
*
* @param port 端口
* @param isServlet3Enable 是否启用servlet 3.0
* 支持,如果启用的话,就需要扫描jar包中是否有Servlet等annotation,这个会影响启动时间,默认不开启
* @param env 设置环境变量 spring.profiles.active
*/
public TomcatBootstrapHelper(int port, boolean isServlet3Enable, String env) {
System.setProperty("spring.profiles.active", env);
this.port = port;
this.isServlet3Enable = isServlet3Enable;
}
/**
* 构建一个<code>TomcatBootstrapHelper.java</code><br>
* 环境变量spring.profiles.active=dev
*
* @param port 端口
* @param isServlet3Enable 是否启用servlet 3.0
* 支持,如果启用的话,就需要扫描jar包中是否有Servlet等annotation,这个会影响启动时间,默认不开启
*/
public TomcatBootstrapHelper(int port, boolean isServlet3Enable) {
this(port, isServlet3Enable, DEFULT_ENV);
}
/**
* 构建一个<code>TomcatBootstrapHelper.java</code><br>
* 不启用servlet 3.0 支持、环境变量spring.profiles.active=dev
*
* @param port 端口
*/
public TomcatBootstrapHelper(int port) {
this(port, false);
}
/**
* 构建一个<code>TomcatBootstrapHelper.java</code><br>
* 端口:8080、不启用servlet 3.0 支持、环境变量spring.profiles.active=dev
*/
public TomcatBootstrapHelper() {
this(DEFAULT_PORT);
}
public void start() {
try {
long begin = System.currentTimeMillis();
Tomcat tomcat = new Tomcat();
configTomcat(tomcat);
tomcat.start();
long end = System.currentTimeMillis();
log(end - begin);
//在控制台回车就可以重启,提高效率
while (true) {
char c = (char) System.in.read();
if (c == ENTER_CHAR) {
begin = System.currentTimeMillis();
System.out.println("重启tomcat...");
tomcat.stop();
tomcat.start();
end = System.currentTimeMillis();
log(end - begin);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void configTomcat(final Tomcat tomcat) throws ServletException {
tomcat.setBaseDir("target");
tomcat.setPort(port);
Connector connector = new Connector("HTTP/1.1");
connector.setPort(port);
connector.setURIEncoding("utf-8");
tomcat.setConnector(connector);
tomcat.getService().addConnector(connector);
String webappPath = getWebappsPath();
System.out.println("webapp目录:" + webappPath);
Context ctx = tomcat.addWebapp("/", webappPath);
StandardJarScanner scanner = (StandardJarScanner) ctx.getJarScanner();
if (!isServlet3Enable) {
scanner.setScanAllDirectories(false);
scanner.setScanClassPath(false);
}
tomcat.setSilent(true);
System.setProperty("org.apache.catalina.SESSION_COOKIE_NAME", "JSESSIONID" + port);
}
private void log(long time) {
System.out.println("********************************************************");
System.out.println("启动成功: http://127.0.0.1:" + port + " in:" + time + "ms");
System.out.println("您可以直接在console里敲回车,重启tomcat");
System.out.println("********************************************************");
}
public String getWebappsPath() {
String file = getClass().getClassLoader().getResource(".").getFile();
return file.substring(0, file.indexOf("target")) + "src/main/webapp";
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
内嵌式tomcat启动web工程
共22个文件
xml:14个
java:3个
class:3个
4星 · 超过85%的资源 需积分: 50 63 下载量 39 浏览量
2017-11-27
15:07:58
上传
评论
收藏 23KB ZIP 举报
温馨提示
内嵌式tomcat启动web工程,maven代码 内嵌式tomcat启动web工程,maven代码
资源推荐
资源详情
资源评论
收起资源包目录
web1.zip (22个子文件)
web1
src
test
java
com
test
TomcatBootstrapHelper.java 5KB
Bootstrap.java 168B
main
webapp
WEB-INF
web.xml 222B
index.jsp 69B
resources
target
generated-test-sources
test-annotations
work
Tomcat
localhost
_
org
apache
jsp
index_jsp.java 3KB
index_jsp.class 4KB
test-classes
com
test
TomcatBootstrapHelper.class 4KB
Bootstrap.class 508B
.idea
artifacts
web1_war_exploded.xml 629B
web1_war.xml 279B
libraries
Maven__org_eclipse_jdt_core_compiler_ecj_4_2_1.xml 517B
Maven__org_apache_tomcat_embed_tomcat_embed_jasper_7_0_39.xml 612B
Maven__junit_junit_3_8_1.xml 435B
Maven__org_apache_tomcat_embed_tomcat_embed_logging_juli_7_0_39.xml 654B
Maven__org_apache_tomcat_embed_tomcat_embed_core_7_0_39.xml 598B
misc.xml 566B
compiler.xml 620B
workspace.xml 36KB
encodings.xml 159B
inspectionProfiles
modules.xml 248B
web1.iml 2KB
pom.xml 1KB
共 22 条
- 1
资源评论
- jsdBart2020-04-19好像不能用啊
- luo4769796572018-01-09看了一下,不知道能不能用!
- CC勇哥2019-12-04非常简单啊
qq_26234109
- 粉丝: 1
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功