由于公司用maven做为项目控制,服务器为tomcat,如果启动项目需要十分钟左右。一般部署方法把整个程序打成war包,让tomcat自己解包。
但现在,假如我只是改了个jsp文件,我希望直接替换tomcat的webapps下jsp达到省时间的操作,删除catlina,替换jsp,浏览器缓存清除,可是还没有达到jsp文件重新部署。后来发现,tomcat没有对替换后的jsp进行编译,请问高手如此怎么解决?

解决方案 »

  1.   

    最好是改为目录部署,否则会比较麻烦。Tomcat对于war文件,运行时会默认的自动在:TOMCAT_HOME\webapps\下进行解压缩,可以在这个目录下替换同名文件,但是这种替换,如果重新启动就可能出问题。有个要点是:
    <Host name= "localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> 
      

  2.   

    恩。以前使用tomcat的时候一直都使用目录部署,现在换了个公司,因为项目比较庞大,project分的比较细致(也是为了方便控制portal和portlet),猜测也因此选择这样的部署方式。
    以前项目上线的时候使用weblogic,修改个别文件的时候只需增量部署即可。
    现在很好奇,
              1.为什么tomcat自动deploy的时候可以把jsp文件编译后不需重新启动服务器即可使用最新的jsp文件
              2.tomcat自动deploy的时候只在catlina下面留了个缓存,temp文件是访问后的副本(个人理解),那么真正使用jsp的时候调的应该是catlina下编译过的jsp吧?
      

  3.   

    请问您有什么关于 多项目联合 使用目录部署的心得么?我其实挺想把这个部署方式改掉的,这样结合maven会觉得非常搞笑,毕竟war包的时间太长了。
      

  4.   

    maven一般我是用jetty发布调试,tomcat的jsp页面编译后都在work目录下,要删除相关的class
      

  5.   

    tomcat的节奏不是比较jsp与其在work目录下编译后的class比较时间么。。但是我手动修改jsp,没有这一步操作。。
      

  6.   

    已经解决
    直接将tomcat下temp目录中最新版本project(看时间)对应的jsp文件覆盖即可,其他操作tomcat自己完成
      

  7.   


    1、Weblogic也可以,但是要非生产模式,而且需要配置weblogic.xml文件;本质上就是访问JSP前检查最后更新时间而已;2、是的。编译后的一般默认放在work目录。
      

  8.   


    其实我们也都是用自动脚本来处理,打包仍然会打包为war,这个版本发布管理的规范性要求;但是FTP上传到服务器,然后解包,然后调用Weblogic的Admin服务进行部署;最后重启Weblogic,这个重启很重要。
      

  9.   

    是啊~按理来说都是要war包的,但多项目调试起来方便嘛 本机就tomcat了哟
    谢谢指教 结贴哈
      

  10.   

    遇到该问题:直接把发布文件复制到webapps下,然后就无法更改。
    看了该贴之后发现问题的解决办法:tomcat—》work文件夹--》Catalina--》localhost文件夹下的对应项目名,直接删除,重新启动tomcat,然后会发现重新编译了,可以更新了。