Développement d'une classe DataStoreHelper personnalisée

Appliquez l'extension WebSphere, classe GenericDataStoreHelper, pour créer votre propre auxiliaire de magasin de données pour les sources de données non prises en charge par le serveur d'applications. Cette classe auxiliaire permet à votre configuration JDBC d'utiliser des fonctions propres à la base de données au cours des transactions.

Avant de commencer

Si vous utilisez une configuration dont la source de données n'est pas prise en charge par le serveur d'applications, vous pouvez créer un auxiliaire de magasin de données personnalisé. Cet auxiliaire permet d'optimiser la base de données afin qu'elle effectue des fonctions lors d'une transaction qui ne serait pas disponible autrement. Vous devez créer une classe DataStoreHelper définie par l'utilisateur et vous ne disposez d'aucune information permettant de créer un gestionnaire d'exceptions afin d'intercepter les exceptions pouvant être créées lors de l'utilisation du gestionnaire de données personnalisé.

Pourquoi et quand exécuter cette tâche

Fonction obsolète Fonction obsolète: La zone de constante CUSTOM_HELPER dans l'API de classe com.ibm.websphere.rsadapter.DataStoreHelper est dépréciée. Si vous créez votre propre classe d'implémentation DataStoreHelper, n'appelez pas setHelperType(DataStoreHelper.CUSTOM_HELPER). A la place, laissez la valeur HelperType être établie par la classe d'implémentation de laquelle elle hérite.depfeat

