maven-tomcat热部署和本地部署方式的区别

  以前在做项目的过程中没有仔细考虑这两种方式的区别,最近在做一个ERP项目时,我遇到了一个奇葩的问题:不使用maven管理的项目可以正常运行,使用maven管理后的项目总是报错。
  我后来仔细分析了一下,为什么会出现这个问题?我反复的重复安装maven项目折腾了3天,仔细的分析不使用maven管理的项目编译后的文件和使用maven管理后的文件的区别。我将不使用maven管理能够正常访问的项目源码都拷贝到使用maven管理的空项目中,由于不使用maven的项目能够正常运行说明java文件和配置是没有问题的。当我把所有的源文件和配置文件都拷贝完成后,我发现刚开始访问主页的时候还能够访问,但是登录的时候登录不成功。总是在登录页面。
  maven-tomcat热部署和本地部署方式的区别_第1张图片
  我后来把源码中登录拦截器都注释掉了,启动了一下项目。我发现页面时跳转了,但是居然出现了提示“EmpModel is not mapped”的错误。
  maven-tomcat热部署和本地部署方式的区别_第2张图片
  我一开始以为是我的配置文件出现了文件,我找到配置文件EmpModel.hbm.xml和加载该配置文件的配置文件applicationContext.xml中关于EmpModel.hbm.xml的路径重新修改了一下,然后重新使用热部署的方式运行了一下。
maven-tomcat热部署和本地部署方式的区别_第3张图片
  以为这次能行,没想到还是不行,我晕。我后来看了一下发现我使用maven管理的项目使用的maven-tomcat的插件的热部署方式。出于好奇,我自己使用了Run as –> Run on Server的方式重新启动了一下项目,我访问之后发现,居然可以访问了,心中一丝窃喜。
  maven-tomcat热部署和本地部署方式的区别_第4张图片
  本着严谨认真的态度,我分析了一下为什么后出现这种情况?我找到了热部署方式的源文件的编译后的路径。
  maven-tomcat热部署和本地部署方式的区别_第5张图片
  我顺藤摸瓜开始寻找EmpModel.hbm.xml这个文件,我到源码的文件路径下去查找配置文件,我发现居然没有这个文件。怪不得程序会提示EmpModel is not mapped,我一开始以为有文件但是没有写对。后来发现真正的问题时没有这个配置文件。突然间头脑中记起来,在配置模型类时要把配置文件放在resource文件夹中安装模型类的类路径进行创建包名,当初印象不深。今天折腾了几天之后,估计以后不会忘了。
  我后来,分析了一下部署在本地的tomcat的编译结果,我发现通过本地部署的方式,映射文件已经被拷贝到了编译后class文件夹中,这个文件夹的路径如下图所示。
  maven-tomcat热部署和本地部署方式的区别_第6张图片
  到这个class目录对应的emp模型类中我发现,可以找到配置文件EmpModel.hbm.xml。怪不得通过本地部署的方式就没有问题。
  通过这个错误,加深了我对项目部署方式的认识。以后如果采用maven插件热部署的方式,一定要将映射文件放在resource文件夹中创建好包名;如果要是使用本地tomcat部署的方式就不用管了,编译后会将配置文件放在相应的路径中。

你可能感兴趣的:(SSH项目学习)