文档章节

内嵌Tomcat7

DENGJM
 DENGJM
发布于 2015/07/23 19:50
字数 489
阅读 127
收藏 2

不想经常打包部署,而想让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与否。

© 著作权归作者所有

上一篇: 分页
下一篇: 上传文件
DENGJM
粉丝 8
博文 56
码字总数 31117
作品 0
杭州
后端工程师
私信 提问
Eclipse Maven Tomcat的利用配置

1.事先准备 m2eclipse插件中其实内嵌了Maven,但个人更偏向于用独立的Maven(可以自由选择版本啦,偶尔可以在命令行中跑Maven命令啦)。 下载Apache Maven:http://maven.apache.org/,关于环...

躺着的S
2013/08/03
10.3K
4
Apache Tomcat Maven Plugin for Tomcat 7.x命令大全

Apache Tomcat Maven Plugin :: Tomcat 7.x 2.2 The Tomcat Maven Plugin provides goals to manipulate WAR projects within the Tomcat 7.x servlet container. This plugin has 14 goals:......

宁静的夜海
2016/02/16
63
0
ubuntu eclipse tomcat6配置问题

1、正常配置的情况下,无法添加tomcat server。(v6也一样) 解决方法: http://www.coderanch.com/t/572959/Linux-UNIX/Eclipse-Tomcat-Ubuntu Below Steps followed for tomcat installat......

Orion
2012/06/12
397
0
Ubuntu配置tomcat系统服务

配置Ubuntu Server,上面装了一Tomcat7,希望在服务器电源打开后,希望没有登录的情况下也可以自动启动Tomcat。 根据网上的文章配置成功了,备忘如下 1.编写启动文件/etc/init.d/tomcat7 tom...

lgl梁
2014/12/28
19
0
Ubuntu11.10下安装Tomcat7

首先大家可以到 http://tomcat.apache.org/download-70.cgi 下载最新的Tomcat. 安装: 1.首先,将apache-tomcat-7.0.5.tar.gz移动到 /usr/tomcat7 目录下,并将其解压: 2.然后,cd到/usr/to...

Koon.LY
2012/04/08
816
0

没有更多内容

加载失败,请刷新页面

加载更多

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
今天
5
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
今天
8
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
12
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
16
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部