Tomcat应用部署
背景
记录一次使用tomcat搭建java应用的过程
工程环境
- java应用(基于java1.7开发)
- jdk1.7
- tomcat-8.5.xx
- oracle12
搭建步骤
工具安装
java 安装
- java下载安装不做赘述,自行百度
- 环境变量配置
- CLASSPATH(java应用类搜索路径)
.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;
- PATH(应用程序加载路径)
;%JAVA_HOME%\bin
- 验证java是否安装成功,cmd运行
java -version
tomcat 安装
- 下载地址:https://tomcat.apache.org/download-80.cgi 下载后解压即可使用
- 环境变量配置
- CATALINA_HOME(tomcat批处理文件搜索路径,也可在start.bat目录下配置,此处不配置,.bat不要随意移动位置,否则会出现搜索不到tomcat的问题)
- CLASSPATH(可省略)
D:\tomcat\lib\jsp-api.jar;D:\tomcat\lib\servlet-api.jar;
- 运行tomcat
- 进入bin目录运行start.bat,
- 浏览器访问 http://127.0.0.1:8080/
- 设置管理员密码
- 目的:登录Manager控制台,管理应用程序或给应用程序授权
- 切换到tomcat/conf/目录下,在tomcat-users.xml的…中添加如下内容
<tomcat-users>
<role rolename="manager-gui"/>
<user username="username" password="password" roles="manager-gui"/>
</tomcat-users>
- 访问Manager APP
- 遇到的问题:
- tomcat启动时,命令窗口中文乱码
切换到tomcat/conf/目录下,将logging.properties 中
java.util.logging.ConsoleHandler.encoding = utf-8
改为java.util.logging.ConsoleHandler.encoding = GBK
切换到tomcat/conf/目录下,将server.xml 中默认端口8080改为未使用的端口即可,如下:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
配置文件
配置tomcat/conf/web.xml
- web.xml作用
- 建立所有应用程序中web.xml的缺省值
- 配置整个tomcat的jsp和servlet工作中的各种情况,比如安全权限等
- 更多详细功能参考大佬文档–https://blog.csdn.net/qq_39629343/article/details/82690336
- 修改tomcat访问权限
此步骤是为了启动服务时,tomcat能够访问应用目录下的所有文件
将tomcat/conf/web.xml修改如下
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
配置tomcat/conf/server.xml(重要)
- server.xml作用
在<Host>…</Host>内增加如下代码:
<Context path="" docBase="D:\AppStore" debug="0" reloadable="false" privileged="true"/>
注意目录层级,docBase目录下必须有WEB-INF文件,且和下图层级一致,否则无法加载工程应用
path:应用上下文路径,即访问 :port/path/,可以为空,不为空必须以\’/\’开头
docBase:可以是绝对路径也可以是相对路径
reloadable:扫描WEB-INF目录下class和lib中的jar包是否有更新,以此判断是否重启服务
<Host name="localhost" appBase="D:\appstore"
unpackWARs="true" autoDeploy="true">
appBase,即存放应用程序的目录
注意目录层级,appBase目录下必须有WEB-INF文件
配置tomcat/conf/context.xml(重要)
- context.xml作用
添加如下代码(注意结尾没反斜杠噢)
<Context path="" docBase="D:\AppStore" debug="0" reloadable="false" privileged="true">
在<Context>…</Context>内添加如下内容
<!-- name,指定JNDI名称 -->
<!-- auth,表示认证方式,一般为Container -->
<!-- maxIdle,连接池中最多可空闲连接数 -->
<!-- maxWaitMillis,连接池中连接用完时,新的请求等待时间,单位毫秒 -->
<!-- username,password,数据库用户名/密码 -->
<!-- driverClassName,jdbc驱动 -->
<!-- url,数据库url地址 -->
<Resource name="/jdbc/WebData" type="javax.sql.DataSource"
auth="Container"
maxTotal="10000"
maxWaitMillis="150"
maxIdle="10"
driverClassName="com.P6Driver"
url="jdbc:oracle:thin:@127.0.0.1:1521:oracle"
username="admin"
password="admin"/>
<Resources cachingAllowed="true" cacheMaxSize="100000"/>
部署应用
第一种方式:将应用程序放置在tomcat\webapps应用目录下
- 将应用程序放置在tomcat\webapps目录下
- 将对应版本的驱动包(jar包)放置在tomcat>lib目录下,数据库版本与驱动包版本必须一致。
- 在context.xml中配置数据源
第二种方式:修改appBase,将应用程序放置在appBase目录下
- 修改server.xml中appBase,将应用程序放置在appBase目录下
- 将对应版本的驱动包(jar包)放置在tomcat>lib目录下,数据库版本与驱动包版本必须一致。
- 在context.xml中配置数据源
第三种方式:增加docBase,将应用程序放置在docBase目录下
- 在context.xml增加docBase,将应用程序放置在docBase目录下
- 将对应版本的驱动包(jar包)放置在tomcat>lib目录下,数据库版本与驱动包版本必须一致。
- 在context.xml中配置数据源
第四种方式:自定义web部署文件
- 新建tomcat\conf\catalina\localhost文件夹,新建xml文件,在xml中写入:
<Context path="/web" docBase="E:\tomcat\web" debug="0" privileged="true"></Context>
- 多个应用程序添加多个xml文件,以应用程序文件名命名即可
- 将应用程序放置在docBase目录下
- 将对应版本的驱动包(jar包)放置在tomcat>lib目录下,数据库版本与驱动包版本必须一致。
- 在context.xml中配置数据源