idea配置热加载,开发不用重启tomcat,tomcat配置热加载,发布项目不用重启tomcat,在自己项目的context配置jdbc数据源...

在conf/server.xml里面的Host加入Context节点,设置以下属性
path="/project_name"
docBase="project_name"
debug="1"
reloadable="true">

然后在Context节点加入以下子节点
<WatchedResource>META-INF/context.xml</WatchedResource>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
注:这些子节点的意思是读入你项目里的相应的配置文件
如:META-INF/context.xml这个文件里面可以配置jdbc数据源,格式如下
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/">

    <Resource
            name="jdbc/petforwebtest"
            auth="Container"
            type="javax.sql.DataSource"
            maxActive="100"
            maxWait="10000"
            maxTotal="100"
            maxIdle="30"
            maxWaitMillis="10000"
            username=""
            password=""
            driverClassName="com.mysql.cj.jdbc.Driver"
            url="jdbc:mysql://?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8" />
</Context>
WEB-INF/web.xml可以配置tomcat启动时的初始化函数执行,格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    
    <listener>
        <listener-class>com.common.myInit</listener-class>
    </listener>
</web-app>
com.common.myInit是要执行的类的全路径
myInit类需实现ServletContextListener接口
package com.common;

import javax.servlet.ServletContainerInitializer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;

public class myInit implements ServletContextListener {
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("init pet-mgr");
        DbUtils.initDataSource();
    }

    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("destroy pet-mgr");
    }
}

数据库的连接及获取方式如下:
static DataSource ds = null;

    public static void initDataSource(){
        try {
            Context ctx = new InitialContext();
            ds = (DataSource)ctx.lookup("java:comp/env/jdbc/petforwebtest");
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    public static Connection getConnect(){
        try {
            return ds.getConnection();
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }
    }


然后将本项目的out/artifacts/pet_mgr_war_exploded目录重命名为上面的project_name,然后放到tomcat的webapps目录下面,以后更新的话,只替换project_name/WEB_INF/classes下面的东西即可


idea配置热加载的方式,首先要打开idea软件的热加载Files->Settings->Build,Execution,Deployment->Hotswap,如下配置

idea配置热加载,开发不用重启tomcat,tomcat配置热加载,发布项目不用重启tomcat,在自己项目的context配置jdbc数据源...

然后配置运行的配置项,点击Run->Edit Configurations,点开Server选项卡,配置如下:

idea配置热加载,开发不用重启tomcat,tomcat配置热加载,发布项目不用重启tomcat,在自己项目的context配置jdbc数据源...

然后只要idea的窗口失去焦点,就会自动编译

转载于:https://my.oschina.net/u/222749/blog/2907536