1、tomcat的目录结构及说明:
/bin:存放windows或Linux平台上启动和关闭Tomcat的脚本文件
/conf:存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xml和web.xml
/doc:存放Tomcat文档
/server:包含三个子目录:classes、lib和webapps
/server/lib:存放Tomcat服务器所需的各种JAR文件
/server/webapps:存放Tomcat自带的两个WEB应用admin应用和 manager应用
/common/lib:存放Tomcat服务器以及所有web应用都可以访问的jar文件
/shared/lib:存放所有web应用都可以访问的jar文件(但是不能被Tomcat服务器访问)
/logs:存放Tomcat执行时的日志文件
/src:存放Tomcat的源代码
/webapps:Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录
/work:存放JSP编译后产生的class文件
2、发布WEB应用
1)、将应用目录达成war包。(将html、jsp、images、WEB-INF目录和当前目录下的所有后缀名为jsp、html的文件打包成DemoWeb.war)命令如下:
jar -cvf DemoWeb.war html jsp images WEB-INF *.jsp *.html
2)、部署:方法1,在tomcat目录中部署。(将DemoWeb.war拷贝到webapps目录下、也可以不用打包,直接把应用拷贝到webapps目录)
方法2,在tomcat目录外部署。(对conf目录中的server.xml的<context>元素进行设置。<context>元素代表了在<Host>上的单个Web应用,第一个Web应用必须有一个唯一的URL路径,通过他的path属性来设定。)示例:
<Host name="localhost" debug="0" appBase="Webapps" unpackWARs="true" autoDeploy="true">
<Context path="/DemoWeb" docBase="d:/workspace/DemoWeb" debug="0" reloadable="true"/>
</Host>
3)、在conf\Catalina\localhost文件夹下配置和项目名一样的xml文件。如<Context docBase="D:\work_workspace\DemoWeb" path="/DemoWeb" reloadable="true"></Context>
3,配置文件说明
web.xml的作用:
web.xml的文件格式定义在Servlet规范中,因此所有符合Servlet规范的Java Servlet Container都会用到它。当tomcat部署应用程序时(在激活过程中,或加载应用程序后),它都会读取通用的conf/web.xml,然后再读取web应用程序中的WEB-INF/web.xml。
tomcat-users.xml的作用:
tomcat的用户管理及配置管理 <user username="admin" password="1234" roles="manager-gui"/>
context.xml的作用:
每个<Context元素代表了运行在虚拟主机上的单个Web应用。
<Context path="/SmartStore" reloadable="false" docBase="D:\SmartStore\workspaceSmartStore\SmartStore\src\main\webapp" workDir="D:\SmartStore\workspaceSmartStore\SmartStore\work" >
<Logger className="org.apache.catalina.logger.SystemOutLogger" verbosity="4" timestamp="true"/>
</Context>
1、path:即要建立的虚拟目录,,注意是/kaka,它指定访问Web应用的 上下文根,如http://localhost:8080/SmartStore/****
2、docBase:为应用程序的路径或WAR文件存放的路径 ,可以是绝对路径 ,也可是相对路径,相对路径是相对于<Host >(此处的host对应server.xml中的host元素)
3、reloadable:如果这个属性设为true,Tomcat服务器在运行状态下会监视在WEB-INF/classes和Web-INF/lib目录CLASS文件的改变,如果监视到有class文件被更新,服务器自动重新加载Web应用,这样我们可以在不重起tomcat的情况下改变应用程序。
4、workDir:jsp运行时都要先转换成servlet,使用tomcat时会在tomcat安装目录下的work生成一系列的文件夹和.java文件和.class文件。设置该属性后可改变生成的java和class文件的存储路径。
Tips:一个Host元素中嵌套任意多的Context元素。每个Context的路径必须是惟一的,由path属性定义。另外,你必须定义一个path=“”的context,这个Context称为该虚拟主机的缺省web应用,用来处理那些不能匹配任何Context的Context路径的请求。
<Context path="/kaka" docBase="kaka" debug="0" reloadbale="true" privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>WEB-INF/kaka.xml</WatchedResource> 监控资源文件,如果web.xml || kaka.xml改变了,则自动重新加载改应用。
<Resource name="jdbc/testSiteds" 表示指定的jndi名称
auth="Container" 表示认证方式,一般为Container
type="javax.sql.DataSource"
maxActive="100" 连接池支持的最大连接数
maxIdle="30" 连接池中最多可空闲maxIdle个连接
maxWait="10000" 连接池中连接用完时,新的请求等待时间,毫秒
username="root" 表示数据库用户名
password="root" 表示数据库用户的密码
driverClassName="com.mysql.jdbc.Driver" 表示JDBC DRIVER
url="jdbc:mysql://localhost:3306/testSite" /> 表示数据库URL地址
</Context>
context.xml的三个作用范围
tomcat server级别: 在/conf/context.xml里配置
Host级别: 在/conf/Catalina/${hostName}里添加context.xml,继而进行配置
web app 级别: 在/conf/Catalina/${hostName}里添加${webAppName}.xml,继而进行配置
server.xml的作用:
tserver.xml是一个主要的配置文件.下面列出server.xml中的元素及其具体含义:
补充:因为 server.xml 是不可动态重加载的资源,服务器一旦启动了以后,要修改这个文件,就得重启服务器才能重新加载。而 context.xml文件则不然, tomcat 服务器会定时去扫描这个文件。一旦发现文件被修改(时间戳改变了),就会自动重新加载这个文件,而不需要重启服务器 。
元素名 | 属性 | 解释 |
server | port shutdown | port指Tomcat监听shutdown的端口,默认为8080; shutdown:终止服务器时,制定向端口发送的命令字符串 |
service | name | 指定service的名字 |
Connector | port minProcessors maxProcessors enableLookups redirectPort acceptCount | 指定tcp/ip端口号,默认为8080 服务器启动时创建的处理请求的线程数 最大可以处理请求的线程数,默认为200 如果设为true,则支持域名解析,可以吧IP解析为主机。默认为true 指定服务器正在处理http请求时收到了一个SSL传输请求后重新定向的端口号 指定在监听端口队列中的最大客户数,默认为10.如果队列已满,客户请求讲拒绝 |
Engine | defaultHost | 指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值时一样的 |
Context | docBase path reloadable | Web应用程序的路径或者时WAR文件存放的路径 表示此Web应用程序的url的前缀,这样请求的url为http://localhost:8080/path 如果设为true,则tomcat会自动检测应用程序的/WEB-INF/lib和WEB-INF/classes文件袋额改动,而不需要重新启动 |
Host | name appBase unpackWARs | 指定主机名 应用程序的基本目录,即存放应用程序的目录 如果设为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序 |
Logger | className prefix suffix timestamp | 指定logger使用的类名,此类必须实现org。apache。catalina。Logger接口 指定log文件的前缀名 指定log文件的后缀名 如果设为true,则log文件名中要加入时间,如:localhost_log.2013-07-26.txt |
Realm | className | 指定Realm使用的类名 |
4, Tomcat加载类和资源的顺序为(以helloapp应用为例)
helloapp (/webapps/helloapp/Web-INF/下的classes,lib子目录中*.calss及*.jar,仅helloapp可以加载)
Bootstrap ($JAVA_HOME/jre/lib/ext/*.jar)
System ($CLASSPATH/*.class和CLASSPATH中指定的jar)
Common ($CATALINA_HOME/common/下的classes,lib,endores子目录中*.class及*.jar)
Catalina ($CATALINA_HOME/server/下的classes,lib子目录中*.calss及*.jar,仅Tomcat可以加载)
Shared ($CATALINA_HOME/shared/下的classes,lib子目录中*.calss及*.jar,仅所有Web应用可以加载)
以上为综合整理,自查加参考网络用户的结果