侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

内嵌Tomcat7

2022-07-10 星期日 / 0 评论 / 0 点赞 / 83 阅读 / 5985 字

不想经常打包部署,而想让WEB应用能直接Run As,Tomcat提供tomcat-embed-core-7.0.42.jar,故可以嵌入Tomcat。在Maven配置文件中添加如下的配置文件: <d

不想经常打包部署,而想让WEB应用能直接Run As,Tomcat提供tomcat-embed-core-7.0.42.jar,故可以嵌入Tomcat。在Maven配置文件中添加如下的配置文件:

<dependency>  <groupId>org.apache.tomcat</groupId>  <artifactId>tomcat-catalina</artifactId>  <version>7.0.42</version></dependency><dependency>  <groupId>org.apache.tomcat</groupId>  <artifactId>tomcat-dbcp</artifactId>  <version>7.0.42</version></dependency><dependency>  <groupId>org.apache.tomcat.embed</groupId>  <artifactId>tomcat-embed-core</artifactId>  <version>7.0.42</version></dependency><dependency>  <groupId>org.apache.tomcat.embed</groupId>  <artifactId>tomcat-embed-logging-juli</artifactId>  <version>7.0.42</version></dependency><dependency>  <groupId>org.apache.tomcat</groupId>  <artifactId>tomcat-juli</artifactId>  <version>7.0.42</version></dependency><dependency>  <groupId>org.apache.tomcat.embed</groupId>  <artifactId>tomcat-embed-jasper</artifactId>  <version>7.0.42</version></dependency><dependency>  <groupId>org.apache.tomcat</groupId>  <artifactId>tomcat-jasper</artifactId>  <version>7.0.42</version></dependency><dependency>  <groupId>org.apache.tomcat</groupId>  <artifactId>tomcat-jasper-el</artifactId>  <version>7.0.42</version></dependency><dependency>  <groupId>org.apache.tomcat</groupId>  <artifactId>tomcat-jsp-api</artifactId>  <version>7.0.42</version></dependency>

引入的依赖的版本不一致,也能导致程序出现异常。故全部采用7.0.42,当然也可以采用其它版本,只是尽量保持一致。

写一个EmbeddedTomcat类,先看代码:

package com.raze.common.tomcat;import java.io.File;import javax.servlet.ServletException;import org.apache.catalina.LifecycleException;import org.apache.catalina.core.AprLifecycleListener;import org.apache.catalina.core.StandardServer;import org.apache.catalina.startup.Tomcat;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * @author DJM */public class EmbeddedTomcat {		private Logger logger = LoggerFactory.getLogger(EmbeddedTomcat.class); 		private Tomcat tomcat;		private int port;		private static final String tempDir= "src"+File.separatorChar+"main"+File.separatorChar+"webapp";		public EmbeddedTomcat(int port){		tomcat = new Tomcat();		this.port = port;	}		public void startUpTomcat(){		tomcat.setPort(port);		try {			tomcat.addWebapp("/DJM", System.getProperty("user.dir")+File.separatorChar+tempDir);		} catch (ServletException e) {			e.printStackTrace();		}		try {			StandardServer server = (StandardServer)tomcat.getServer();              AprLifecycleListener listener = new AprLifecycleListener();              server.addLifecycleListener(listener); 			tomcat.start();		} catch (LifecycleException e) {			logger.info("An exception occurs when start tomcat!");			e.printStackTrace();		}		tomcat.getServer().await();		logger.info("Tomcat has been started successfully!");	}	public void shutDownTomcat(){		try {			tomcat.stop();		} catch (LifecycleException e) {			logger.info("An exception occurs when close tomcat!");			e.printStackTrace();		}		logger.info("Tomcat has been closed!");	}}

有些资料指引我们使用org.apache.catalina.startup.Embedded,但是看下图就明白org.apache.catalina.startup.Embedded已经过时了,

所以采用org.apache.catalina.startup.Tomcat类。项目的目录结构如图:

我们现在调用我写的com.raze.common.tomcat.EmbeddedTomcat类,代码如下:

package com.raze;import com.raze.common.tomcat.EmbeddedTomcat;/** * @author DJM */public class Boot {	public static void main(String[] args) {				EmbeddedTomcat tomcat = new EmbeddedTomcat(8090);				tomcat.startUpTomcat();			}}

直接Run As,选中JavaApplication,控制台打印如下信息:

选中项目,按"F5"或者右键"Refresh"项目,多出了一个与tomcat相关的目录,如下图:

打开浏览器,输入http://localhost:8089/DJM/index.jsp,出现如下页面:

成功嵌入Tomcat7。此处JSP页面中的Hello World也只为验证成功嵌入Tomcat7与否。

广告 广告

评论区