作者:赵红梅
BuildForge提供了图形界面来完成服务器池中的服务器连接测试,以便确认指定的服务器是否可以在项目运行中被选择器来选择,这种情况适合绝大多数应用,例如服务器无需频繁重新启动并具有稳定的网络连接。如果该服务器由于某些原因在项目运行前或运行中被BuildForge设置为不可连接状态,虽然事实上该服务器是活动的,但是由于错误的状态该服务器将无法被选择器选择而导致项目运行失败,所以,如何在选择器运行前确认服务器的状态,激活事实上处于活动状态的服务器是一个稳定的项目的必要步骤。
通过BuildForge提供的API,我们可以很容易的实现这个功能,编译下面的程序,在选择器运行之前执行它,该程序会尝试设置服务器状态直至服务器可用。
要正确地编译及运行该程序,需要BuildForge提供的API支持,通过浏览器访问http://HOST/clients/,下载http://HOST/clients/java/rbf-services-client-java.jar,保存在本地路径,使用时把相应的路径设置在 CLASSPATH 变量里面。
import com.buildforge.services.client.api.*;
import com.buildforge.services.client.dbo.*;
import com.buildforge.services.common.dbo.ServerDBO.Error;
public class TestServer {
public static void main(String[] args) throws Exception {
System.out.println("Start testing...");
while (true) {
try {
APIClientConnection conn = new APIClientConnection("HOST");
conn.authUser("USERNAME", "PASSWORD");
System.out.println("Waiting for Server to be ready");
TestServerisAvailable(conn, args[0]);
System.out.println("Server test completed");
conn.close();
break;
} catch (Exception e) {
// System.out.println("Error reaching server...");
}
}
}
public static void TestServerisAvailable(APIClientConnection conn,
String serverName) throws Exception {
while (true) {
try {
Server s = Server.findByName(conn, serverName);
Error error = s.test(30);
System.out.println("Reaching " + serverName);
if (error.toString() == "NO") {
break;
}
continue;
} catch (Exception e) {
// System.out.println("Reaching server...");
// Thread.sleep(20);
}
}
}
}
注:以上程序在BuildForge 7.1环境下调试成功。