CMP API を使用するアプリケーションをブローカーに接続し、状況とリソースに関する要求を送信します。
始める前に
このステップの開始前に、CMP アプリケーションの開発および実行用の環境の構成を完了する必要があります。
以下のプログラム BrokerRunStateChecker.java について考慮します。 このプログラムは、ローカル・コンピューターのデフォルトのキュー・マネージャー上で実行しているブローカーに接続します。
import com.ibm.broker.config.proxy.*;
public class BrokerRunStateChecker {
public static void main(String[] args) {
// The ip address of where the broker is running
// and the port number of the queue manager listener.
displayBrokerRunState("localhost", 2414, "");
}
public static void displayBrokerRunState(String hostname,
int port,
String qmgr) {
BrokerProxy b = null;
try {
BrokerConnectionParameters bcp =
new MQBrokerConnectionParameters(hostname, port, qmgr);
b = BrokerProxy.getInstance(bcp);
String brokerName = b.getName();
System.out.println("Broker '"+brokerName+
"' is available!");
b.disconnect();
} catch (ConfigManagerProxyException ex) {
System.out.println("Broker is NOT available"+
" because "+ex);
}
}
}
プログラムの最初の行は、Java™ に、CMP API クラスをインポートするように要求します。このクラスは、パッケージ com.ibm.broker.config.proxy で提供されています。
displayBrokerRunState() メソッドの try ブロック内にあるコードの最初の行は、BrokerConnectionParameters オブジェクトをインスタンス化します。 このメソッドは、インプリメントしているクラスがブローカーに接続するためのパラメーターを提供できることを述べるインターフェースです。
このオブジェクトを定義したら、上記の特性によって定義されたキュー・マネージャーに接続できます。 この接続は、try ブロックの内部にある静的 getInstance() ファクトリー・メソッドによって実現されます。 キュー・マネージャーへの有効なハンドルが戻されると、アプリケーションは b.getName() を使用してブローカーの名前を要求し、それを表示します。
getName() および、ブローカーから情報を要求するその他のメソッドは、情報が提供されるか、タイムアウトが発生するまでブロックされます。 したがって、ブローカーが実行していない場合は、アプリケーションが一定の期間、停止します。 BrokerProxy.setRetryCharacteristics() メソッドを使用してタイムアウト期間を制御できます。 一般に、アプリケーション内の指定されたリソースが初めてアクセスされるときにのみブロッキングが発生します。
最後に、プログラムは disconnect() メソッドを呼び出します。 このメソッドにより、CMP とブローカーの両方で、接続に関連したリソースが解放されます。
BrokerProxy ハンドルが getInstance() メソッドから初めて戻されるときに、ブローカー・サービスが実行中である必要はありません。 ブローカーを使用した両方向接続がアクティブであることがアプリケーションで保証されるのは、(この例では、getName() を呼び出して) アプリケーションがハンドルを使用するときに限ります。