我有两台服务器(主服务器和辅助服务器)以及相应的客户端。两者都使用相同的WSDL合同(因此我无法更改操作),因为我希望此服务器容错。基本上我正在做的是验证主服务器是否已启动并正在运行正在与辅助服务器进行ping操作。当主服务器没有回答时,我知道该服务器已关闭。我的主要问题是当我尝试ping它发送的断开连接的服务器时:
javax.xml.ws.WebServiceException: java.net.ConnectException: Connection refused
如果从未在函数体中抛出此异常,我怎么能捕获它?或者有另一种方法来验证服务器是否已启动?
以下是代码:
辅助服务器
private void isAlive(){
String alive = null;
try {
Client client = new Client(uddiURL, wsName);
while(true){
try {
alive = client.ping("alive");
} catch (ConnectException e1) {
System.out.println("Primary server is down");
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(alive.equals("alive")){
System.out.println("Still up");
}
}
} catch (BrokerClientException e) {
System.err.print("Failed to create BrokerClient");
e.printStackTrace();
return ;
}
}
主服务器
public String ping(String message){
return message;
}