Procédure

  1. Créez une classe pour étendre les auxiliaires de magasin de données existants. Servez-vous du code suivant comme exemple (ce type de source de données est basé sur un fournisseur JDBC défini par l'utilisateur) :
    package com.ibm.websphere.examples.adapter;
    
    import java.sql.SQLException;
    import javax.resource.ResourceException;
    
    import com.ibm.websphere.appprofile.accessintent.AccessIntent;
    import com.ibm.websphere.ce.cm.*;
    import com.ibm.websphere.rsadapter.WSInteractionSpec;
    
    /**
    * Example DataStoreHelper class, demonstrating how to create a user-defined DataStoreHelper.
    * The implementation for each method is provided only as an example.  More detail is probably
    * required for any custom DataStoreHelper that is created for use by a real application.
    * In this example, we will override the doStatementCleanup(),getIsolationLevel(), and set userDefined 
    * exception map.
    */
    public class ExampleDataStoreHelper extends com.ibm.websphere.rsadapter.GenericDataStoreHelper
    {
    
        public ExampleDataStoreHelper(java.util.Properties props)
        {
            super(props);
    
            // Update the DataStoreHelperMetaData values for this helper.
            getMetaData().setGetTypeMapSupport(false);
    
            // Update the exception mappings for this helper.
            java.util.Map xMap = new java.util.HashMap();
    
            // Add an Error Code mapping to StaleConnectionException.
            xMap.put(new Integer(2310),  StaleConnectionException.class);
            // Add an Error Code mapping to DuplicateKeyException.
            xMap.put(new Integer(1062),  DuplicateKeyException.class);
            // Add a SQL State mapping to the user-defined ColumnNotFoundException
            xMap.put("S0022",            ColumnNotFoundException.class);
            // Undo an inherited StaleConnection SQL State mapping.
            xMap.put("S1000",            Void.class);
    
            setUserDefinedMap(xMap);
    
            // If you are extending a helper class, it is
            // normally not necessary to issue 'getMetaData().setHelperType(...)'
            // because your custom helper will inherit the helper type from its
            // 	parent class.
                              
    
             }
    
        public void doStatementCleanup(java.sql.PreparedStatement stmt) throws SQLException
        {
            // Clean up the statement so it may be cached and reused.
    
            stmt.setCursorName("");
            stmt.setEscapeProcessing(true);
            stmt.setFetchDirection(java.sql.ResultSet.FETCH_FORWARD);
            stmt.setMaxFieldSize(0);
            stmt.setMaxRows(0);
            stmt.setQueryTimeout(0);
        }
    
    
    
        public int getIsolationLevel(AccessIntent intent) throws ResourceException
        {
            // Determine an isolation level based on the AccessIntent.
    
            // set WebSphere default isolation level to TRANSACTION_SERIALIZABLE.
            if (intent == null) return java.sql.Connection.TRANSACTION_SERIALIZABLE;
    
            return intent.getConcurrencyControl() == AccessIntent.CONCURRENCY_CONTROL_OPTIMISTIC ?
                   java.sql.Connection.TRANSACTION_READ_COMMITTED :
                   java.sql.Connection.TRANSACTION_REPEATABLE_READ;
        }
            public int getLockType(AccessIntent intent) {
               if ( intent.getConcurrencyControl() == AccessIntent.CONCURRENCY_CONTROL_PESSIMISTIC) {
                  if ( intent.getAccessType() == AccessIntent.ACCESS_TYPE_READ ) {
                      return WSInteractionSpec.LOCKTYPE_SELECT;
                  }
                  else {
                      return WSInteractionSpec.LOCKTYPE_SELECT_FOR_UPDATE;
                   }
               }
               return WSInteractionSpec.LOCKTYPE_SELECT;
            }
    }
  2. Facultatif : Créez votre propre classe de gestionnaire d'exceptions. Servez-vous du code suivant comme guide :
    package com.ibm.websphere.examples.adapter;
    
    import java.sql.SQLException;
    import com.ibm.websphere.ce.cm.PortableSQLException;
    
    /**
    * Example PortableSQLException subclass, which demonstrates how to create a user-defined
    * exception for exception mapping.
    */
    public class ColumnNotFoundException extends PortableSQLException
    {
        public ColumnNotFoundException(SQLException sqlX)
        {
            super(sqlX);
        }
    }
  3. Compilez la classe ou les classes DataStoreHelper nouvellement créées. Pour cela, vous aurez besoin des fichiers JAR suivants dans le chemin d'accès aux classes :
    • Si vous utilisez un environnement de développement, tel Eclipse, vous devez définir ces fichiers JAR dans votre chemin d'accès aux classes afin de pouvoir les compiler. Créez, ensuite un fichier JAR du projet une fois que vous avez fini d'éditer vos fichiers (voir l'aide de votre environnement de développement pour obtenir des instructions spécifiques).
    • Si vous ne disposez pas d'un environnement de développement et que vous utilisez le compilateur Javac :
      1. Créez votre fichier .java qui étend la classe GenericDataStoreHelper ou tout autre auxiliaire de magasin de données, comme indiqué à l'étape 1.
      2. Une fois que vous avez fini d'éditer votre fichier ou vos fichiers dans l'utilitaire de ligne de commande, accédez au répertoire principal.
      3. Définissez le chemin d'accès aux classes à l'aide de cette commande :
        [Windows]
        set CLASSPATH=%CLASSPATH%;app_server_root\dev\JavaEE\j2ee.jar;app_server_root\dev\was_public.jar;app_server_root\plugins\com.ibm.ws.runtime.jar
        [AIX][HP-UX][Linux][Solaris]
         set CLASSPATH=$CLASSPATH:app_server_root/dev/JavaEE/j2ee.jar:app_server_root/dev/was_public.jar:app_server_root/plugins/com.ibm.ws.runtime.jar
      4. Compilez votre classe ou vos classes. Par exemple, sous les systèmes d'exploitation Windows, entrez la commande suivante (pour compiler tous les fichiers .java du répertoire indiqué) :
        C:\javac your_directory\*.java
      5. Dans le répertoire Java, créez un fichier JAR de tous les fichiers de classe compilés dans votre répertoire. Par exemple, sous les systèmes d'exploitation Windows, entrez la commande suivante (remplacez mon_fichier par le nom que vous voulez donner à votre fichier JAR) :
         C:\Java> jar cf myFile.jar *.class
        Pour plus d'informations sur l'utilisation du compilateur javac, consultez le site Web Oracle relatif au compilateur Java™.
  4. Placez vos fichiers JAR compilés dans un répertoire et effectuez une mise à jour du chemin d'accès aux classes du fournisseur JDBC, de façon à inclure cet emplacement. Par exemple, si votre fichier JAR est le suivant : c:\myFile.jar, veillez à ce que le chemin d'accès aux classes du fournisseur JDBC contienne le répertoire : c:\myFile.jar.
    1. Cliquez sur Ressources > JDBC > Fournisseurs JDBC> fournisseur_JDBC.
    2. Dans la zone Chemin d'accès aux classes, ajoutez l'emplacement des fichiers JAR compilés. Par exemple, dans cette zone, appuyez sur ENTREE et ajoutez une nouvelle ligne :
      c:\myFile.jar
  5. Configurez le serveur d'applications de façon à ce qu'il utilise la nouvelle classe personnalisée DataStoreHelper.
    1. Dans la console d'administration, sélectionnez Ressources > JDBC > Sources de données.
    2. Sélectionnez la source de données à configurer avec votre classe personnalisée DataStoreHelper.
    3. Dans la section Nom de classe auxiliaire du magasin de données, sélectionnez Spécifier une classe auxiliaire de magasin de données définie par l'utilisateur.
    4. Entrez le nom de classe de l'auxiliaire de magasin de données créé.
    5. Appliquez les modifications et cliquez sur OK.

Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tdat_cusdatstore
Nom du fichier : tdat_cusdatstore.html