gpt4 book ai didi

java - 以编程方式关闭 jetty 客户端

转载 作者:行者123 更新时间:2023-12-01 12:48:59 26 4
gpt4 key购买 nike

我正在设置一个 jetty 客户端,用于处理 Google 的 oauth2 授权流程

com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver receiver =
new LocalServerReceiver.Builder().setHost(redirect_host).setPort(redirect_port).build();

如果之前的授权流程失败并且让jetty客户端保持打开状态,这将失败

INFO [log:131] jetty-6.1.26
WARN [log:265] failed SocketConnector@180.200.105.100:8085: java.net.BindException: Address already in use
WARN [log:265] failed Server@32c65328: java.net.BindException: Address already in use

请注意,我使用的是固定网址和端口

有什么方法可以以编程方式检查 jetty 客户端是否已经打开,并处理这种情况,例如通过关闭以前的 jetty 连接?

最佳答案

我在使用google api连接youtube服务时遇到了类似的情况,该连接也是基于jetty客户端的。

我通过将 localServerReceiver 对象放入默认值“null”的静态类(说实话,是一个单例 Spring Bean)中来解决,在第一次尝试连接时,它创建一个新实例并将其存储在静态中类属性。

此后,在任何新的连接尝试之前,我都会调用 localServerReceiver.stop() 方法来取消之前的任何连接。

类似这样的事情:

public class LocaServerReceiverRetriever{

private static LocalServerReceiver localServerReceiver = null;

public static LocalServerReceiver getLocalServerReceiver(){
if(localServerReceiver == null){
localServerReceiver = new LocalServerReceiver.Builder().setPort(9001).build();
}else{
localServerReceiver.stop();
localServerReceiver = new LocalServerReceiver.Builder().setPort(9001).build();
}
return localServerReceiver ;
}

}

然后调用“LocaServerReceiverRetriever.getLocalServerReceiver();”哪里需要。

这对我有用。祝你好运

关于java - 以编程方式关闭 jetty 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24404783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com