java.net关闭_linux下关闭tomcat服务报错:java.net.ConnectException: Connection refused

随时记录遇到的问题,后续就不会 无数次的遇见同一个问题,都想不起来是怎么回事了~!坚持。

linux下启动tomcat或者关闭tomcat时,都会报错,

如下:

Catalina.stop: java.net.ConnectException: Connection

refused

java.net.ConnectException: Connection refused

at java.net.PlainSocketImpl.socketConnect(Native Method)

at

java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)

at

java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)

at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)

at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)

at java.net.Socket.connect(Socket.java:529)

at java.net.Socket.connect(Socket.java:478)

at java.net.Socket.(Socket.java:375)

at java.net.Socket.(Socket.java:189)

at

org.apache.catalina.startup.Catalina.stopServer(Catalina.java:410)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native

Method)

at

sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at

org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:336)

at

org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:427)

原因:

dubbo暴露服务端口已经被占用,会报端口被占用

因为tomcat先占用了dubbo服务暴露需要的20880端口,

那么重新启动或者关闭时,也需要这个端口去暴露服务,这时候就端口自然报被占用了

解决方法一:命令:

netstat -lntup 查看一下PID

a4c26d1e5885305701be709a3d33442f.png

直接干掉kill -9

17542 然后重启,OK。

解决方法二:

在启动服务时,动态分配 暴露端口

1. 数据库端表存储几个可用端口

2. 程序获取本机IP 根据IP

查出可用端口

3. 服务启动时动态获取IP 配置如下

"dynamicDubboPortReaderDao"

class="com.test.dubbo.config.dubbo.DynamicDubboPortReaderImpl"

init-method="init" />

public class DynamicDubboPortReaderImpl

implements

DynamicDubboPortReader,ApplicationContextAware{

private ConfigurableApplicationContext applicationContext

= null;

private static final String

PROTOCOL_NAME="dubbo";

private static int

RPOTOCOL_PORT=20880;

@Autowired

private IComputePortService

computePortService;//获取端口服务

public void init(){

RPOTOCOL_PORT = computePortService.getAddressPort();

updateProtocolMessage(PROTOCOL_NAME,RPOTOCOL_PORT);

}

@Override

public void

setApplicationContext(ApplicationContext applicationContext)

throws BeansException {

this.applicationContext =

(ConfigurableApplicationContext)applicationContext;

}

@Override

public void updateProtocolMessage(String

protocolConfig,int port) {

//判断初始化

if(!applicationContext.containsBean(protocolConfig)){

System.out.println("没有【"+protocolConfig+"】协议");

}

//获取协议

ProtocolConfig protocolConfigSource=(ProtocolConfig)

applicationContext.getBean(protocolConfig);

//修改协议暴露端口信息

protocolConfigSource.setPort(port);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值