编译Java类后不重启Tomcat有两种方式:热部署、热加载
Eclipsetomcat如何实现热部署和热启动
具体方法如下:
第一步: Tomcat安装目录下,修改 conf/server.xml 中的 Host 配置,设置其reloadable属性为true,即在Host标签中添加 reloadable="true"这一句,重启Tomcat使配置文件生效。
第二步:在conf文件夹中的web.xml文件中添加
不过我们需要在每次部署新项目的时候重新去更改这个配置我们可以观察每次部署新项目的时候serverxml这个文件的动态变化设置完成之后如果启动项目热加载并没有生效那么勾选eclipseprojectbuildautomatically加上自动编译
Eclipsetomcat如 何 实 现 热 部 署 和 热 启 动
eclipse配置热启动:
在基于Java的实现热部署、热加载的过程中,类装入器扮演着重要的角色。类装入器不能重新装入一个已经装入的类,否则 会报ng.LinkageError,但只要使用一个新的类装入器实例,就可以将类再次装入一个正在运行的应用程序。一般debug 模式都支持热加载。
但我在这里遇到了eclipse使用debug启动却并没有热加载的状况,这样对于开发来说是非常耗时的,因为每更改一次class文 件都需要重新编译。下面我就如何使用eclipse进行热加载,做一个简单介绍:
1、 热部署:就是容器状态在运行的情况下重新部署整个项目.在这种情况下一般整个内存会清空,重新加载.简单来说就是 Tomcat或者其他的web服务器会帮我们重新加载项目.这种方式可能会造成session丢失等情况。
2、热加载:就是容器状态在运行的情况下重新加载改变编译后的类.在这种情况下内存不会清空,sessin不会丢失,但容易造成内 存溢出,或者找不到方法。因为内存无法转变成对像. 一般改变类的结构和模型就会有异常,在已经有的变量和方法中改变是不 会出问题的。
重启tomcat服务的方法
重启tomcat服务的方法在重启Tomcat 服务之前,你需要先停止当前正在运行的Tomcat 服务,然后再重新启动服务。
以下是在不同操作系统上重启Tomcat 服务的方法:在Windows 操作系统上:1. 打开命令行终端:按下“Win + R”组合键,打开“运行”对话框,输入“cmd”并按下“Enter”键,打开命令行终端。
2. 停止Tomcat 服务:在命令行终端中输入以下命令,停止当前正在运行的Tomcat 服务:C:\path\to\tomcat\bin\shutdown.bat其中,“C:\path\to\tomcat\”是你的Tomcat 安装目录。
3 等待服务停止:等待几秒钟,直到命令行终端输出“INFO: Server shutdown completed.”的消息,表示Tomcat 服务已经停止。
4. 启动Tomcat 服务:在命令行终端中输入以下命令,启动Tomcat 服务:C:\path\to\tomcat\bin\startup.bat等待几秒钟,直到命令行终端输出“INFO: Server startup in XXX ms”的消息,表示Tomcat 服务已经启动。
在Linux 或macOS 操作系统上:1. 打开终端:打开终端程序,可以在启动菜单或者应用程序中找到。
2. 停止Tomcat 服务:在终端中输入以下命令,停止当前正在运行的Tomcat 服务:/path/to/tomcat/bin/shutdown.sh其中,“/path/to/tomcat/”是你的Tomcat 安装目录。
3. 等待服务停止:等待几秒钟,直到终端输出“INFO: Server shutdown completed.”的消息,表示Tomcat 服务已经停止。
4. 启动Tomcat 服务:在终端中输入以下命令,启动Tomcat 服务:/path/to/tomcat/bin/startup.sh等待几秒钟,直到终端输出“INFO: Server startup in XXX ms”的消息,表示Tomcat 服务已经启动。
Tomcat工作原理详解
六、管理
1、用户配置 在进行具体Tomcat管理之前,先给tomcat添加一个用户,使这个用户有权限来进行管理。 打开conf目录下的tomcat-users.xml文件,在相应的位置添加下面一行:
<user name="user" password="user" roles="standard,manager"/> 然后重起tomcat,在浏览器中输入http://localhost:8080/manager/,会弹出对话框,输入上面的用户 名和密码即可。
System($CLASSPATH/*.class和指定的jar)
Common($CATALINA_HOME/common 下的classes,lib,endores三个子目录)
Catalina ($CATALINA_HOME/server/下的classes和lib目录仅对Tomcat可见)
&Shared($CATALINA_HOME/shared/下的classes和lib目录以及$CATALINA_HOME/lib目录)仅对Web应用程序可见,对Tomcat不可见WebApp($WEBAPP/Web-INF/*仅对该WEB应用可见classes/*.class lib/*.jar)
3、会话超时的设置 设置session 的过期时间,单位是分钟; <session-config> <session-timeout>30</session-timeout> </session-config>
4、过滤器的设置 <filter> <filter-name>FilterSource</filter-name> <filter-class>project4. FilterSource </filter-class> </filter> <filter-mapping> <filter-name>FilterSource</filter-name> <url-pattern>/WwwServlet</url-pattern> (<url-pattern>/haha/*</url-pattern>) </filter-mapping>
热部署原理
热部署原理
热部署是指在不停机的情况下更新软件代码或配置文件,从而实现系统的无缝升级或变更。
它可以提高软件开发和维护的效率,减少因为重启系统而带来的停机时间和用户的不便。
热部署的实现原理主要依赖于以下几个要素:
1. 类加载器:热部署的核心是通过动态的类加载器来加载新的类版本。
类加载器负责从指定的位置加载类文件,并将其定义为Java虚拟机可以识别的类。
在热部署过程中,新的类文件被加载到内存中,替换旧的类定义。
2. 类的版本控制:为了实现热部署,每个类都需要有一个版本号或时间戳。
当检测到新的类版本时,旧的类实例会被替换成新的类实例,从而实现代码的更新。
类的版本控制可以通过在类加载器中进行实现,或者使用特定的工具和框架来管理。
3. 资源的热替换:除了类文件,热部署还需要实现对其他资源文件的更新,例如配置文件、页面模板等。
这些资源文件的热替换可以通过监控文件系统的变化,或使用专门的文件监控工具来实现。
4. 资源的重新加载:在热部署过程中,旧的资源需要被重新加载,以确保系统能够立即获得最新的配置信息和资源文件。
为了实现资源的重新加载,可以使用缓存机制或者启用自动刷新功能。
总的来说,热部署的原理是通过动态类加载和资源替换来实现系统的无停机更新。
它可以大大提高开发和维护的效率,同时降低了因为重启系统而带来的停机时间和用户的不便。
tomcat基本操作
tomcat基本操作
1. 启动Tomcat:进入Tomcat的bin目录,执行startup.bat (Windows)或startup.sh(Linux)脚本;
2. 关闭Tomcat:进入Tomcat的bin目录,执行shutdown.bat (Windows)或shutdown.sh(Linux)脚本;
3. 部署一个Web应用程序:将具有.war文件扩展名的Web应用程序文件复制到$CATALINA_HOME/webapps目录中,然后等待Tomcat启动自动解压缩并部署;
4. 卸载一个Web应用程序:删除
$CATALINA_HOME/webapps目录中具有相应应用程序文件夹名称的文件夹;
5. 查找Tomcat版本号:进入Tomcat的bin目录,运行version.bat(Windows)或version.sh(Linux)脚本;
6. 查看运行时日志:进入Tomcat的logs目录,并查看各个日志文件;
7. 修改Tomcat端口号:修改
$CATALINA_HOME/conf/server.xml文件中的Port属性;8. 配置Tomcat环境变量:将$CATALINA_HOME/bin添加到系统环境变量中;
9. 配置Tomcat的JVM参数:修改
$CATALINA_HOME/bin/catalina.sh(Linux)或catalina.bat (Windows)文件;
10. 配置Tomcat的安全:修改
$CATALINA_HOME/conf/tomcat-users.xml文件。
java热加载原理
java热加载原理
Java热加载原理
Java热加载是指在应用程序运行过程中,动态地更新类的定义,而无
需重新启动应用程序。
这种技术可以提高应用程序的可用性和灵活性,同时也可以减少应用程序的停机时间。
Java热加载的原理是通过Java虚拟机(JVM)的类加载器实现的。
在Java中,类加载器负责将类加载到JVM中,并将其转换为可执行代码。
当应用程序需要使用一个类时,JVM会检查该类是否已经加载到内存中。
如果没有加载,则会调用类加载器来加载该类。
在Java热加载中,类加载器会监视类文件的变化。
当类文件发生变化时,类加载器会重新加载该类,并将其转换为可执行代码。
这样,应
用程序就可以使用最新的类定义,而无需重新启动应用程序。
Java热加载的实现方式有多种,其中最常见的方式是使用Java的反射机制。
反射机制允许程序在运行时动态地获取类的信息,并调用类的
方法。
通过反射机制,程序可以在运行时重新加载类,并更新类的定义。
Java热加载的优点是可以提高应用程序的可用性和灵活性。
例如,在一个Web应用程序中,如果需要更新一个类的定义,传统的方式是停止应用程序,更新类文件,然后重新启动应用程序。
这样会导致应用程序的停机时间较长,影响用户体验。
而使用Java热加载技术,可以在不停止应用程序的情况下更新类的定义,从而减少应用程序的停机时间。
总之,Java热加载是一种非常有用的技术,可以提高应用程序的可用性和灵活性。
通过了解Java热加载的原理和实现方式,开发人员可以更好地利用这种技术,从而提高应用程序的性能和用户体验。
tomcat 的热更新 原理
tomcat 的热更新原理Tomcat的热更新原理Tomcat是一个常用的Java Web服务器,用于运行Java Web应用程序。
在开发和部署过程中,我们经常需要对应用程序进行更新和调试,而传统的方式是停止Tomcat服务,然后重新部署应用程序。
这种方式效率低下,对于大型应用程序来说,停止和启动Tomcat服务可能需要花费相当长的时间。
为了解决这个问题,Tomcat引入了热更新机制,使得我们可以在不停止Tomcat服务的情况下实现应用程序的更新。
热更新是指在运行时更新应用程序的代码和资源文件,而不需要重启服务器。
Tomcat的热更新原理主要包括以下几个方面:1. 类加载器机制:Tomcat使用自定义的类加载器来加载应用程序的类。
在热更新过程中,Tomcat会检测到类文件的变化,并使用新的类加载器加载更新后的类。
这样就实现了应用程序代码的热更新。
2. 资源文件的热更新:除了类文件外,应用程序通常还包含一些资源文件,比如配置文件、静态页面等。
Tomcat的热更新机制也支持这些资源文件的热更新。
当资源文件发生变化时,Tomcat会重新加载这些文件,使得应用程序可以立即使用最新的资源。
3. 热更新的触发机制:Tomcat提供了多种触发热更新的方式。
其中一种方式是通过修改web.xml文件中的一个特殊的Servlet参数来触发热更新。
当这个参数的值发生变化时,Tomcat会重新加载应用程序。
另一种方式是通过JMX(Java Management Extensions)来触发热更新。
通过JMX可以动态修改Tomcat的配置信息,从而触发热更新。
4. 热更新的生效范围:Tomcat的热更新机制一般只对应用程序的代码和资源文件生效,而不会影响到Tomcat本身的配置文件和其他的应用程序。
这样可以确保热更新的安全性和可靠性。
总结起来,Tomcat的热更新机制通过类加载器机制和资源文件的重新加载实现了应用程序的热更新。
从Java的类加载机制谈起:聊聊Java中如何实现热部署(热加载)
从Java的类加载机制谈起:聊聊Java中如何实现热部署(热加载)⼀ class的热替换ClassLoader中重要的⽅法loadClassClassLoader.loadClass(...)是ClassLoader的⼊⼝点。
当⼀个类没有指明⽤什么加载器加载的时候,JVM默认采⽤AppClassLoader加载器加载没有加载过的class,调⽤的⽅法的⼊⼝就是loadClass(…)。
如果⼀个class被⾃定义的ClassLoader加载,那么JVM也会调⽤这个⾃定义的ClassLoader.loadClass(…)⽅法来加载class内部引⽤的⼀些别的class⽂件。
重载这个⽅法,能实现⾃定义加载class的⽅式,抛弃双亲委托机制,但是即使不采⽤双亲委托机制,⽐如ng包中的相关类还是不能⾃定义⼀个同名的类来代替,主要因为JVM解析、验证class的时候,会进⾏相关判断。
defineClass系统⾃带的ClassLoader,默认加载程序的是AppClassLoader,ClassLoader加载⼀个class,最终调⽤的是defineClass(…)⽅法,这时候就在想是否可以重复调⽤defineClass(…)⽅法加载同⼀个类(或者修改过),最后发现调⽤多次的话会有相关错误:ng.LinkageErrorattempted duplicate class definition所以⼀个class被⼀个ClassLoader实例加载过的话,就不能再被这个ClassLoader实例再次加载(这⾥的加载指的是,调⽤了defileClass(…)放⽅法,重新加载字节码、解析、验证。
)。
⽽系统默认的AppClassLoader加载器,他们内部会缓存加载过的class,重新加载的话,就直接取缓存。
所与对于热加载的话,只能重新创建⼀个ClassLoader,然后再去加载已经被加载过的class⽂件。
⼆ class卸载在Java中class也是可以unload。
简述tomcat工作原理
简述tomcat工作原理
Tomcat是一个开源的Java Servlet容器,它充当了一个Web服务器的角色,并能够托管Java的Web应用程序。
Tomcat的工
作原理可以简述如下:
1. Tomcat启动时,会读取配置文件,如server.xml和web.xml。
这些配置文件包含了Tomcat的各种设置,如端口号、虚拟主
机配置、Servlet和其他Web应用程序的部署信息等。
2. Tomcat监听指定的端口号(默认为8080),等待客户端的
连接请求。
3. 当有客户端请求访问Tomcat时,Tomcat接收到请求后,会
根据请求的URL路径找到对应的Web应用程序。
4. Tomcat会按照配置文件中的规则,将请求交给对应的Servlet进行处理。
Servlet是Java编写的,用于处理客户端的HTTP请求和生成HTTP响应的组件。
5. Servlet会根据客户端的请求进行处理,并生成相应的HTTP
响应,然后将响应返回给Tomcat。
6. Tomcat将HTTP响应发送给客户端,完成一次请求-响应周期。
7. Tomcat会维护一个线程池,用于处理多个并发请求。
这样
可以提高性能和响应速度。
总之,Tomcat作为Java Servlet容器,通过监听端口、解析请求、调用相应的Servlet和返回响应等步骤,实现了Web应用程序的运行。
它可以处理并发请求,提供了稳定和高效的Web服务。
tomcat原理
tomcat原理Tomcat是Apache软件基金会开发的一款Servlet容器(也称为Web服务器),主要用于运行Java Servlet和JavaServer PagesJSP)程序,可以说Tomcat是Web应用程序服务器的一种具体实现。
Tomcat 要求Java Runtime Environment(JRE)8或更高版本。
Tomcat中核心组件有三个:Catalina、Coyote和Jasper。
其中Catalina是容器,它用于管理和执行应用程序;Coyote是HTTPD (HyperText Transfer Protocol Daemon),它负责处理HTTP请求;Jasper则是编译JSP(JavaServer Pages)并生成Servlet。
Tomcat运行时会装载一个或多个web应用,每个运行的web应用将在Tomcat内部被表示为一个Context。
Context是Tomcat中最重要的对象,它集成了Web应用的配置信息,可以在catalina.properties文件中查看。
Tomcat的另一个关键部件是Valves,Valves可以作为Tomcat的拦截器,在用户请求进入Tomcat并在返回用户前进行相关处理。
Tomcat还提供了一些有用的拦截器(Filter),例如对URL、请求参数、HTTP Header信息以及客户端IP等信息进行拦截过滤,以及安全拦截器,它主要以用户名和密码的形式进行认证,防止未经授权的访问。
Sumcat允许用户通过部署描述符(Deployment Descriptor)来控制应用的行为,以及通过servlet来控制Web应用的访问权限,并且可以设置URL映射,用于将某一特定URL映射到某一特定的Servlet/JSP页面。
在Tomcat中,用户可以通过web.xml文件来配置这些拦截器,以及Servlet/JSP等组件。
Tomcat还提供了一种线程模型,它拥有三种类型的线程:请求处理线程、守护线程和定时任务线程。
tomcat reloadable原理(一)
tomcat reloadable原理(一)tomcat reloadable原理概述在使用tomcat进行java web应用开发时,我们常常需要对应用程序进行热部署。
而其中一个重要的特性就是reloadable(可重新加载)。
那么reloadable原理是怎么样的呢?基本概念在深入探讨reloadable原理之前,我们需要了解几个基本概念:1. ClassLoader(类加载器)ClassLoader是Java中的一个重要概念,它用于加载Class文件,并生成对应的Class对象。
在tomcat中,每个web应用程序都有自己的ClassLoader,用于加载该应用程序的类。
2. ServletContext(Servlet上下文)ServletContext是Java中的一个接口,它代表了一个web应用程序的环境信息。
每个web应用程序都有一个对应的ServletContext对象。
3. ContextLoaderListener(上下文加载监听器)ContextLoaderListener是一个Servlet监听器,它负责在web应用程序启动时加载ServletContext,并将其存储在一个全局可访问的位置。
4. WebappClassLoader(Web应用程序ClassLoader)WebappClassLoader是tomcat中的一个特殊ClassLoader,它负责加载web应用程序的类。
每个web应用程序都有一个对应的WebappClassLoader。
reloadable原理基于以上的基本概念,我们可以得出如下的reloadable原理:1.当tomcat启动时,会创建一个WebappClassLoader,并将其传递给ContextLoaderListener。
2.ContextLoaderListener将WebappClassLoader存储在ServletContext中,以供其他组件使用。
【Tomcat】web应用的部署以及发布
【Tomcat】web应⽤的部署以及发布⼀、web项⽬⽂件的⽬录结构在tomcat中所有的应⽤都是放置在CATALINA_HOME/webapps下。
由于Servlet2.2之后的版本规范规定,tomcat中应⽤的⽬录结构需要满⾜固定的格式,这样便于规范⼀致性。
放置在webapps下的⽂件通常是两种格式:⼀种压缩好的项⽬⽂件,⽐如war包!⼀种是正常的⽂件夹。
如果是war包项⽬⽂件,tomcat会在启动后⾃动的把它解压缩到当前⽬录,变成可访问的⽂件夹。
项⽬⽂件的⽬录结构如下:/apps|------/WEB-INF|------/classes 编译的字节码⽂件|------/lib 需要的类库,jar包------web.xml|------/META-INF------context.xml------普通前端页⾯,jsp等等1. web.xml ⽂件:这个⽂件⽐较重要,也叫做部署描述符,⽤于配置web应⽤的相关信息。
⽐较常⽤的是监听器,过滤器,servlet,session管理,初始化参数等。
需要注意的是:注意相同项的配置顺序,tomcat会按照配置顺序进⾏执⾏或者加载。
需要注意的地⽅⽐如过滤器,还有⼀些页⾯的加载。
2. classes⽂件夹:放置编译出的.class⽂件,⽐如你定义的某个包:com.test.hello.java 经过tomcat的启动发布后,就会在响应的应⽤下的classes⽂件夹下找到com/test/hello.class⽂件。
类似的servlet, bean, 普通的java类都会编译到此处。
3. lib ⽂件夹:放置项⽬应⽤的jar包。
⽐如使⽤了SSH,在项⽬引⽤了jar包,最后都会放在这⾥。
这个⽂件夹下的jar⽂件是不会编译到classes⽂件夹下的。
详细信息参考tomcat的类加载机制。
这个⽂件夹下的jar包是属于应⽤⾃⼰使⽤的。
tomcat根⽬录下还有⼀个lib⽂件夹,这⾥⾯存放着基本的servlet和jsp需要的jar包。
重启tomcat服务的方法
重启tomcat服务的方法如何重启Tomcat服务Tomcat是一个免费的开源Web应用服务器,支持Servlet和JSP 规范,用于在Web服务器上运行Java代码。
它也是一种应用服务器,可以运行Java应用程序,提供Web服务并处理HTTP请求。
有时,您可能需要重启Tomcat服务器,以应用更新,更改配置或解决问题。
重新启动Tomcat服务器是一件简单的任务,只需执行以下步骤即可。
从控制台或图形界面运行Tomcat服务器。
然后,在控制台上,按Ctrl + C组合键来停止Tomcat服务器。
在停止Tomcat服务器后,您可以运行以下命令来重新启动Tomcat服务器:bin/catalina.sh start或者,您可以使用以下命令重新启动Tomcat服务器:bin/catalina.sh run此命令将重新启动Tomcat服务器。
您还可以使用以下命令来检查Tomcat服务器是否正常工作:bin/catalina.sh status如果您运行的是Windows操作系统,您可以使用以下命令来重新启动Tomcat服务器:bin\catalina.bat start或者,您可以使用以下命令重新启动Tomcat服务器:bin\catalina.bat run您也可以使用以下命令来检查Tomcat服务器是否正常工作:bin\catalina.bat status重新启动Tomcat服务器后,您可以检查Tomcat服务器上的应用程序是否正常工作。
如果您更改了任何配置,这些更改将生效。
重新启动Tomcat服务器是一项简单的任务,只需遵循上述步骤即可。
在重新启动Tomcat服务器之前,您应该做好准备,清楚它的工作原理,并采取必要的安全措施,以确保它的正常工作。
tomcat 知识点总结
tomcat 知识点总结Tomcat 知识点总结Tomcat 是一个开源的 Java Web 应用服务器,由 Apache 软件基金会开发和维护。
它是目前使用最广泛的Java Web 服务器之一,被广泛应用于企业级Web 应用的开发和部署。
本文将对Tomcat 的一些重要知识点进行总结和介绍。
一、Tomcat 的基本概念和特点1. Tomcat 是一个Servlet 容器和JSP 容器,它实现了Java Servlet 和 JavaServer Pages 规范,用于处理动态的 Web 内容。
2. Tomcat 是一个独立的Web 服务器,可以独立运行,也可以与其他Web 服务器(如Apache HTTP Server)配合使用,实现更强大的功能。
3. Tomcat 使用 Java 语言开发,具有跨平台的特点,可以在不同的操作系统上运行,如 Windows、Linux、MacOS 等。
二、Tomcat 的安装和配置1. 下载 Tomcat 的安装包,并解压到指定目录。
2. 配置环境变量,设置 JAVA_HOME 和 CATALINA_HOME。
3. 配置 Tomcat 的服务器端口、虚拟主机、连接池等参数。
4. 配置 Tomcat 的日志记录,可以设置日志级别和日志文件位置。
三、Tomcat 的目录结构和重要文件1. bin 目录:包含了 Tomcat 的启动和关闭脚本。
2. conf 目录:包含了Tomcat 的配置文件,如server.xml、web.xml 等。
3. lib 目录:包含了 Tomcat 运行所需的库文件。
4. webapps 目录:用于存放 Web 应用的目录,每个 Web 应用都有一个对应的目录。
5. logs 目录:用于存放 Tomcat 的日志文件。
四、Tomcat 的启动和关闭1. 启动Tomcat:运行startup.bat(Windows)或startup.sh (Linux)脚本。
关于不重启Tomcat自动加载改变的class文件
关于不重启Tomcat自动加载改变的class文件修改server.xml,在Host标签下加入以下配置<Context path="" docBase="FileManager" reloadable="true"></Context><Context path="/FileManager" docBase="FileManager" reloadable="true"></Context>第一个Context是为了ip+端口直接指向FileManger这个项目。
path代表的是URL入口,例如第一个代表localhost:8080,第二个则代表localhost:8080/FileManger。
docBase是物理路径,可以是绝对路径,也可以是相对Host标签中appBase的相对路径,而Host标签中appBase的默认值是webapps文件夹,所以这里的FileManger就代表webapps下的FileManager文件夹。
这里的path+docBase的配置就表示了ip+端口或者ip+端口+/项目名称都可以指向你的项目。
reloadable就告诉T omcat需要监控WEB-INF中的class文件,如果有变化了,就需要重新加载。
并且是重新加载整个项目的,包括web.xml等等。
但是这样修改是不会监控web.xml变化的,web.xml变了之后并不会重新加载项目。
而且直接在server.xml里配置,server.xml变化了Tomcat是不会重新加载的,必须重新启动Tomcat才会更新server.xml中的内容。
加入WatchedResource标签,首先我尝试了直接在server.xml直接加入:<Context path="" docBase="FileManager" reloadable="true"><WatchedResource>WEB-INF/web.xml</WatchedResource></Context><Context path="/FileManager" docBase="FileManager" reloadable="true"><WatchedResource>WEB-INF/web.xml</WatchedResource> </Context>但是这样并没有效果,web.xml变了后,Tomcat并没有reload,原因暂时不知道。
热部署、热加载、Debug模式等相关问题.
热部署、热加载、Debug模式等相关问题.最近,公司要做⼀个新项⽬。
我要先把环境确定好。
正常使⽤Myeclipse就可以了。
但上Myeclispe的官⽹上不去了。
⼀开始我以为是GFW⼲的,后来⽹上说因为中国盗版太多了。
Myelipse官⽅把所有中国的IP都被封了。
哎~~~。
也是给⼈家的印象太不好了。
不爱让我们⽤,我就不⽤了。
上下了⼀个Eclipse IDE for Java EE Developers,基于WTP的。
⼀开始的使⽤还凑合。
但到热部署的时候,⽤Tomcat⾃带的热部署会引起随TOMCAT⾃动启动的Servlet 再次运⾏,实际相当于重启了tomcat。
这是个⼤问题啊。
想当年在做客服V3的时候,每次修改⼀个类,都要重启应⽤服务器,当时是weblogic+Struts1+sping+hibernate。
机器还慢,是⼀个痛苦的过程。
及其影响效率。
后来我在Myeclipse上解决了这个问题,客服V4的开发就没有这个问题。
但怎么解决的忘了。
在硬盘中⼀顿翻找,最后终于找到了:Myeclipse配置Tomcat4时,其中Run mode 和Debug mode决定了修改.java⽂件后,能否⾃动发布既实现热部署.txt Myeclipse配置Tomcat4时,其中Run mode 和Debug mode决定了修改.java⽂件后,能否⾃动发布。
Run mode 需要重启Tomcat 4才能让修改后的.java⽂件⽣效Debug mode 修改.java⽂件后,马上⽣效当初被郁闷了那么长时间的问题,和这么重要的解决⽅法,我咋能忘呢?感叹⼀下时间的威⼒和⾃⼰的记性。
然后上⽹搜索了⼀下,对这个问题⼜有了⼀个全新的、全⾯的、深刻的认识。
先说⼀下我对热部署的需求:就是我改了⼀个.java⽂件,这个修改可以在运⾏中的web服务器中马上⽣效。
⽽不⽤重启web服务器。
以下为引⽂:This new feature encapsulates the ability to substitute modified code in a running application through the debugger APIs.——'HotSwapping' using JVM:http://www.jug.mk/blogs/ipenov/entry/hotswapping_using_jvm⽹上很多⼈误解热部署和热加载的概念,所以造成乱配置的⾏为,这⾥提⽰⼀下.热部署:就是容器状态在运⾏的情况下部署或者重新部署整个项⽬.在这种情况下⼀般整个内存会清空,重新加载.简单来说就是Tomcat或者其他的web服务器会帮我们重新加载项⽬.这种⽅式可能会造成sessin丢失等情况.热加载:就是容器状态在运⾏的情况下重新加载改变编译后的类.在这种情况下内存不会清空,sessin不会丢失,但容易造成内存溢出,或者找不到⽅法。
java修改配置文件无需重启服务器方法
Java开发Web程序中修改类文件和配置文件不重启服务器的方法关键词Java Web 开发类配置文件重启服务器tomcat JavaRebel 热加载重新部署刘长炯开发环境1. JDK2. MyEclipse3. Tomcat4. Struts25. JavaRebel/JRebel拜读了刘长炯老师的Java开发生产力视频: 不重新部署Web 模块热加载类(JavaRebel) 和两招提高Struts2开发生产力(2008.11.14更新)!,从中学得很多,也学习里面的精华,自己实际操作的一下,发现非常有效率,推荐大家阅读刘长炯老师的这两篇博文。
大家知道,在我们开发web项目的时候重启应用服务器是我们最烦恼的事情,每次修改类文件或者配置文件后,我们必须重启服务器来重新加载,使得我们的修改才能及时的显现出来,这个时候,我们只能等待服务器的重启,一般都需要20几秒,每天重启服务器的次数多了,我们开发项目的效率就大大折扣了,所以我们要寻找一个高效率开发web项目的方法,刘长炯老师就给我们一个非常好的途径。
在这里,依着刘长炯老师的思路,我们来个“三步走“第一步:修改struts.properties来实现热加载Struts2的配置文件(注:开发环境是在Struts2下)在src目录下新建一个文件struts.properties,打开编辑,加入以下语句#Whether Struts is in development mode or notstruts.devMode=true#Whether the localization messages should automatically be reloadedstruts.i18n.reload=true#Whether to reload the XML configuration or notstruts.configuration.xml.reload=true上面的语句分别为是否为struts开发模式、是否国际化信息自动加载、是否加载xml配置(true,false),修改后重启服务器后,就能体现效果。
解决ideaspringboot修改html等不重启即时生效的问题
解决ideaspringboot修改html等不重启即时⽣效的问题⼀、spring-boot-devtools在pom中直接引⼊依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency>设置以下两项(第⼀项如已设置直接设置第⼆项)1) “File” -> “Settings” -> “Build,Execution,Deplyment” -> “Compiler”,选中打勾 “Build project automatically” 。
2)组合键:“Shift+Ctrl+Alt+/” ,选择 “Registry” ,选中打勾 “compiler.automake.allow.when.app.running”补充:彻底解决springboot修改页⾯和代码会⾃动重启1.解决修改代码会重启:导⼊jar包<dependency><groupId>org.springframework</groupId><artifactId>springloaded</artifactId><version>1.2.8.RELEASE</version></dependency>2.设置启动arguments-javaagent:F:\m2\m3\repository\org\springframework\springloaded\1.2.8.RELEASE\springloaded-1.2.8.RELEASE.jar -noverifyVM arguments这⾥的放springloaded-1.2.8.RELEASE.jar的绝对路径3.application.yml配置1.解决thymeleaf修改代码重启问题导⼊jar包<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency>2.application.yml配置spring.thymeleaf.cache=false以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
JRebel插件使用详解
JRebel插件使⽤详解简介JRebel是⼀套JavaEE开发⼯具。
Jrebel 可快速实现热部署,节省了⼤量重启时间,提⾼了个⼈开发效率。
JRebel是⼀款JAVA虚拟机插件,它使得JAVA程序员能在不进⾏重部署的情况下,即时看到代码的改变对⼀个应⽤程序带来的影响。
JRebel使你能即时分别看到代码、类和资源的变化,你可以⼀个个地上传⽽不是⼀次性全部部署。
当程序员在开发环境中对任何⼀个类或者资源作出修改的时候,这个变化会直接反应在部署好的应⽤程序上,从⽽跳过了构建和部署的过程,可以省去⼤量的部署⽤的时间。
JRebel是⼀款JVM插件,它使得Java代码修改后不⽤重启系统,⽴即⽣效。
IDEA上原⽣是不⽀持热部署的,⼀般更新了 Java ⽂件后要⼿动重启 Tomcat 服务器,才能⽣效,浪费时间浪费⽣命。
⽬前对于idea热部署最好的解决⽅案就是安装JRebel插件。
安装第⼀步:安装插件第⼆步:在线GUID地址:在线⽣成GUID⽹址:如果失效刷新GUID替换就可以!第三步:打开jrebel 如下所⽰⾯板,选择Connect to online licensing service安装成功之后就可以通过JRebel启动项⽬。
这样修改完Java代码后,就可以通过快捷键 Ctrl+shift+F9 ⽽不再需要重启站点这样繁琐浪费时间的操作了。
相关设置设置成离线⼯作模式设置⾃动编译要想实现热部署,⾸先需要对Intellij按如下进⾏设置:1. 由于JRebel是实时监控class⽂件的变化来实现热部署的,所以在idea环境下需要打开⾃动变异功能才能实现随时修改,随时⽣效。
2. 打开运⾏时编译设置compiler.automake.allow.when.app.running快捷键ctrl+shift+A,搜索:registry或者按快捷键 Ctrl+Shift+Alt+/ ,选择 Registry使⽤运⾏项⽬时要点击图中红框中的按钮,即可运⾏:第⼀个按钮是Run,第⼆个按钮是Debug。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常用的一定第二种:热加载了,设置如下!
在tomcat的conf中的server.xml中的host设置中添加<Context path=”/test”
docBase=”D:\develop\test”
tomcat把那一些时常被客户端拜候的静态资源(如:HTML文档、图片文件和声响文件等)放在缓存中,当客户再
次拜候有关静态资源时,Tomcat只需直接从缓存中读取相关数据,无须反复读取文件系统中的文件。该属
性的默认值为true.
6>cacheMaxSize:设定静态资源的缓存的最大容量,以K为单元。要是,要是该属性为100,表示100K,默认
第一个路径是jar包的绝对路径,第二个地址是说想让哪个目录下的类更改后不重启服务。
如果Optional Java VM arguments输入框中有其他参数,用空格隔开。
5、发布项目,就能在控制台看到效果。
类就可以改变之后不用重启tomcat。
目前流行的服务器都支持。详细看官方网站。
3、会弹出一个安装界面(自己看,很好懂)
4、在MyEclipse中配置,找到服务器(如tomcat)的配置页面,在tomcat的jdk配置页面的Optional Java VM arguments输入框中加如下参数:
-noverify -javaagent:D:\dev\JRebel\jrebel.jar -Drebel.dirs=D:\dev\apache-tomcat-6.0.20\webapps\nmr
下载的压缩包文件名为jrebel-setup.zip (7.8 MB)
可参考:/blog/577931
debug=”0″ privileged=”true” reloadable=”true”/>
reloadable=”true” !最重要
它内里有很多属性,意义如下:
1>path:指定拜候该web应用的URL进口;
2>docBase:指定web应用的文件路径,可以给定绝对路径,也可以给定相对于<Host>的appBase属性【默认
同志们,使用tomcat6.0的注意了啊。当你使用我的方法设置tomcat后,你的myeclipse报如下错误时,不要惊慌,这是正确的,且听我解释。
console报错:
警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property ‘ debug’ to ’0′ did not find a matching property. 这是由于你使用的是tomcat6.0,由于它路程经过过程其他途径对debug=”0″这个属性进行了使成为事实,所以这搭不能再有此属性。你只要将它去掉,就能够没事了启动了。 也就是说去掉debug=”0“,万事OK,呵呵。
指向tomcat的webapps】的相对于径;要是Web应用是个war文件,则指定war文件的路径。
3>className:指定使成为事实Context组件的Java类的名字,这个Java类必须使成为事实org.apache.catalina.Context
接口,该属性的默认值为org.apache.catalina.StandardContext。
4>reloadable:要是这个属性设置为true,Tomcat服务器在运行状况下会监视在WEB-INF/classess和WEB-
INF/lib目次下的class文件的改动,以及监视web应用的WEB-INF/web.xml文件的改动。要是检测到的class
文件或者web.xml文件被更新,服务器会自动加载Web应用。该属性的默认值为false.在web应用的开发和调
为10240(即10M)。
7>workDir:指定web应用的工作目次。Tomcat在运行时会把与这个web应用相关的临应试文章件放在此目次下。
8>uppackWar:要是此项设为true,表示将把web应用的war文件睁开为开放目次布局后再运行。要是设为
false,则直接运行war文件。该属性的默认值为true。
======================================================================
还有一种方式:使用第三方工具
/jrebel/
1、解压缩包
2、执行java -jar jrebel-setup.jar
试阶段,把reloadable设为true,可以方便对web应用的调试。在web应用正式发布阶段,把reloadable设为
false,可以减低tomcat的运行负荷,提高Tomcat的运行性能。
5>cachingAllowed:要是为true,标示允许启用静态资源的缓存。使用缓存能提高拜候静态资源的效率。
编译Java类后不重启Tomcat有两种方式:热部署、热加载 (转)
2011年02月23日 星期三 17:07
不重启Tomcat有两种方式:热部署、热加载
热部署:容器状况在运行时重新部署整个项目。这类环境下一般整个内存会清空,重新加载,这类方式
有可能会造成sessin丢失等环境。tomcat 6确实可以热部署了,而且对话也没丢.
热加载:最好是在调试过程中Байду номын сангаас用,免患上整个项目加载,Debug标准样式支持热加载。容器状况在运行时重
新加载转变编译后的类。在这类环境下内存不会清空,sessin不会丢失,但容易造成内存溢出,或者找不到方
法。一般转变类的布局和模型就会有异常,在已经有的变量和方法中转变是不会出问题的(Eclipse、