探秘Tomcat(一)
前言:有的时候自己不知道自己是井底之蛙,这并没有什么可怕的,因为你只要蜷缩在方寸之间的井里,无数次的生活轨迹无非最终归结还是一个圆形;但是可怕的是有一天你不得不从井里跳出来生活,需要重新审视井以外的生活,你就会发现世界如此美好,我知道的如此的少!
好比,但你看到如下代码
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
namespace Singleton{ public class Singleton { private static Singleton singleton; private Singleton() { } public static Singleton GetInstance() { if (singleton == null) { singleton = new Singleton(); } return singleton; } }} |
没错,这就是几行代码,在你还没有接触到什么是单例模式的时候,一个有好奇心的人会按照machine的执行过程走一遍这段代码,一个善于总结的人在理解后还会细细体味这段代码的奥妙之处,如果是一只刚出道的青蛙,或许一面之缘后就是代码眼中过,啥也没有留;相反,你如果深谙单例模式之道,你一眼就看出了这是单例模式,而且还是懒汉式。
说了这么多还是想说一句话:知识面很重要,思考很重要!
正文:言归正传,今天完成了如何Tomcat如何导入到Myeclipse中,以下是自己的操作步骤。
一:版本选型
Tomcat还是选择经常用的Tomcat6,源码下载链接:
http://tomcat.apache.org/download-60.cgi
Ant 选择的版本是1.7(用作编译Tomcat源码使用),下载链接:
http://archive.apache.org/dist/ant/binaries/
Myeclipse版本:8.6
二:获取Tomcat源码
1.将下载好的apache-tomcat-6.0.43-src.zip解压到某文件夹中,如D:\tomcat\apache-tomcat-6.0.43-src
2.使用Ant编译Tomcat源码
2.1配置Ant环境:
计算机-> 右键“属性”->点击“高级系统设置”->选择“高级”选项卡->点击“环境变量”,弹出对话框:

添加Ant_HOME: D:\安装包\apache-ant-1.7.0-bin\apache-ant-1.7.0(我的ant解压在D:\安装包 下)
path: %ANT_HOME%\bin

- 验证Ant配置是否成功
开始->运行->cmd,输入ant -version得到

2.2使用Ant编译Tomcat源码
- 进入源码所在目录:

执行“ant download”命令,下载tomcat依赖的项目

- 执行ant命令,编译成功,界面如下:

这时可以发现目录D:\安装包\apache-tomcat-6.0.43-src下多了个output文件夹,进入bin目录,分别点击startup.bat和shutdown.bat启动和结束tomcat服务。

点击startup.bat,Tomcat成功启动:

三、Myeclipse中导入Tomcat源码
1.新建Java Project,如TSTest
2.右键项目->Import->File System
选中tomcat源码所在文件位置,勾选其中的java和test两个文件夹,Into folder选择当前新建的项目,如图所示:

3.导入如下jar包:

注意,org.eclipse.jdt.core_3.5.2.v_981_R35x.jar可以在Myeclipse安装的目录....\AppData\Local\Genuitec\Common中找到
这样tomcat源码项目就不会报错了。
4.运行tomcat源码
进入org.apache.catalina.startup下的Bootstrap.java类,右键run as->Java Application
发现没有正常启动,控制台信息为:
|
1
2
3
4
5
6
7
8
9
10
|
2015-1-25 18:58:06 org.apache.catalina.startup.ClassLoaderFactory validateFile警告: Problem with directory [D:\Users\Administrator\Workspaces\MyEclipse 8.6\TSTest\lib], exists: [false], isDirectory: [false], canRead: [false]2015-1-25 18:58:06 org.apache.catalina.startup.ClassLoaderFactory validateFile警告: Problem with directory [D:\Users\Administrator\Workspaces\MyEclipse 8.6\TSTest\lib], exists: [false], isDirectory: [false], canRead: [false]2015-1-25 18:58:06 org.apache.catalina.startup.Catalina load警告: Can't load server.xml from D:\Users\Administrator\Workspaces\MyEclipse 8.6\TSTest\conf\server.xml2015-1-25 18:58:06 org.apache.catalina.startup.Catalina load警告: Can't load server.xml from D:\Users\Administrator\Workspaces\MyEclipse 8.6\TSTest\conf\server.xml2015-1-25 18:58:06 org.apache.catalina.startup.Catalina start严重: Cannot start server. Server instance is not configured. |
从提示信息可以看出是没有加载server.xml等文件,通过查找发现需要在run as->run Configurations中的VM arguments中添加:
-Dcatalina.home="D:\tomcat\apache-tomcat-6.0.43-src\output\build"(该目录为tomcat源码所在目录)
运行成功,控制台打印信息为:

