Características de portabilidad de acceso a datos
Estas interfaces funcionan con el adaptador de recursos relacional (RRA) para que las funciones específicas de la base de datos sean operativas en las conexiones entre el servidor de aplicaciones y la base de datos.
En otras palabras, las aplicaciones pueden acceder a datos de las diferentes bases de datos y utilizar funciones que son específicas de la base de datos, sin cambiar el código. Adicionalmente, WebSphere Application Server le permite conectar un origen de datos que no está soportado por la persistencia de WebSphere. No obstante, el origen de datos se debe implementar como tipo XADataSource o ConnectionPoolDataSource, y debe cumplir la especificación JDBC 2.x.
La portabilidad de las aplicaciones se consigue utilizando lo siguiente:
- Interfaz DataStoreHelper
- Con esta interfaz, cada plataforma de almacén de datos
puede conectar sus propias funciones privadas específicas del almacén de datos, que utiliza el
tiempo de ejecución del adaptador de recursos relacional. WebSphere Application Server ofrece
una implementación para cada proveedor de JDBC soportado.
La interfaz también proporciona una clase GenericDataStoreHelper para que la utilicen los orígenes de datos no soportados. Se puede subclasificar la clase GenericDataStoreHelper u otros ayudantes proporcionados por WebSphere para dar soporte a cualquier origen de datos nuevo.
Nota: Si configura el acceso a datos mediante un proveedor de JDBC definido por el usuario, no implemente directamente la interfaz de DataStoreHelper. O bien cree una subclase de la clase GenericDataStoreHelper o cree una subclase de las clases de implementación DataStoreHelper proporcionadas por IBM® (si el comportamiento de la base de datos o la sintaxis SQL es similar a una de estas clases proporcionadas).Para obtener más información, consulte el tema DataStoreHelper de documentación de la API (como se enumera en el índice de documentación de la API).
El segmento de código siguiente muestra cómo se crea el método de ayudante de almacén de datos para añadir dos correlaciones de errores nuevas para orígenes de datos no soportados.
public class NewDSHelper extends GenericDataStoreHelper { public NewDSHelper(java.util.Properties dataStoreHelperProperties) { super(dataStoreHelperProperties); java.util.Hashtable myErrorMap = null; myErrorMap = new java.util.Hashtable(); myErrorMap.put(new Integer(-803), myDuplicateKeyException.class); myErrorMap.put(new Integer(-1015), myStaleConnectionException.class); myErrorMap.put("S1000", MyTableNotFoundException.class); setUserDefinedMap(myErrorMap); ... } }
- Clase WSCallHelper
- Esta clase proporciona dos métodos que permiten utilizar métodos y clases
específicas del proveedor que no cumplen con las API JDBC estándar (y no son parte
de los paquetes de ampliación de WebSphere Application Server).
- Método jdbcCall()
Con el uso del método estático jdbcCall(), puede invocar métodos JDBC no estándar específicos del proveedor en los objetos JDBC. (Para obtener más información, consulte el tema WSCallHelper de documentación de la API). El segmento de código siguiente ilustra el uso de este método con un origen de datos de DB2:
Connection conn = ds.getConnection(); // get connection attribute String connectionAttribute =(String) WSCallHelper.jdbcCall(DataSource.class, ds, "getConnectionAttribute", null, null); // setAutoClose to false WSCallHelper.jdbcCall(java.sql.Connection.class, conn, "setAutoClose", new Object[] { new Boolean(false)}, new Class[] { boolean.class }); // get datastorehelper DataStoreHelper dshelper = WSCallHelper.getDataStoreHelper(ds);
- Método jdbcPass()
Utilice este método para aprovechar las clases JDBC no estándar que algunos proveedores de base de datos suministran. Estas clases contienen métodos que requieren que se pasen como parámetros objetos JDBC de sus proveedores.
En particular, las implementaciones de Oracle pueden implicar el uso de clases no estándar facilitadas por el proveedor. Los métodos contenidos dentro de estas clases incluyen:
oracle.sql.ArrayDescriptor ArrayDescriptor.createDescriptor(java.lang.String, java.sql.Connection) oracle.sql.ARRAY new ARRAY(oracle.sql.ArrayDescriptor, java.sql.Connection, java.lang.Object) oracle.xml.sql.query.OracleXMLQuery(java.sql.Connection, java.lang.String) oracle.sql.BLOB.createTemporary(java.sql.Connection, boolean, int) oracle.sql.CLOB.createTemporary(java.sql.Connection, boolean, int) oracle.xdb.XMLType.createXML(java.sql.Connection, java.lang.String)
El siguiente código de ejemplo muestra cómo utilizar jdbcPass para invocar el método Oracle XMLType.createXML en una conexión. Esta función Oracle crea un objeto de tipo XML fuera de los datos XML que la base de datos pasa a la aplicación.
XMLType poXML = (XMLType)(WSCallHelper.jdbcPass(XMLType.class, "createXML", new Object[]{conn,poString}, new Class[]{java.sql.Connection.class, java.lang.String.class}, new int[]{WSCallHelper.CONNECTION,WSCallHelper.IGNORE}));
Para ver más ejemplos del uso de jdbcPass y una lista completa de parámetros de método, consulte la documentación de la API para la clase WSCallHelper. En este centro de información, acceda a la documentación de la API siguiendo estos pasos:- Pulse Referencia > Documentación de al API de desarrollador > Interfaces de programación de aplicaciones
- Pulse com.ibm.websphere.rsadapter
- En la cabecera Resumen de clase, pulse WSCallHelper
AVISO: el uso del método jdbcPass() provoca que el objeto JDBC se utilice fuera de los mecanismos de protección de WebSphere Application Server. La realización de determinadas operaciones (como el establecimiento de autoCommit o los valores de aislamiento de transacciones, etc.) fuera de estos mecanismos protectores causará problemas con el uso futuro de estas conexiones agrupadas. IBM no garantiza la estabilidad del objeto después de la invocación de este método; es responsabilidad del usuario asegurarse de que la invocación de este método no realiza operaciones que dañan el objeto. Utilícelo bajo su propia responsabilidad.Debido a estos problemas potenciales, WebSphere Application Server controla estrictamente qué métodos se permite invocar utilizando el soporte del método jdbcPass(). Si requiere soporte de un método que no se ha enumerado previamente en este documento, póngase en contacto con el servicio de soporte de WebSphere Application Server y tenga a mano la información sobre el método que requiere.
- Método jdbcCall()