WebSphere Application Server, Version 6.0.x   
             オペレーティング・システム: AIX , HP-UX, Linux, Solaris, Windows

             目次と検索結果のパーソナライズ化

例: Java Management Extensions API を使用した、CMP Bean 用の JDBC ドライバーとデータ・ソースの作成

このコード例は、JDBC プロバイダーとデータ・ソースの構成 、CMP Bean と共に使用するためのデータ・ソースの指定、データ・ソース の許可別名の設定、および Mbean を再ロードしての構成変更 の方法を示しています。

//
// "This program may be used, executed, copied, modified and distributed 
// without royalty for the purpose of developing, using, marketing, or
// distributing."
//
// Product 5630-A36,  (C) COPYRIGHT International Business Machines 
// Corp., 2001, 2002
//  All Rights Reserved *  Licensed Materials - Property of IBM
//
import java.util.*;
import javax.sql.*;
import javax.transaction.*;
import javax.management.*;

import com.ibm.websphere.management.*;
import com.ibm.websphere.management.configservice.*;
import com.ibm.ws.exception.WsException;


/**
 * Creates a node scoped resource.xml entry for a DB2 XA datasource.
 * The datasource created is for CMP use.
 * 
* We need following to run
 * set classpath=%classpath%;D:¥WebSphere¥AppServer¥lib¥wsexception.jar;
      D:¥WebSphere¥AppServer¥lib¥wasjmx.jar;D:¥$WAS_HOME¥lib¥wasx.jar
  */
public class CreateDataSourceCMP {

   String dsName = "markSection"; // ds display name , also jndi name and CF name
String dbName = "SECTION";     // database name
   String authDataAlias = "db2admin"; // an authentication data alias
   String uid = "db2admin";           // userid
   String pw  = "db2admin";           //  password
   String dbclasspath = "D:/SQLLIB/java/db2java.zip"; // path to the db driver




   /**
    * Main method.
    */
   public static void main(String[] args) {
      CreateDataSourceCMP cds = new CreateDataSourceCMP();

      try {
         cds.run(args);
      } catch (com.ibm.ws.exception.WsException ex) {
         System.out.println("Caught this " + ex );
         ex.printStackTrace();
         //ex.getCause().printStackTrace();
      } catch (Exception ex) {
         System.out.println("Caught this " + ex );
         ex.printStackTrace();
      }
   }


