jvisualvm连接Docker中的Tomcat

4 篇文章 0 订阅
3 篇文章 0 订阅

jvisualvm连接Docker中的Tomcat

本文将介绍如何使用jvisualvm连接上Docker中的Tomcat,使用到的SpringBoot只是一个简单返回字符串的项目,不包含任何数据库配置。

准备SpringBoot war包

操作手顺

  1. 在pom.xml里设置<packaging>war</packaging>
  2. 在pom.xml里找到spring-boot-starter-web依赖节点,将之间的内容删除,

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-web</artifactId>

    <!-- 移除嵌入式tomcat插件 -->

    <exclusions>

        <exclusion>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-tomcat</artifactId>

        </exclusion>

    </exclusions>

</dependency>

  1. 添加servlet-api的依赖

<dependency>

    <groupId>javax.servlet</groupId>

    <artifactId>javax.servlet-api</artifactId>

    <version>4.0.1</version>

    <scope>provided</scope>

</dependency>

  1. 修改启动项
@SpringBootApplication
public class SpringBootStartApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
    
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(DemoApplication.class);
    }

}
  1. 打包部署
    在pom.xml目录下,输入命令行mvn clean package,然后去项目的target目录下拿到war,复制到windows下的tomcat的webapps,启动tomcat,试一下war是否可以运行。

注意

访问项目的路径要加上项目名,比如我的项目打包以后的war是demo-0.0.1-SNAPSHOT.war,那么tomcat启动后访问的主路径就是 localhost:8080/demo-0.0.1-SNAPSHOT。

手顺来自:https://blog.csdn.net/qq_34381084/article/details/81485319.

准备Docker环境

  1. docker pull tomcat
  2. 创建Dockerfile,文件名必须是这个,没有后缀
FROM tomcat:latest

ADD demo-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/demo-0.0.1-SNAPSHOT.war
ENV CATALINA_OPTS="-Djava.rmi.server.hostname=ip  -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8971 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.rmi.port=8971"
EXPOSE 8080 8971

/usr/local/tomcat/webapps是tomcat环境的路径

Djava.rmi.server.hostname后面是Docker所处的主机地址

8080是访问项目的端口

8971是jmx连接的端口,这个端口无法访问项目,但是必须设置

  1. 复制准备好的war和Dockerfile同一目录下
  2. 在上一步所在的路径下,docker build -t 镜像名称 .(点不能少)
  3. docker run --name 容器名称 -d -p 8080:8080 -p 8971:8971 上一步构建的镜像名称

连接jvisualvm

操作手顺

  1. 输入localhost:8080/demo-0.0.1-SNAPSHOT,查看是否正常运行
  2. 在Java\jdk1.8.0_192\bin路径下打开jvisualvm.exe
  3. 添加远程主机
  4. 在远程主机下添加JMX连接
    在这里插入图片描述
    参考:https://blog.csdn.net/wang704987562/article/details/72782774

注意

Visual GC不能使用,也不能进行堆Dump,感觉功能整个都被阉割了,sad。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值