2012-01-24 8 views
2

私は2つの異なる物理マシン上に2つのサーバーノードIBM Websphere Application Serverのクラスターを持っています。誰かが私のサーバーインスタンスが稼働しているか、サーバーの確認方法はありますか?

+1

WebSphere NDはそれをすぐに提供しますか? –

+0

私の目的は、サーバがダウン/ハングしたときに通知を受けることです。 WAS NDがこれらの詳細をどのように提供しているか教えていただけますか? –

+0

既知のページをリクエストして、それを元に戻すようにしてください。簡単なcronスクリプトか何でも。 –

答えて

5

これを迅速かつ移植性よく実行するには、サーバーによってサービスされているページを確認できます。あなたがすることができる。例えば

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サーバで動作します。

+0

@ Andrea Colleoni:私は 'boolean isAlive = false;は' boolean isAlive = true; 'でなければなりません。 –

+0

右ごめんなさい... –

+0

実際に接続を確立するためのhpCon.connect()呼び出しがありません。 –

2

以下の希望は

や故障のために...あなたが欲しいものです:

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 "); 
} 

グッドラック!

+0

ファヒム/アンドレア私はすぐに答えるためにお二人に感謝します。 –

+0

あなたは歓迎..... –

1

WebSphere Thin Administrative Clientは、Java APIを公開し、サーバー/アプリケーションのステータスを照会することができる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 MBeanに興味があるかもしれません。ここでクラスタの状態を照会する例である:所望のよう

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()}); 

あなたは、このような個々のクラスタメンバーのステータスを照会するように、さらに操作を呼び出すことができます。

クエリーに加えて、register notificationsもあります。これにより、クラスター、サーバー、またはアプリケーションの状態の変化など、特定のイベントが発生したときにプログラムに通知することができます。

+0

+1 mbeansの使用に良い –

1

openConnection()を使用してURLに特化した接続ができます。 URLの公開プロトコルに応じて、抽象クラスURLConnectionのサブクラスを返します(例: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 
} 
+0

@ Vogel612コードの答えは良いです。 Chillax。 – Zizouz212

+0

@ Vogel612ご意見ありがとうございます。私は同じ問題を抱えており、コードを共有したいと思っていましたが、それははっきりしていると思いましたが、確かに明確になることができます。今、私は少しコードを説明しようとしました。 – Weslor

関連する問題