Home Java javaTutorial Implement Tomcat hot deployment in a simple way: one-click update

Implement Tomcat hot deployment in a simple way: one-click update

Jan 24, 2024 am 08:26 AM
tomcat Hot deployment One-click update

Implement Tomcat hot deployment in a simple way: one-click update

One-click update, easy to implement Tomcat hot deployment

Abstract:
As one of the most popular Java application servers, Tomcat provides flexible configuration and deployment options. However, during the development process, Tomcat needs to be manually restarted every time the code is modified, which is a very tedious task. This article will introduce an automation-based method to implement hot deployment of Tomcat using one-click update, which greatly improves development efficiency.


Introduction:
In the process of software development, frequent code modifications are normal. However, traditional application servers need to be manually restarted to make the code effective, which leads to low development efficiency. To solve this problem, many developers look for automated deployment solutions. In Java development, Tomcat is one of the most commonly used application servers. This article will introduce a method to implement Tomcat hot deployment using one-click update, and provide specific code examples.


1. Principle introduction:
Tomcat uses war files to deploy web applications. We can determine whether hot deployment is needed by monitoring the last update time of the war package. When the modification time of the war file changes, it means that the code has been updated. We can trigger Tomcat's reload action to achieve hot deployment.


2. Specific implementation:
First, we need an automatically reloaded class to trigger Tomcat's reloading action. The following is a simple implementation example:

public class HotReload {

    private static String webappsPath = "/path/to/webapps/";  // Tomcat的webapps目录

    public static void reload(String appName) {
        try {
            MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
            ObjectName serviceName = new ObjectName("Catalina:type=Manager,context=" + appName + ",host=localhost");
            mBeanServer.invoke(serviceName, "reload", null, null);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 监控war包的最后修改时间
    public static long getLastModified(String appName) {
        File warFile = new File(webappsPath + appName + ".war");
        return warFile.lastModified();
    }

    public static void main(String[] args) {
        String appName = "myApp";
        long lastModified = getLastModified(appName);
        while (true) {
            long currentModified = getLastModified(appName);
            if (currentModified > lastModified) {
                reload(appName);
                lastModified = currentModified;
                System.out.println("Reloaded " + appName);
            }
            try {
                Thread.sleep(1000);  // 每秒检查一次
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
Copy after login

In the above code, the reload method uses Java's MBeanServer to call Tomcat's overloaded method. The getLastModified method is used to obtain the last modification time of the war package. In the main method, use a loop to monitor whether the war package has changed. If it has changed, call the reload method for reloading.


3. Application practice:

  1. Compile the above code and put the generated class file into the Tomcat lib directory.
  2. Create a new folder named "Catalina" in Tomcat's conf directory, and create a new xml file in the folder. The file name is the same as your application name. For example, for an app named "myApp", the file path is "conf/Catalina/myApp.xml". Add the following content to the xml file:

    <Context reloadable="true" />
    Copy after login
  3. Add the following content to the setenv.sh (Linux) or setenv.bat (Windows) file in Tomcat's bin directory:

    export JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties -Dreloadable.app=myApp"
    Copy after login

    The "myApp" here needs to be replaced with your application name.

  4. Start Tomcat to automatically monitor and implement hot deployment.

  5. 4. Summary:
    This article introduces a method to implement Tomcat hot deployment using one-click update. By regularly monitoring the last modification time of the war package and triggering Tomcat's reload action, hot replacement of the code is achieved. This automated method greatly improves development efficiency and reduces the tedious work of manually restarting Tomcat. I hope this article can be helpful to Java developers.

    The above is the detailed content of Implement Tomcat hot deployment in a simple way: one-click update. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to deploy jar project in tomcat How to deploy jar project in tomcat Apr 21, 2024 am 07:27 AM

To deploy a JAR project to Tomcat, follow these steps: Download and unzip Tomcat. Configure the server.xml file, set the port and project deployment path. Copies the JAR file to the specified deployment path. Start Tomcat. Access the deployed project using the provided URL.

How to allow external network access to tomcat server How to allow external network access to tomcat server Apr 21, 2024 am 07:22 AM

To allow the Tomcat server to access the external network, you need to: modify the Tomcat configuration file to allow external connections. Add a firewall rule to allow access to the Tomcat server port. Create a DNS record pointing the domain name to the Tomcat server public IP. Optional: Use a reverse proxy to improve security and performance. Optional: Set up HTTPS for increased security.

Where is the tomcat installation directory? Where is the tomcat installation directory? Apr 21, 2024 am 07:48 AM

Tomcat installation directory: Default path: Windows: C:\Program Files\Apache Software Foundation\Tomcat 9.0macOS:/Library/Tomcat/Tomcat 9.0Linux:/opt/tomcat/tomcat9 Custom path: You can specify it during installation. Find the installation directory: use whereis or locate command.

How to deploy multiple projects in tomcat How to deploy multiple projects in tomcat Apr 21, 2024 am 09:33 AM

To deploy multiple projects through Tomcat, you need to create a webapp directory for each project and then: Automatic deployment: Place the webapp directory in Tomcat's webapps directory. Manual deployment: Manually deploy the project in Tomcat's manager application. Once the project is deployed, it can be accessed by its deployment name, for example: http://localhost:8080/project1.

How to check the number of concurrent connections in tomcat How to check the number of concurrent connections in tomcat Apr 21, 2024 am 08:12 AM

How to check the number of concurrent Tomcat connections: Visit the Tomcat Manager page (http://localhost:8080/manager/html) and enter your user name and password. Click Status->Sessions in the left navigation bar to see the number of concurrent connections at the top of the page.

Where is the root directory of the tomcat website? Where is the root directory of the tomcat website? Apr 21, 2024 am 09:27 AM

The Tomcat website root directory is located in Tomcat's webapps subdirectory and is used to store web application files, static resources, and the WEB-INF directory; it can be found by looking for the docBase attribute in the Tomcat configuration file.

How to check the port number of tomcat How to check the port number of tomcat Apr 21, 2024 am 08:00 AM

The Tomcat port number can be viewed by checking the port attribute of the <Connector> element in the server.xml file. Visit the Tomcat management interface (http://localhost:8080/manager/html) and view the "Status" tab. Run "catalina.sh version" from the command line and look at the "Port:" line.

How to run two projects with different port numbers in tomcat How to run two projects with different port numbers in tomcat Apr 21, 2024 am 09:00 AM

Running projects with different port numbers on the Tomcat server requires the following steps: Modify the server.xml file and add a Connector element to define the port number. Add a Context element to define the application associated with the port number. Create a WAR file and deploy it to the corresponding directory (webapps or webapps/ROOT). Restart Tomcat to apply changes.

See all articles