intellij idea远程部署

开发环境centos7+idea2016.3+tomcat8.5+jdk8

具体操作转载ilanyu's Blog的博客,我这里主要增加注意事项。

实现效果:
在idea中点击run时,自动将代码编译并上传、部署到远程服务器中。点击debug时,进行本地调试。

和传统的在本地服务器相比较的优势:
1、节省开发者开发机的资源,省去了本地服务器的CPU、内存的占用。
2、如果开发的程序为Android+J2EE或者IOS+J2EE等需要将服务器IP写入客户端,不需要客户端连接到同一局域网。

远程服务器操作:

修改tomcat的JMX[Java Management Extensions,Java管理扩展]参数。关于JMX的介绍可以参考。。。百度。

1、修改环境变量,添加Tomcat启动参数

添加Tomcat启动参数的方法有多种,我这里用的是将启动参数添加到环境变量,这种方法会在重启服务器后丢失启动参数,从而避免安全性问题,也可以直接将参数写入到catalina.sh中

CATALINA_OPTS="-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=1099 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 
-Djava.rmi.server.hostname=1.2.3.4"
export CATALINA_OPTS

2、清空webapps目录

rm -rf ./webapps/*

3、清空work/Catalina/localhost/目录

rm -rf ./work/Catalina/localhost/*

4、启动Tomcat

./bin/catalina.sh run &

开发机操作:
1、创建J2EE项目,我这里使用了maven创建了一个Hello World,如图idea_tomcat_2_1.png

2、添加运行配置
idea_tomcat_2_2_1.png

idea_tomcat_2_2_2.png

idea_tomcat_2_2_3.png

idea_tomcat_2_2_4.pngidea_tomcat_2_2_5.png

idea_tomcat_2_2_6.png

idea_tomcat_2_2_7.png

3、运行项目
idea_tomcat_3_1.png

idea_tomcat_3_2.png

4、运行效果
idea_tomcat_3_3.png

注:1.2.3.4为我这里使用的远程服务器IP,实际使用时需要修改为自己的真实远程服务器IP

参考资料:
http://blog.lanyus.com/archives/197.html

注意事项:

问题

点击debug的时候也出现了ubable to connect to ip:1099

分析
问题状态:
1、通过netstat查看端口号,显示1100为LISTEN;监听是正常的;
2、iptables中已经将端口号1100置为开放的;
3、远程通过telnet <ip> <port>时,telnet是正常的;
4、(但是)通过jconsole <ip> <port>进行连接时,连接不上;
5、(如果)关闭firewall的话,第4步的方式是可以成功的;

解答
In addition to listening to the port you specified (1100) the JMX server also listens to a randomly chosen (ephemeral) port.
Check, e.g. with lsof -i|grep java if you are on linux/osx, which ports the java process listens to and make sure your firewall is open for the ephemeral port as well.
除了JMX server指定的监听端口号外,JMXserver还会监听一到两个随机端口号
 

解决办法一:关闭防火墙(不考虑安全性,推荐)

解决办法二、可以通过命令:lsof -i|grep java |grep <pid> 来查看当前java进程需要监听的随机端口号,
# netstat -tupln |grep 1101
tcp 0 0 0.0.0.0:1101 0.0.0.0:* LISTEN 13997/java 
# lsof -i|grep 13997
java 13997 root 9u IPv4 132890 0t0 TCP *:37040 (LISTEN)
java 13997 root 70u IPv4 132891 0t0 TCP *:pt2-discover (LISTEN)
java 13997 root 72u IPv4 132892 0t0 TCP *:40085 (LISTEN)
java 13997 root 76u IPv4 146976 0t0 TCP hotnamea:61618->10.88.146.205:49165 (ESTABLISHED)
java 13997 root 84u IPv4 132904 0t0 TCP *:61618 (LISTEN)
java 13997 root 95u IPv4 132936 0t0 TCP *:8163 (LISTEN)

把这些端口设置为开放状态。

问题二、

添加如下参数可以开启远程调试。

-agentlib:jdwp=transport=dt_socket,address=49739,suspend=n,server=y

094439_OMOc_2494581.png

最后,感谢lanyus给屌丝同胞们带来的idea福利(推荐正版)。

转载于:https://my.oschina.net/u/2494581/blog/798599

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值