部署Spring项目war和war exploded区别

本文详细对比了war和warexploded两种部署模式的区别。war模式适用于正式发布,通过打包成war文件上传至服务器;而warexploded模式则支持热部署,适合开发阶段,直接将文件夹结构上传至Tomcat进行部署。文章还介绍了如何在Tomcat中设置热部署。

war和war exploded区别:

在这里插入图片描述

  • war模式这种可以称之为是发布模式,就是先将WEB工程打成war包,然后再将其上传到服务器进行发布 。;
  • war exploded模式是将WEB工程以当前文件夹的位置关系上传到服务器,即直接把文件夹、jsp页面 、classes等等移到Tomcat 部署文件夹里面,进行加载部署。因此这种方式支持热部署,一般在开发的时候也是用这种方式。
  • 在平时开发的时候,使用热部署的话,应该对Tomcat进行相应的设置,这样的话修改的jsp界面什么的东西才可以及时的显示出来。

修改下方图中箭头指向的位置,这样的话就可以实现热部署。

在这里插入图片描述

### 错误原因 #### 1. 部署配置问题 当出现“Artifact xxx:war exploded: Error during artifact deployment. See server log for details.”这类错误时,可能是项目部署配置方面存在问题,比如项目在 Artifacts 中的配置有误,或者 Tomcat 部署界面的配置不正确[^1]。 #### 2. Bean 创建异常 像“org.springframework.beans.factory.BeanCreationException”这类错误,意味着在创建 Spring 容器中的 Bean 时出现问题。例如,在初始化 `sqlSessionFactory` Bean 时失败,可能是由于 MyBatis 映射资源解析失败导致的。如无法解析 `AuthorityMapper.xml` 文件,可能是因为无法解析类型别名 `Authority`,这可能是由于类加载失败,即找不到 `Authority` 类所引起的[^2]。 #### 3. 扫描配置问题 有用户尝试修改 `tomcat -》conf` 目录下的 `catalina.properties` 文件中的 `tomcat.util.scan.DefaultJarScanner.jarsToSkip` 参数,但问题依旧存在,说明可能存在扫描配置方面的问题,不过单纯修改该参数不一定能解决问题[^3]。 ### 解决办法 #### 1. 重新配置部署 - 重新配置 Artifacts:在 IDE 中,通过“File -> Project Structure -> Artifacts”,移除要部署项目,然后再重新添加回来。重新添加时,选择相应的项目/模块。 - 重新配置 Tomcat 部署:打开 Tomcat 部署界面,进入“Deployment”,移除除自己需要部署项目,然后重新将项目添加进部署。如果第一种方式仍无法解决部署问题,可以从文件夹中选择自己的项目添加[^1]。 #### 2. 检查修复 Bean 创建问题 - 检查 MyBatis 映射文件:确保 `AuthorityMapper.xml` 文件以及其他 MyBatis 映射文件的语法正确,并且相关的实体类(如 `Authority` 类)存在于类路径中。 - 检查类型别名配置:在 MyBatis 配置文件中,确保正确配置了类型别名,使得可以正确解析类型。 #### 3. 检查调整扫描配置 虽然修改 `tomcat.util.scan.DefaultJarScanner.jarsToSkip` 参数不一定能解决问题,但可以进一步检查 Tomcat 的其他扫描配置,或者尝试不同版本的 Tomcat 来排查是否是 Tomcat 本身的问题。 #### 4. 配置 web.xml 对于 Maven 项目,如果没有 `webapp` 路径,需要手工创建,并且在 `web.xml` 中增加监听器,指定监听器需要处理的 Spring 配置文件,示例代码如下: ```xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <description>office2</description> <display-name>office2</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> </web-app> ``` #### 5. 修改 Maven 配置 修改 `settings.xml` 配置,设置阿里云镜像 JDK 1.8 版本编译,示例代码如下: ```xml <!-- 设置aliyun镜像 --> <mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> <!-- 设置jdk1.8版本编译 --> <profiles> <profile> <id>jdk8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile> </profiles> ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值