tomcat部署war包,jar包

本文详细介绍了在Tomcat服务器中部署WAR包及配置虚拟路径的方法,并提供了解决常见问题的方案,包括URL冲突、中文乱码及防火墙设置等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在tomcat根目录下部署war包,通过http://ip:port的方式访问

网上说的方法很多,这里记录一下自己的经过实践检验的一种方法。
1、先去tomcat/conf/server.xml里
有一个HOST标签,有个参数appBase,表示你的应用应该部署在什么位置。例如下面写的是webapps,那就在webapps/ROOT/路径下解压你的war包。如果appBase=XXX,那么就在XXX/ROOT/路径下解压war包

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

2、运行tomcat/bin/startup.bat

如果要通过http://ip:port/appName的方式访问
1、在前面说到appBase的基础上,新建appBase/appName/路径,将war包解压到appBase/appName/
2、运行tomcat/bin/startup.bat

这里记一下虚拟路径的操作
HOST标签下新增如下代码
docBase是具体的文件目录,path是url中的地址,tomcat会做自动映射

<Context docBase="D:/docs" path="/resources" reloadable="true" debug="0"/>

2018-01-03更新
今天碰见一个问题,启动部署在root下的tomcat项目,访问项目中的一个url路径/manager/XXX一直显示404。但是这个url在其他人的tomcat上能够访问。
最后发现是在root路径同级有个自带的manager路径,访问到了那个manager路径下,那个manager路径下没有我请求的url,所以404了。
把那个manager改了个名字就能正常访问了

2018-03-07更新
今天碰见个问题,前端请求的参数带有中文,但是到了服务器端,日志打印出来的又都是乱码。
应用的web.xml中也配置filter

<filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>

    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

然后在tomcat的conf/server.xml配置文件中改了东西,增加了useBodyEncodingForURI=”true”

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" useBodyEncodingForURI="true" />

20180504更新
部署jar包应用,可以写一个shell脚本

nohup /opt/jdk1.7.0_76/bin/java -jar -Xms1024m -Xmx1024m -Dspring.profiles.active=test -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=10086 /XXX/test.jar > /XXXX/nohup.out 2>&1 &

启动参数说明:XXX是路径,10086是远程debug的端口,Xms,Xmx堆大小

20180529更新
在一片白纸的linux上安装tomcat,然后telnet了一下,telnet localhost 8080,没有返回Connection refused,而是返回了No route to host。
查了下资料,Connection refused一般来说是端口没有监听,No route to host是防火墙没有打开特定端口。说明链接:https://blog.youkuaiyun.com/bisal/article/details/44731431
如果想开放端口,例如8080
1) vi /etc/sysconfig/iptables 进入编辑增添一条-A INPUT -p tcp -m tcp –dport 8080 -j ACCEPT 即可
2)iptables -I INPUT -p tcp –dport 8080 -j ACCEPT

然后

service iptables save
systemctl restart iptables

但是有可能出现Failed to start iptables.service: Unit iptables.service failed to load: No such file or directory.
具体可以参考:https://blog.youkuaiyun.com/c233728461/article/details/52679558。我用的是文章中第二种传统管理方式
一顿操作猛如虎,再telnet,应该就差不多了,因为应用没有部署,没有监听8080。

telnet localhost 8080
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
Trying ::1...
telnet: connect to address ::1: No route to host
### Tomcat部署WAR的工作原理 #### 1. WAR文件结构解析 Web应用程序存档 (WAR) 文件是一种用于分发Java Servlet、JSP页面和其他资源(如图像和静态HTML文件)的标准归档格式。WAR文件本质上是一个ZIP压缩文件,其内部遵循特定目录结构[^1]。 - `WEB-INF/`:此目录含了web应用的核心配置文件以及类库。 - `classes/`: 存放编译后的Java类文件。 - `lib/`: 放置第三方依赖jar。 - `web.xml`: Web应用描述符,定义了Servlet映射等信息。 #### 2. 部署过程概述 当向Tomcat服务器上传并启动一个WAR文件时,会发生如下流程: - **解压**:Tomcat会自动识别`.war`扩展名并将该文件解压到指定的应用程序根目录下。 - **初始化上下文**:创建一个新的ServletContext实例来表示这个新加载的应用程序环境,并读取`web.xml`中的设置以完成必要的初始化工作[^2]。 - **扫描组件**:对于基于Spring框架构建的应用而言,在这一阶段还会执行Bean的发现与注册操作,确保所有的控制器和服务都能被正确注入和调用[^3]。 - **监听器触发**:如果有任何实现了`javax.servlet.ServletContextListener`接口的对象,则会在整个应用生命周期的不同事件发生时收到通知,比如启动完成后或关闭前。 - **容器管理的安全性和事务支持**:如果启用了相应的特性,那么此时也会建立安全策略及事务边界[^4]。 ```xml <!-- Example of web.xml configuration --> <web-app> <!-- Define welcome file list --> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- Other configurations... --> </web-app> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值