ナビゲーションをスキップ

WebLogic JMS プログラマーズ ガイド

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

JMS モジュール ヘルパーを使用したアプリケーションの管理

weblogic.jms.extensions.JMSModuleHelper クラスには、JMS サーバ、ストア アンド フォワード エージェント、および JMS システム リソースをプログラム的に作成および管理するために使用する API が含まれています。

 


JMSModuleHelper を使用した JMS システム リソースのコンフィグレーション

JMSModuleHelper は、システム モジュールや JMS リソース (キュー、トピックなど) の管理に使用する以下の API シグネチャを提供します。

システム モジュールとそれに含まれる JMS リソースを管理するには、ドメイン MBean を提供するか、API シグネチャ内の管理サーバに初期コンテキストを提供します。JMS システム リソースの詳細については、『WebLogic JMS のコンフィグレーションと管理』の「JMS システム リソースのコンフィグレーション」を参照してください。

 


JMS サーバとストア アンド フォワード エージェントのコンフィグレーション

JMSModuleHelper は、JMS サーバとストア アンド フォワード エージェントの管理に使用する以下のメソッド API を提供します。

JMS サーバとストア アンド フォワード エージェントを管理するには、ドメイン MBean を提供するか、API シグネチャ内の管理サーバに初期コンテキストを提供します。詳細については、以下を参照してください。

 


JMSModuleHelper のサンプル コード

この節では、JMS システム リソース モジュールを作成および削除するサンプル コードを示します。

JMS システム リソースの作成

このモジュールには、接続ファクトリとトピックが含まれています。

コード リスト 6-1 JMS システム リソースの作成

.
.
.
private static void createJMSUsingJMSModuleHelper(Context ctx){
System.out.println(
     "\n\n.... Configure JMS Resource for C API Topic Example ....\n\n");

     try {

     MBeanHome mbeanHome =
        (MBeanHome) ctx.lookup(MBeanHome.ADMIN_JNDI_NAME);
        DomainMBean domainMBean = mbeanHome.getActiveDomain();
        String domainMBeanName = domainMBean.getName();
        ServerMBean[] servers = domainMBean.getServers();

      String jmsServerName = "examplesJMSServer";

//
// JMSSystemResource "CapiTopic-jms" の作成
//
     String resourceName = "CapiTopic-jms";
     JMSModuleHelper.createJMSSystemResource(
        ctx,
         resourceName,
         servers[0].getName());
         JMSSystemResourceMBean jmsSR =
              JMSModuleHelper.findJMSSystemResource(
                    ctx,
                    resourceName);
          JMSBean jmsBean = jmsSR.getJMSResource();
     System.out.println("Created JMSSystemResource " + resourceName);

//
// JMSConnectionFactory "CConFac" の作成
//
     String factoryName = "CConFac";
     String jndiName = "CConFac";
     JMSModuleHelper.createConnectionFactory(
        ctx,
        resourceName,
         factoryName,
         jndiName,
          servers[0].getName());
     JMSConnectionFactoryBean factory =           jmsBean.lookupConnectionFactory(factoryName);
     System.out.println("Created Factory " + factory.getName());

//
// トピック "CTopic" の作成
//
     String topicName = "CTopic";
     String topicjndiName = "CTopic";
     JMSModuleHelper.createTopic(
        ctx,
        resourceName,
        jmsServerName,
        topicName,
        topicjndiName);

     TopicBean topic = jmsBean.lookupTopic(topicName);
     System.out.println("Created Topic " + topic.getName());
     } catch (Exception e) {
         System.out.println("Example configuration failed :" + e.getMessage());
        e.printStackTrace();
     }
}
.
.
.

JMS システム リソースの削除

次のコードは、JMS システム リソースを削除します。

コード リスト 6-2 JMS システム リソースの削除

.
.
.
private static void deleteJMSUsingJMSModuleHelper(Context ctx ) {

     System.out.println("\n\n.... Remove JMS System Resource for C API Topic Example ....\n\n");


     try {

        MBeanHome mbeanHome =
           (MBeanHome) ctx.lookup(MBeanHome.ADMIN_JNDI_NAME);
           DomainMBean domainMBean = mbeanHome.getActiveDomain();
           String domainMBeanName = domainMBean.getName();
            ServerMBean[] servers = domainMBean.getServers();

     String jmsServerName = "examplesJMSServer";

//
// JMSSystemResource "CapiTopic-jms" の削除
//
     String resourceName = "CapiTopic-jms";
     JMSModuleHelper.deleteJMSSystemResource(
        ctx,
        resourceName
         );
     } catch (Exception e) {
        System.out.println("Example configuration failed :" + e.getMessage());
        e.printStackTrace();
     }
}
.
.
.

 


JMSModuleHelper 使用時のベスト プラクティス

この節では、JMSModuleHelper を使用して JMS サーバおよびリソースをコンフィグレーションするときのベスト プラクティスを示します。

private static Queue findQueue (
QueueSession queueSession,
String jmsServerName,
String queueName,
int retryCount,
long retryInterval
) throws JMSException
{
String wlsQueueName = jmsServerName + "/" + queueName;
String command = "QueueSession.createQueue(" +
wlsQueueName + ")";
long startTimeMillis = System.currentTimeMillis();
for (int i=retryCount; i>=0; i--) {
try {
System.out.println("Trying " + command);
Queue queue = queueSession.createQueue(wlsQueueName);
System.out.println(command + "succeeded after " +
(retryCount - i + 1) + " tries in " +
(System.currentTimeMillis() - startTimeMillis) +
" millis.");
return queue;
} catch (JMSException je) {
if (retryCount == 0) throw je;
}
try {
System.out.println(command + "> failed, pausing " +
retryInterval + " millis.");
Thread.sleep(retryInterval);
} catch (InterruptedException ignore) {}
  }
throw new JMSException("out of retries");
}

この場合、JMSModuleHelper クラス メソッドの後に findQueue() メソッドを呼び出すことで、動的に作成されたキューを使用可能になり次第、取り出すことができます。次に例を示します。

JMSModuleHelper.createPermanentQueueAsync(ctx, domain, jmsServerName, 
queueName, jndiName);
Queue queue = findQueue(qsess, jmsServerName, queueName,
retry_count, retry_interval);

 

フッタのナビゲーションのスキップ  ページの先頭 前 次