Serialización de conexiones

Sólo se puede mantener una conexión con una base de datos DB2 Everyplace cada vez. En todas las plataformas excepto Palm, DB2 Everyplace da soporte a la serialización de conexiones. Con la serialización de conexiones, las peticiones de conexión con una fuente de datos se ponen en serie (serializan). Sólo se puede realizar una conexión activa con una fuente de datos determinada cada vez. Las otras peticiones de conexión se ponen en una cola. El período de tiempo de espera se puede establecer mediante el atributo SQL_ATTR_LOGIN_TIMEOUT de la función SQLSetConnectAttr(). Los escenarios típicos de la serialización incluyen:

Como ejemplo, las llamadas a CLI /JDBC siguientes establecerán el tiempo de espera de conexión en 10. Es decir, que la aplicación recibirá un error si existe otra conexión con la misma base de datos.

Para la CLI:

 
int i = 10; // tiempo de espera de 10 segundos
rc = SQLSetConnectAttr(hdbc, SQL_ATTR_LOGIN_TIMEOUT, (SQLPOINTER) i, 0);

Para JDBC:

int waitTime = 10; 
String url = "jdbc:db2e:mysample"; 
Properties prop = new Properties(); 
prop.setProperty("LOGIN_TIMEOUT", Integer.toString(waitTime)); 
Connection con = driver.connect(url,prop); 
 

Notas:

  1. El tiempo de espera por omisión es de 0 segundos.

  2. Una aplicación de varios pasos puede conectar con una base de datos utilizando un paso y desconectar de la base de datos utilizando otro paso.

  3. Cuando una aplicación conecte satisfactoriamente con una base de datos, se creará un archivo llamado 'DSYLOCK'. Si el proceso de la aplicación termina de forma anómala, el archivo DSYLOCK se eliminará automáticamente.

  4. Limitación: es posible que la serialización de conexiones no funcione para bases de datos que residan en la unidad de la red.

  5. En un programa JDBC, el valor del tiempo de espera se ignorará y se establecerá en cero si se pasa en una propiedad al método DriverManager.getConnection().

Tareas relacionadas