   /**
    * This method creates the datasource using JMX.
* The datasource created here is only written into resources.xml.
    * It is not bound into namespace until the server is restarted, or an application started
*/
   public void run(String[] args) throws Exception {

      try {
         // Initialize the AdminClient.
         Properties adminProps = new Properties();
         adminProps.setProperty(AdminClient.CONNECTOR_TYPE,
          					AdminClient.CONNECTOR_TYPE_SOAP);
         adminProps.setProperty(AdminClient.CONNECTOR_HOST, "localhost");
         adminProps.setProperty(AdminClient.CONNECTOR_PORT, "8880");
         			AdminClient adminClient =
              AdminClientFactory.createAdminClient(adminProps);

         // Get the ConfigService implementation.			
		
         com.ibm.websphere.management.configservice.ConfigServiceProxy configService =
new com.ibm.websphere.management.configservice.ConfigServiceProxy(adminClient);
Session session = new Session();

         // Use this group to add to the node scoped resource.xml.
         ObjectName node1 = ConfigServiceHelper.createObjectName(null, "Node", null);
ObjectName[] matches = configService.queryConfigObjects(session, null, node1, null);
node1 = matches[0];     // use the first node found

         // Use this group to add to the server1 scoped resource.xml.
         ObjectName server1 = ConfigServiceHelper.createObjectName(null, "Server", "server1");
matches = configService.queryConfigObjects(session, null, server1,
                null);
         server1 = matches[0];   // use the first server found

         // Create the JDBCProvider
         String providerName = "DB2 JDBC Provider (XA)";
         System.out.println("Creating JDBCProvider " + providerName );

         // Prepare the attribute list
         AttributeList provAttrs = new AttributeList();
         provAttrs.add(new Attribute("name", providerName));
         provAttrs.add(new Attribute("implementationClassName", "COM.ibm.db2.jdbc.DB2XADataSource"));
provAttrs.add(new Attribute("description","DB2 JDBC2-compliant XA Driver"));
//create it
         ObjectName jdbcProv = configService.createConfigData(session,node1,
                 "JDBCProvider", "JDBCProvider",provAttrs);
         // now plug in the classpath
configService.addElement(session,jdbcProv,"classpath",dbclasspath,-1);


// Search for RRA so we can link it to the datasource
         ObjectName rra = ConfigServiceHelper.createObjectName(null, "J2CResourceAdapter", null);
matches = configService.queryConfigObjects(session, node1, rra,
                  null);
         rra = matches[0]; // use the first J2CResourceAdapter segment for builtin_rra
// Prepare the attribute list
         AttributeList dsAttrs = new AttributeList();
         dsAttrs.add(new Attribute("name", dsName));
         dsAttrs.add(new Attribute("jndiName", "jdbc/" + dsName));
         dsAttrs.add(new Attribute("datasourceHelperClassname","com.ibm.websphere.rsadapter.DB2DataStoreHelper"));
dsAttrs.add(new Attribute("statementCacheSize", new Integer(10)));
         dsAttrs.add(new Attribute("relationalResourceAdapter", rra)); // this is where we make the link to "builtin_rra"
dsAttrs.add(new Attribute("description", "JDBC Datasource for mark section CMP 2.0 test"));
dsAttrs.add(new Attribute("authDataAlias",authDataAlias));

         // Create the datasource
         System.out.println("  **  Creating datasource");
         ObjectName dataSource = 
             configService.createConfigData(session,jdbcProv,"DataSource",
               "DataSource",dsAttrs);

         // Add a propertySet.
         AttributeList propSetAttrs = new AttributeList();
         ObjectName resourcePropertySet =configService.createConfigData(session,dataSource,"propertySet","",propSetAttrs);
// Add resourceProperty databaseName
         AttributeList propAttrs1 = new AttributeList();
         propAttrs1.add(new Attribute("name", "databaseName"));
         propAttrs1.add(new Attribute("type", "java.lang.String"));
         propAttrs1.add(new Attribute("value", dbName));

         configService.addElement(session,resourcePropertySet,"resourceProperties",propAttrs1,-1);
// Now Create the corresponding J2CResourceAdapter Connection Factory object.
         ObjectName jra = ConfigServiceHelper.createObjectName(null,"J2CResourceAdapter",null);
// Get all the J2CResourceAdapter, and I want to add my datasource
         System.out.println("  **  Get all J2CResourceAdapter's");
         ObjectName[] jras = configService.queryConfigObjects(session, node1, jra, null);
int i=0;

         for (;i< jras.length;i++) {
            System.out.println(ConfigServiceHelper.getConfigDataType(jras[i])+ " " + i + " = "
+ jras[i].getKeyProperty(SystemAttributes._WEBSPHERE_CONFIG_DATA_DISPLAY_NAME)
+ "¥nFrom scope ="
                               + jras[i].getKeyProperty(SystemAttributes._WEBSPHERE_CONFIG_DATA_ID));
// quit on the first builtin_rra
            if (jras[i].getKeyProperty(SystemAttributes._WEBSPHERE_CONFIG_DATA_DISPLAY_NAME)
.equals("WebSphere Relational Resource Adapter")) {
               break;
            }
         }


         if (i >= jras.length) {
            System.out.println("Did not find builtin_rra J2CResourceAdapter object creating CF anyways" );
} else {
            System.out.println("Found builtin_rra J2CResourceAdapter object at index " + i + " creating CF" );
}

         // Prepare the attribute list
         AttributeList cfAttrs = new AttributeList();
         cfAttrs.add(new Attribute("name", dsName + "_CF"));
         cfAttrs.add(new Attribute("authMechanismPreference","BASIC_PASSWORD"));
         cfAttrs.add(new Attribute("authDataAlias",authDataAlias));
         cfAttrs.add(new Attribute("cmpDatasource", dataSource ));  // this is where we make the link to DataSource's xmi:id
ObjectName cf = configService.createConfigData(session,jras[i],
         "CMPConnectorFactory", "CMPConnectorFactory",cfAttrs);


         // ===== start Security section
         System.out.println("Creating an authorization data alias " + authDataAlias);
// Find the parent security object
         ObjectName security = ConfigServiceHelper.createObjectName(null, "Security", null);
ObjectName[] securityName = configService.queryConfigObjects(session, null, security, null);
security=securityName[0];

         // Prepare the attribute list
         AttributeList authDataAttrs = new AttributeList();
         authDataAttrs.add(new Attribute("alias", authDataAlias));
         authDataAttrs.add(new Attribute("userId", uid));
         authDataAttrs.add(new Attribute("password", pw));
         authDataAttrs.add(new Attribute("description","Auto created alias for datasource"));
//create it
         ObjectName authDataEntry = configService.createConfigData(session,security,"authDataEntries", "JAASAuthData",authDataAttrs);
// ===== end Security section

         // Save the session
         System.out.println("Saving session" );
         configService.save(session, false);

         // reload resources.xml to bind the new datasource into the name space
         reload(adminClient,true);
      } catch (Exception ex) {
         ex.printStackTrace(System.out);
         throw ex;
      }
   }

   /**
    * Get the DataSourceConfigHelperMbean and call reload() on it
    * 
    * @param adminClient
    * @param verbose true - print messages to stdout
    */
   public void reload(AdminClient adminClient,boolean verbose) {
      if (verbose) {
         System.out.println("Finding the Mbean to call reload()");
      }

      // First get the  Mbean
      ObjectName handle = null;
      try {
         ObjectName queryName = new ObjectName("WebSphere:type=DataSourceCfgHelper,*");
Set s = adminClient.queryNames(queryName, null);
         Iterator iter = s.iterator();
         if (iter.hasNext()) handle = (ObjectName)iter.next();
      } catch (MalformedObjectNameException mone) {
         System.out.println("Check the program variable queryName" + mone);
      } catch (com.ibm.websphere.management.exception.ConnectorException ce) {
         System.out.println("Cannot connect to the application server" + ce);
      }

      if (verbose) {
         System.out.println("Calling reload()");
      }
      Object result = null;
      try {
         result = adminClient.invoke(handle, "reload", new Object[] {}, 
               new String[] {});
      } catch (MBeanException mbe) {
         if (verbose) {
            System.out.println("¥tMbean Exception calling reload" + mbe);
         }
      } catch (InstanceNotFoundException infe) {
         System.out.println("Cannot find reload ");
      } catch (Exception ex) {
         System.out.println("Exception occurred calling reload()"  + ex);
      }

      if (result==null && verbose) {
         System.out.println("OK reload()");
      }
   }

}



関連概念
リソース・アダプター
JDBC プロバイダー
データ・ソース
参照トピック    

ご利用条件 | フィードバック

最終更新: Jan 22, 2008 12:07:38 AM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/rdat_crtdscmp.html