jdwp+rinetd 进行java 容器应用的远程调试

实际上就是一个玩法,实际上因为jdwp 是基于tcp 协议的,我们可以使用任何合适的tcp lb 工具解决(iptables 也是可以的)只是rinetd
使用起来还是比较简单的,同时包含了一些简单的访问控制还是不错的

jdwp 使用玩法

 

 

集成参考图

 

 

环境&测试

一个spring boot 应用,启动的时候开启了jdwp 协议

  • docker-compose
 
version: '3'
services:
  app:
    build: ./
    ports:
    - 8080:8080
    - 9090:9090
    networks:
      app:
        ipv4_address: 172.16.238.10
  proxy:
    build:
     context: .
     dockerfile: ./proxy-Dockerfile
    ports:
    - 19090:19090 
    networks:
      app:
        ipv4_address: 172.16.238.11
networks:
  app:
    ipam:
      driver: default
      config:
        - subnet: "172.16.238.0/24"

spring boot app dockerfile

FROM eclipse-temurin:8-jdk-alpine
WORKDIR /app
COPY app.jar /app/
COPY app.sh /app/app.sh
RUN chmod +x /app/app.sh
ENTRYPOINT [ "/app/app.sh" ]

app.sh

#!/bin/sh
java -agentlib:jdwp=transport=dt_socket,address=9090,server=y,suspend=n -jar /app/app.jar

proxy dockerfile (基于centos 镜像)

FROM centos:centos7.9.2009
COPY rinetd /app/rinetd
COPY rinetd.conf /app/rinetd.conf
RUN chmod +x /app/rinetd
ENTRYPOINT [ "/app/rinetd","-c","/app/rinetd.conf","-f" ]

rinetd.conf 转发配置,添加如下就可以了

0.0.0.0       19090     172.16.238.10   9090
  • 调试

idea 配置

 

 


效果

 

 

说明

完整代码在github 中,大家可以参考,实际上以上是一个玩法,基于haproxy,nginx (4层proxy),k8s 的nodeport 转发。。。。都是不多的选择

参考资料

https://dzone.com/articles/remote-debugging-java-applications-with-jdwp
https://docs.oracle.com/javase/8/docs/technotes/guides/jpda/jdwp-spec.html
https://blog.aquasec.com/jdwp-misconfiguration-container-images
https://github.com/rongfengliang/rinetd-rpm
https://github.com/rongfengliang/rinetd-java-debug-learning

posted on   荣锋亮  阅读(96)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2021-11-26 maven-default-http-blocker 问题
2020-11-26 使用go-fuse开发一个fuse 文件系统
2020-11-26 awesome-fuse-fs
2019-11-26 nexus php composer host 模式repo 试用
2018-11-26 Modern Data Lake with Minio : Part 2
2018-11-26 Modern Data Lake with Minio : Part 1
2018-11-26 使用rclone 进行minio 文件同步

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示