Как проверить работоспособность сервера? - PullRequest
2 голосов
/ 24 января 2012

У меня есть кластер из двух серверных узлов IBM Websphere Application Server на двух разных физических машинах. Может ли кто-нибудь помочь мне с кодом Java, чтобы проверить, работает ли мой экземпляр сервера или когда один из серверов не запущен?

Ответы [ 4 ]

5 голосов
/ 24 января 2012

Чтобы сделать это быстро и переносимо, вы можете проверить страницу, если она обслуживается сервером.

Например, вы можете:

boolean isAlive = true;
try {
  URL hp = new URL("http://yourserver/TestPage.html"); 
  URLConnection hpCon = hp.openConnection(); 
  // add more checks...
} catch (Exception e) {
  isAlive = false;
}

Этот не слишком сложный метод будет работатьс каждым http сервером.

2 голосов
/ 24 января 2012

Надеюсь, что ниже, что вы хотите ...

URL url = new URL( "http://google.com/" );
HttpURLConnection httpConn =  (HttpURLConnection)url.openConnection();
httpConn.setInstanceFollowRedirects( false );
httpConn.setRequestMethod( "HEAD" ); 
httpConn.connect();

System.out.println( "google.com : " + httpConn.getResponseCode());

или для сбоя:

URL url = new URL( "http://google.com:666/" );
HttpURLConnection httpConn =  (HttpURLConnection)url.openConnection();
httpConn.setInstanceFollowRedirects( false );
httpConn.setRequestMethod( "HEAD" ); 
try{
    httpConn.connect();
     System.out.println( "google.com : " + httpConn.getResponseCode());
}catch(java.net.ConnectException e){
     System.out.println( "google.com:666 is down ");
}

Удачи !!!

1 голос
/ 02 ноября 2015

Мы получаем специализированное соединение для URL, который мы хотим использовать openConnection(). Он вернет подкласс абстрактного класса URLConnection, в зависимости от открытого протокола URL, например, HttpURLConnection. Затем методом connect() открывается канал связи

private String server = "http://testserver:9086";
try {
    URLConnection hpCon = new URL(SERVER).openConnection();
    hpCon.connect();
} catch (Exception e) {
    // Anything you want to do when there is a failure
}
1 голос
/ 24 января 2012

Я думаю, что вам может понадобиться использование тонкого административного клиента WebSphere , который предоставляет API-интерфейсы Java и предоставляет доступ к WAS MBeans , который позволяет запрашиватьсостояние ваших серверов / приложений (наряду со многими другими задачами управления и мониторинга).

Во-первых, вам нужно получить подключение к WAS (AdminClient) следующим образом:

Properties clientProps = new Properties();
clientProps.setProperty(AdminClient.CONNECTOR_TYPE, AdminClient.CONNECTOR_TYPE_SOAP);
clientProps.setProperty(AdminClient.CONNECTOR_HOST, dmgrHostname);
clientProps.setProperty(AdminClient.CONNECTOR_PORT, dmgrSoapConnectorPort);
if (dmgrIsSecure) {
    clientProps.setProperty(AdminClient.CONNECTOR_SECURITY_ENABLED, "true");
    clientProps.setProperty(AdminClient.USERNAME, wasUsername);
    clientProps.setProperty(AdminClient.PASSWORD, wasUserPassword);
}
AdminClient adminClient = AdminClientFactory.createAdminClient(clientProps);

Далее вам нужно запросить соответствующие MBean-компоненты, а затем выполнить соответствующие операции.В вашем случае вас могут заинтересовать ClusterMgr и / или J2EEApplication MBeans.Вот пример, который запрашивает состояние кластера:

AdminClient adminClient = getAdminClient(target);
ObjectName clusterMgr =
    (ObjectName)adminClient.queryNames(
        ObjectName.getInstance("WebSphere:*,type=ClusterMgr"), null).iterator().next();
String state = adminClient.invoke(clusterMgr, "getClusterState",
    new Object[] {clusterName}, new String[] {String.class.getName()});

Вы можете вызывать дополнительные операции по желанию, такие как запрос статуса отдельного члена кластера.

Кроме того, помимо запросов,Вы также можете зарегистрировать уведомления , чтобы ваша программа могла получать уведомления о наступлении определенных событий, таких как изменение состояния кластеров, серверов или приложений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...