`
三问飞絮
  • 浏览: 320582 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Eclipse的Tomcat热部署,免重启的方法

    博客分类:
  • Java
 
阅读更多

背景与目标:

      最好使用MyEclipse部署Web应用,在开发调试时,非常方式。资源文件修改可以自动的同步。修改Java文件,除非改变类的结构定义,也可以实现热部署的效果。

      后来使用Eclipse JEE版本原生的方式(WTP)部署Web应用,在这一方面的便利性大大降低。原因是一旦修改Java类,虽说Tomcat也不需要人自动重启,但实际上,WebContext自动relead,实际还是相当于重启。

      其实,不仅仅是修改Java类,只是放在Eclipse作为source folder的文件修改,都可触发tomcat的reload。

 

改善:

      对此,一个改善的思路是:直接将tomcat的Context指向工程目录下的WebRoot/WebContent。这样,就免去了代码同步的问题。

      方法:

      1、修改tomcat的server.xml。

           在Eclipse创建Server,实际已经新建了一组catalina的配置文件,即原tomcat中的conf目录。



 

      2、手动添加项目引用。在Host结点下,添加Context节点。

   

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
       <!-- docBase指向工程目录  path即Context名称 -->
	<Context docBase="E:/code/workspace/SCM/WebRoot" path="/SCM" reloadable="false">
	</Context>

</Host>

 

 

 

问题:很多项目引用的第三方包有统一的位置,并不直接放在工程下/WebContent/WEB-INF/lib下。在这种场景,将会导致ClassNotFoundException异常抛出。

 

 

再改善:

方法 一:

       一些无关Classloader的类,主要是作为工具类引用的,可以放在tomcat的shared.loader下。这个可以通过设置catalina.properties目录来实现。

      但是此方法改变原有的类加载设计,可能工程需要做一些特别的改变。不具有普遍适应性。故略。

 

方法 二:

      利用Tomcat配置的VirtualWebappLoader机制,告诉tomcat去加载第三方的其他jar文件。配置方法同样在server.xml文件里。在前面加的Context下添加Loader。如下:

  

<Context docBase="E:/code/workspace/SCM/WebRoot" path="/SCM" reloadable="false">		<Loader className="org.apache.catalina.loader.VirtualWebappLoader" searchVirtualFirst="false" virtualClasspath="E:/code/workspace/SimpleLibs/libs/*.jar"></Loader>
</Context>

 

 注意:上面的配置适用于Tomcat 7.X。在Tomcat 6.0设置virtualClasspath时,需要列举出具体的jar,即不能使用*.jar。

 

题外话:可以自定义VirtualWebappLoader,但是在Eclipse方式启动tomcat的情况下,已测的tomcat6.0无效。直接在tomcat/bin/startup.bat下可自定义。初步推断原因是eclipse在catalina.base目录下生成一个org.eclipse.jst.server.tomcat.runtime.60.loader.jar。里面重写了WebappLoader。

 

 

 

  • 大小: 8.7 KB
分享到:
评论
2 楼 yuanyuan7891 2017-06-11  
很好
1 楼 zhoujianboy 2017-03-10  
另外一个方法实现eclipse tomcat 热部署:http://www.haonanji.cn/545.html

相关推荐

    在Eclipse中Tomcat和Maven插件相互配合进行热部署

    这个过程涉及到了源码管理和自动化构建工具Maven,以及集成开发环境Eclipse中的服务器适配器Tomcat,它们共同助力实现项目的热部署,即代码修改后无需重启服务器即可看到更新效果。 首先,Maven是一个强大的项目...

    eclipse修改代码后热部署(不需要重启服务

    幸运的是,有一种方法可以实现Eclipse的热部署,让开发者在保存代码后立即看到更新的效果,而无需重启服务。 首先,我们要理解热部署的概念。热部署是指在不中断应用程序运行的情况下,能够动态地替换或更新应用...

    maven-eclipse-tomcat热部署

    【 Maven 热部署在 Eclipse 和 Tomcat 中的实践】 Maven 是一个强大的构建工具,广泛用于Java项目管理,它负责构建、依赖管理和项目信息管理。在开发Web应用程序时,结合Eclipse集成开发环境(IDE)和Tomcat服务器...

    Maven +Tomcat+m2eclipse的热部署(hot deploy)

    ### Maven + Tomcat + m2eclipse 的热部署详解 #### 概述 Maven、Tomcat 和 m2eclipse 是 Java 开发中常见的工具组合,它们分别在构建管理、应用服务器以及集成开发环境中扮演着关键角色。热部署(Hot Deploy),...

    eclipse热部署插件

    总之,Eclipse热部署插件是开发者的好帮手,它通过免编译和免重启的功能,帮助我们节省了大量宝贵的时间,使我们能够更加专注于代码的编写和项目的优化。如果你还没尝试过,强烈推荐安装并体验一下这种高效的工作...

    Tomcat热部署配置说明及工具

    总的来说,Tomcat的热部署配置可以极大地提高开发效率,减少因频繁重启带来的等待时间。JRebel作为一款优秀的热部署工具,能进一步简化这个过程,让开发者更加专注于代码的编写和调试。无论是手动配置还是借助工具,...

    tomcat热部署包

    总的来说,Tomcat热部署技术是Java Web开发中的一个重要优化手段,它通过减少重复的部署和重启操作,提升了开发效率,让开发者可以更加专注于代码的质量和功能实现。同时,通过使用合适的工具和插件,可以进一步简化...

    Eclipse/tomcat 如何实现热部署和热启动

    热部署和热启动是提高开发效率的重要特性,可以使开发人员在无需重启服务器的情况下更新和部署应用。 热部署是指在服务器运行状态下,重新部署整个Web应用,这时服务器会清空之前的内存,重新加载新部署的应用。热...

    eclipse上如何进行热部署

    eclipse热部署配置详解 ...eclipse热部署配置可以提高开发和测试效率,减少重启服务器的次数。但是,需要正确地配置服务器和项目的部署方式,以确保热部署的成功。同时,热部署也需要服务器支持热部署机制。

    Tomcat 热部署

    【描述】:Tomcat热部署 Tomcat的热部署功能使得开发人员能够在开发过程中实时看到代码更改的效果,而无需重新启动服务器。这对于快速迭代的项目尤其重要,因为它节省了频繁重启服务器的时间。然而,Tomcat默认并不...

    tomcat热部署+操作文档,修改任何java后台文件也不需要重启

    本压缩包提供的“tomcat热部署+操作文档”旨在帮助用户实现这一功能。 首先,我们要理解什么是Tomcat的热部署。热部署是指在应用程序运行时,能够动态替换或更新应用的类文件或资源文件,而无需停止或重启服务器。...

    eclipse tomcat插件

    此外,插件还支持热部署,即在不重启服务器的情况下更新应用。 3. **启动与停止服务器**:用户可以在Eclipse内部启动、停止、重启Tomcat服务器,方便进行调试和测试。 4. **日志查看**:Eclipse的Console视图会...

    jreloader实现tomcat热部署

    本文将详细介绍如何利用 `jreloader` 在 Eclipse 集成开发环境中的 Tomcat 以及 Linux 上的 Tomcat 实现 Java 类文件的热部署。 #### 二、jreloader 简介 `jreloader` 是一款开源工具,它可以在运行时重新加载已经...

    eclipse中的tomcat插件

    5. **热部署**:使用第三方插件如JRebel,可以在不重启服务器的情况下,实现类和资源的热替换,提升开发效率。 总之,Eclipse的Tomcat插件为开发者提供了一个集成化的环境,使得Tomcat服务器的管理和应用部署变得...

    让独立部署的tomcat也支持热部署(不依赖Eclipse或MyEclipse)

    为了解决这一问题,"让独立部署的tomcat也支持热部署(不依赖Eclipse或MyEclipse)"的主题应运而生。这里我们将探讨如何借助JRebel插件实现这一目标,以及在配置过程中需要注意的细节。 JRebel 是一个强大的热部署...

    Sysdeo Eclipse Tomcat

    Sysdeo Eclipse Tomcat提供了自动部署功能,只需将项目添加到插件管理的服务器实例中,就能自动将项目发布到Tomcat服务器,减少了手动复制文件的繁琐步骤。 4. **热更新** 开发者修改代码后,无需重启服务器,...

    eclipse热部署

    ### Eclipse热部署详解 #### 一、什么是热部署 热部署(Hot Deployment)是指在不重启应用程序的情况下,更新代码并让这些更改立即生效的技术。在软件开发过程中,频繁的重启服务器不仅消耗时间,还可能打断开发...

    eclipse-tomcat插件

    5. **热部署**:当代码发生变化时,插件支持自动检测并重新部署应用,无需手动重启服务器,提升了开发效率。 为了充分利用这个插件,开发者需要确保Eclipse和Tomcat服务器的版本兼容,并正确配置插件以连接到本地或...

Global site tag (gtag.js) - Google Analytics