idea配置熱加載,開發不用重啓tomcat,tomcat配置熱加載,發佈項目不用重啓tomcat,在本身項目的context配置jdbc數據源

在conf/server.xml裏面的Host加入Context節點,設置如下屬性
path="/project_name"
docBase="project_name"
debug="1"
reloadable="true">java

而後在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="/">mysql

    <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;web

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;sql

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");
    }
}tomcat

數據庫的鏈接及獲取方式以下:
static DataSource ds = null;app

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

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


而後將本項目的out/artifacts/pet_mgr_war_exploded目錄重命名爲上面的project_name,而後放到tomcat的webapps目錄下面,之後更新的話,只替換project_name/WEB_INF/classes下面的東西便可函數


idea配置熱加載的方式,首先要打開idea軟件的熱加載Files->Settings->Build,Execution,Deployment->Hotswap,以下配置

而後配置運行的配置項,點擊Run->Edit Configurations,點開Server選項卡,配置以下:

而後只要idea的窗口失去焦點,就會自動編譯

相關文章
相關標籤/搜索