1、开发环境介绍:

目前dev用resin 作为服务容器。服务调用之间过于复杂,要进行本地代码调试过于复杂,甚至无法进行。但是可以通过jvm的远程代码调试来达到本地代码调试的目的,步骤如下。

2、resin4(dev环境版本为resin4) 环境远程服务搭建步骤:

//1.确定服务器上resin的版本。进入resin服务的bin目录;例如pk服务的目录是:/data/app/resin_pk/bin/ ,在服务部署的服务器上执行命令:
sh resin.sh version
//确认版本信息是4.0版本: Resin-4.0.27 (built Thu, 22 Mar 2012 06:14:10 PDT)
 
//2.先在远程的resin修改conf(pk服务的conf目录为:/data/app/resin_pk/conf)中resin.xml配置文件 在<server-default>标签中添加 红色字体的两行

<server-default>

<!-- 在本行注释下面添加JVM标签 -->
        <http address="*" port="9991"/>
       <jvm-arg>-Xdebug</jvm-arg>
        <jvm-arg>-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8889</jvm-arg>
    </server-default>

//说明 :这两行参数开启了JVM的远程debug模式,并将端口 8889作为远程调试的端口

//3.以上配置完成以后重启resin服务器,进入resin的bin目录执行:
sh resin.sh stop
sh resin.sh start
//说明,此处用restart命令应该也可以,我当时用restart后没有查到端口号,可能是查询太早了,没有等服务完全启动。
//4.查看端口号,确认远程端口开启成功。如果能查询到内容证明端口开启成功,查询不到则没有开启成功。注意,要等服务完全启动后再查询,否则可能查询不到。
netstat -an | grep 8889
 
//6.需要运维同学配置nginx端口转发,将应用部署服务器的8889端口映射到外网端口(因为外网无法直接访问dev服务器)
nginx配置完毕后,后向运维同学询问nginx外网对应的ip和端口号。
//7.在本地的mac电脑上执行telnet命令查询nginx端口是否转发成功。例如nginx对外的ip地址是:54.223.118.178 应用对外映射的端口号是:8889
telnet 54.223.118.178 8889
//如图则开启成功,否则nginx配置的转发失败,找运维确认。

3、在idea中配置远程的ip和端口,并选定应用进行调试:

run选项中→ Edit Configuration→  左上角 + 号 → 选择新建remote 选项

最后给远程服务取一个名字,填写nginx的ip和端口,选择远程部署的项目并保存,这时就大功告成了。

调试使用:只需要选择刚才新建的名称,点击debug,选择在对应的方法打上断点;服务在调用远程dev上的接口时就会进入本地的idea代码。

最后确定远程debug服务是否成功,点击debug运行后出现类似以下内容说明远程debug连接成功。

4、JVM远程调试整体架构图:

resin4.0服务器远程调试说明的更多相关文章

  1. SpringBoot2.0(四) 远程调试

    和tomcat远程调试近似的配置,主要的配置如下所示: -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=10009 在 ...

  2. windows服务器下tomcat 8.0 配置远程调试

    在tomcat的bin目录下, 添加debug.txt文件, 然后输入: set JPDA_ADDRESS=9901set JPDA_TRANSPORT=dt_socketset CATALINA_O ...

  3. weblogic远程调试XMLDecoder RCE CVE-2017-10271

    首先说一下远程调试的配置,首先在weblogic的启动文件加入如下配置,开启服务器远程调试端口就是9999: 第二步,建立一个java的空项目. 第三步将weblogic的所有jar包拷出来,放到一个 ...

  4. 使用Eclipse进行远程调试

    转自:http://blog.csdn.net/sunyujia/article/details/2614614 今天决定做件有意义的事,写篇图文并茂的blog,为什么要图文并茂?因为很多事可能用语言 ...

  5. 使用Eclipse进行远程调试【转】

    今天决定做件有意义的事,写篇图文并茂的blog,为什么要图文并茂?因为很多事可能用语言也说不明白,从以前我发表的一篇文章可以看得出来,http://blog.csdn.net/sunyujia/arc ...

  6. tomcat使用Eclipse进行远程调试(线上调试)

    什么是远程调试,就是在A机器上利用Eclipse单步跟踪调试B机器上的Web应用,当然调试A机器上Web应用也是没有问题的,90%我都是调试本机的Web应用,远程调试的意义我想我不用说了,大家都会想到 ...

  7. 【Java】使用Eclipse进行远程调试,Windows下开启远程调试

    原博链接:http://blog.csdn.net/sunyujia/article/details/2614614   今天决定做件有意义的事,写篇图文并茂的blog,为什么要图文并茂?因为很多事可 ...

  8. eclipse/intellij idea 远程调试hadoop 2.6.0

    很多hadoop初学者估计都我一样,由于没有足够的机器资源,只能在虚拟机里弄一个linux安装hadoop的伪分布,然后在host机上win7里使用eclipse或Intellj idea来写代码测试 ...

  9. IDEA远程调试服务器代码

    先在idea添加一个remote,host填服务器ip,port填监听服务器端口,默认5005 然后在服务器tomcat catalina.sh 添加(红色部分): JAVA_OPTS="$ ...

随机推荐

  1. 523. Continuous Subarray Sum

    class Solution { public: bool checkSubarraySum(vector<int>& nums, int k) { unordered_map&l ...

  2. 查看celery 队列长度

    BROKER_URL = 'redis://127.0.0.1:6379/2' quque 名称:celery 查询队列长度命令: redis-cli -n 2 llen celery 注释: -n: ...

  3. Python环境os模块功能

    功能 语句 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目录名: os.listdir() 函数用来删除一个文件: os.remove( ...

  4. nexus 数据库备份任务webhook 通知

    nexus 的数据库备份是比较重要的,可以方便我们在故障的是时候进行应用恢复. 以下使用benthos 组件进行nexus 数据库备份事件的应用通知处理 环境准备 使用docker-compose 运 ...

  5. Centos 7 修改日期和时间的命令

    timedatectl set-ntp no //关闭时间动态更新timedatectl set-time "YYYY-MM-DD HH:MM:SS" //设置时间和日期timed ...

  6. C# .NET newtonsoft.json 多版本冲突解决

    A.DLL 引用了6.0 的 newtonsoft.json  (V2 运行时),B.DLL 引用了10.0 的 newtonsoft.json (V4 运行时). 可以在.CONFIG RUNTIM ...

  7. 重置SQLSERVER表的自增列,让自增列重新计数

    SQL的自增列挺好用,只是开发过程中一旦删除数据,标识列就不连续了 写起来 也很郁闷,所以查阅了一下标识列重置的方法 发现可以分为三种: --- 删除原表数据,并重置自增列truncate table ...

  8. Tomcat应用部署

    1.Tomcat安装配置 1.1安装包下载 http://tomcat.apache.org/ 选择下载安装包版本 选择适合当前系统的安装包 安装包目录说明: 1.2环境配置 配置用户名密码conf/ ...

  9. spring @Configuration的使用

    参考博客:https://www.cnblogs.com/duanxz/p/7493276.html spring中的@Scope注解  https://www.cnblogs.com/loneclo ...

  10. IOC注入框架——Unity中Web.Config文件的配置与调用

    Unity 应用程序块可以从 XML 配置文件中读取配置信息.配置文件可以是 Windows Forms 应用程序的 App.config 或者 ASP.NET 应用程序的 Web.config.当然 ...