以前无数次的启动和终止tomcat,数这次最特别,真正的从源码去控制Tomcat服务^_^
如果觉得有用,欢迎点赞,同时欢迎加入左边公告栏群!
本文链接《探秘Tomcat(一)——Myeclipse中导入Tomcat源码》
友情赞助
如果你觉得博主的文章对你那么一点小帮助,恰巧你又有想打赏博主的小冲动,那么事不宜迟,赶紧扫一扫,小额地赞助下,攒个奶粉钱,也是让博主有动力继续努力,写出更好的文章^^。
1. 支付宝 2. 微信

探秘Tomcat(一)的更多相关文章
- 探秘Tomcat——连接器和容器的优雅启动
前言: 上篇<探秘Tomcat——启动篇>粗线条的介绍了在tomcat在启动过程中如何初始化Bootstrap类,加载并执行server,从而启动整个tomcat服务,一直到我们看到控制台 ...
- 探秘Tomcat——启动篇
tomcat作为一款web服务器本身很复杂,代码量也很大,但是模块化很强,最核心的模块还是连接器Connector和容器Container.具体请看下图: 从图中可以看出 a. 高亮的两块是Conne ...
- 探秘Tomcat——从一个简陋的Web服务器开始
前言: 无论是之前所在实习单位小到一个三五个人做的项目,还是如今一个在做的百人以上的产品,一直都能看到tomcat的身影.工作中经常遇到的操作就是启动和关闭tomcat服务,或者修改了摸个java文件 ...
- 探秘Tomcat(一)——Myeclipse中导入Tomcat源码
前言:有的时候自己不知道自己是井底之蛙,这并没有什么可怕的,因为你只要蜷缩在方寸之间的井里,无数次的生活轨迹无非最终归结还是一个圆形:但是可怕的是有一天你不得不从井里跳出来生活,需要重新审视井以外的生 ...
- 探秘Tomcat——连接篇
前两篇我们分别粗线条和细粒度的讲解了tomcat的服务是如何启动以及连接器Connector和容器Container又分别是如何被启动的. 本篇我们主要侧重tomcat中server.service以 ...
- 探秘Tomcat——一个简易的Servlet容器
即便再简陋的服务器也是服务器,今天就来循着书本的第二章来看看如何实现一个servlet容器. 背景知识 既然说到servlet容器这个名词,我们首先要了解它到底是什么. servlet 相比你或多或少 ...
- 细说tomcat之session持久化探秘
业务场景:通常,我们会在会话级别存放一些参数,期望在session生命周期内,可以一直取得保存在session中的指定数据:而只要session过期或者失效,则需要执行重新登录等操作.但是!我们对于这 ...
- linux+jre+apache+mysql+tomcat调优
一.不再为Apache进程淤积.耗尽内存而困扰 0. /etc/my.cnf,在mysqld那一段加上如下一行: log-slow-queries=queries-slow.log 重启MySQL 酌 ...
- 探秘IntelliJ IDEA v13的应用服务器
原文:探秘IntelliJ IDEA v13的应用服务器 IntelliJ IDEA v13应用out-of-the-box支持众多企业级和开源的服务器,包括:GlassFish.WebLogic. ...
随机推荐
- java 两个list 交集 并集 差集 去重复并集
前提需要明白List是引用类型,引用类型采用引用传递. 我们经常会遇到一些需求求集合的交集.差集.并集.例如下面两个集合: List<String> list1 = new ArrayLi ...
- 无责任共享 Coursera、Udacity 等课程视频(转载)
转载链接:https://www.zybuluo.com/illuz/note/71868 B站计划:https://www.zybuluo.com/illuz/note/832995#cs基础课程
- MySQL基于LVM快照的备份恢复(临时)
目录1.数据库全备份2.准备LVM卷3.数据恢复到LVM卷4.基于LVM快照备份数据5.数据灾难恢复6.总结 写在前面:测试环境中已安装有mysql 5.5.36数据库,但数据目录没有存放在LVM卷, ...
- oracle instantclient_11_2插件安装
1.安装plsql 2.instantclient_11_2下载,解压到目录 D:\DevTools\instantclient_11_2 3.打开plsql, 点击“取消” 4.选择“工具”--&g ...
- centos6.5下java和tomcat环境部署
软件包: tomcat安装包 apache-tomcat-7.0.67.zip jdk安装包 jdk-6u10-linux-x64.bin 下载地址:http://www.oracle.com/tec ...
- vue及webpack在项目中的一些优化
传送:https://www.haorooms.com/post/vue_webpack_youhua
- java比较两个对象是否相等?
1.判断两个对象是否是同一个引用对象则用==,"=="比的是地址.因为如果地址相同,则就是同一个对象(java中如果两对象(obj1,obj2)相等,那么在修改obj2的时候,ob ...
- Windows服务项目打包成安装包(Windows服务)-----------VS2017项目程序打包成.msi或者.exe
VS2017项目程序打包成.msi或者.exe Windows服务项目使用VS2017项目程序打包成.msi或者.exe安装包 项目打包成安装包(Windows服务) 1.安装打包插件:Microso ...
- 我靠,上班eclipse看糗事百科
package test; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; ...
- 《剑指offer》-旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数 ...