tomcat——初步理解
2017-06-21 21:34
204 查看
Tomcat文件结构
${tomcat目录}|--bin/
|--conf/
| |--context.xml
| |--server.xml
| |--tomcat-users.xml
| +--web.xml
|
|--lib/
|--logs/
+--webapps/
Bin 存放启动和关闭tomcat脚本
conf 包含不同的配置文件,server.xml(Tomcat的主要配置文件)和web.xml
work 存放jsp编译后产生的class文件
webapps 存放应用程序示例,以后你要部署的应用程序也要放到此目录
logs 存放日志文件
lib 主要存放tomcat所需的jar文件
其中,server.xml是tomcat的主要配置文件,也是我们用到最多的。
如,修改访问端口,tomcat默认端口是8080,我们通常要将它设置为80端口:
[html]
view plain
copy
print?
<Connector port="80"protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/>
port指定一个端口,这个端口负责监听和关闭tomcat的请求
tomcat部署设置
[html]view plain
copy
print?
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
Host 表示一个虚拟主机,name代表了主机名,所以我们用localhost+tomcat的端口号,访问这台“虚拟主机”
appBase指定了部署的目录;
autoDeploy设置是否自动部署;
unpackWARs设置了部署的形式,如果为true,则会以展开的形式部署;如果为false,则会以war包的形式部署。
webapps加载的顺序
1 有context配置的应用优先启动;2 以目录形式部署的应用随后启动;
3 以war文件部署的应用最后启动。
如何配置context,让他优先启动:
在tomcat的配置文件中,一个Web应用就是一个特定的Context,可以通过在server.xml中新建Context里部署一个应用程序。
方法:打开server.xml文件,在Host标签内建一个Context,内容如下:
<Context path="/photo" reloadable="true" docBase="D:/myapp" workDir="D:/myapp "/>
其中path是虚拟路径,docBase是应用程序的物理路径,workDir是这个应用的工作目录。
这里最常用的是为图片上传配置虚拟目录,如以上的配置,当开启tomcat时,访问http://localhost/photo/+ D:/myapp下的图片名称,就可以读取到他的文件目录下的图片资源。
tomcat两种部署方法
静态部署:部署时,涉及到一个变量appBase。这个变量标识了一个目录,该目录存放着部署的web应用。一般默认情况下,appBase为CATALINA_HOME/webapps,配置信息位于server.xml中。
默认的配置:
[html]
view plain
copy
print?
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
静态部署的顺序:
1 部署上下文描述符。
2 部署展开的应用。如果部署目录中存在相应的war包,则检查是否比当前的应用更新;如果更新,则删除当前的应用,并解压该war包,得到最新的应用。
3 部署war包。
动态部署:
动态部署需要一个配置参数,autoDeploy 为 true。
当设置了该属性后,tomcat会在其运行时支持如下的操作:
1 部署新拷贝到appBase下的war文件
2 部署拷贝到appBase下的展开的应用(未压缩的)
3 当提供一个更新的war包时,重新部署应用。会先删除当前存在的应用,再进行解压部署。
4 当/WEB-INF/web.xml被改写时,自动部署
5 当web应用的context.xml上下文描述符被更新时,自动部署
6 当CATALINA_HOME/conf下对应的应用的上下文描述符被更新时,自动部署
7 当对应的docBase文档被删除时,自动部署。
动态部署是指可以在服务器启动之后部署web应用程序,而不用重新启动服务器。
动态部署要用到服务器提供的manager.war文件,如果在$CATALINA_HOME\webapps\下没有该文件,你必须去重新下载tomcat,否则不能完成以下的功能。
要想使用该管理程序必须首先编辑 $CATALINA_HOME\conf\tomcat-users.xml 文件。
tomcat配置文件context加密
(出自:http://www.cnblogs.com/mabaishui/archive/2011/07/14/2106469.html)近日客户要求对tomcat配置文件context的数据库用户名和密码加密。
解密程序已写好,只需在取得用户名密码的时候调用解密程序即可。
context配置如下:
[html]
view plain
copy
print?
<span style="font-size:18px;"><Context path="/web" docBase="E:\izumi_workspace\izumi\WebContent" reloadable="false">
<Resource
name="jdbc/izumidb1"
type="javax.sql.DataSource"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
password="67461e40361806c4"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
maxIdle="10"
maxWait="5000"
username="67461e40361806c4"
removeAbandoned="true"
removeAbandonedTimeout="60"
validationQuery="select count(*) from izumi_user"
logAbandoned="true"
url="jdbc:microsoft:sqlserver://XX.XXX.XX.XXX:1433;DataBaseName=test2"
maxActive="30"/>
</Context> </span>
为何要修改tomcat代码?
程序中使用这种方式取得Resource中定义的数据库
[html]
view plain
copy
print?
<span style="font-size:18px;">Context ctx = (Context) new InitialContext().lookup("java:comp/env");
DataSource ds = (DataSource) ctx.lookup("jdbc/izumidb1"); </span>
因为javax.sql.DataSource是一个接口,是tomcat实现了这个接口,所以解密过程需要修改tomcat的代码。
修改哪里?
修改org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory的createDataSource()方法即可。
在apache.org找到 BasicDataSourceFactory的源码(最好是你当前使用的tomcat的版本的源码)
自建 org.apache.tomcat.dbcp.dbcp包,把BasicDataSourceFactory源码扔到包里,如果源码有import到其他类,把其他类也扔到包里,做解密修改。
修改完后放哪里?
在tomcat/common/lib中有关于dbcp的包,不同版本的tomcat可能包名不同。找到org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory所在的包,将编译好的我们的BasicDataSourceFactory类的.class文件放到包里,覆盖原来的BasicDataSourceFactory.class。
大功告成。
转自:http://blog.csdn.net/weixin_36380516
相关文章推荐
- 初步认定是tomcat bug
- 初步理解“单文档程序框架”(一)
- Liferay研究(一):初步在新Tomcat下部署
- 理解XML Schema: XML Schema初步(II)
- 对java处理tomcat中文乱码问题的理解
- Struts DispatchedAction 的意义 初步理解
- 在tomcat下初步整合spring和jbpm
- C#委托及事件委托的初步理解(经典文章)
- 理解XML Schema: XML Schema 初步 (I)
- 对Hibernate的初步理解----初看Hibernate2.1参考文档有感!!
- 初步解决Tomcat 的administration tool 和 连接池 的问题!
- 对VC坐标系的初步理解(如有错误欢迎指出)
- C#委托及事件委托的初步理解
- Liferay Portal额外研究(一):初步在新Tomcat下部署
- 理解 XML Schema:XML Schema 初步 (I)
- 微软msn服务器设计思想初步理解
- 网络基础知识讲座之九:初步理解TCP协议
- jain-sip 一些类的初步理解
- 对硬盘分区的初步理解
- 理解XML Schema: XML Schema 初步