

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Compatibilidad con sesiones basadas en scripts de Gremlin
<a name="access-graph-gremlin-sessions"></a>

Puede utilizar sesiones de Gremlin con transacciones implícitas en Amazon Neptune. Para obtener información sobre las sesiones de Gremlin, consulte [Considerar las sesiones](http://tinkerpop.apache.org/docs/current/reference/#sessions) en la documentación de Apache TinkerPop . En las siguientes secciones, se describe cómo utilizar las sesiones de Gremlin con Java.

**importante**  
Actualmente, el tiempo máximo durante el que Neptune puede mantener una sesión abierta es de 10 minutos. Si no cierra una sesión antes de que se agote el tiempo, la sesión expirará y todo lo que se haya hecho volverá a su estado inicial.

**Topics**
+ [Sesiones de Gremlin en la consola de Gremlin](#access-graph-gremlin-sessions-console)
+ [Sesiones de Gremlin en la variante de lenguaje Gremlin](#access-graph-gremlin-sessions-glv)

## Sesiones de Gremlin en la consola de Gremlin
<a name="access-graph-gremlin-sessions-console"></a>

Si crea una conexión remota en la consola de Gremlin sin el parámetro `session`, la conexión remota se crea en el modo *sin sesión* . En este modo, cada solicitud que se envía al servidor se trata como una transacción completa en sí misma y no se guarda ningún estado entre las solicitudes. Si se produce un error en la solicitud, solo se revierte esta.

Si crea una conexión remota que *emplea* el parámetro `session`, crea una sesión basada en script que dura hasta que se cierre la conexión remota. Cada sesión se identifica mediante un UUID único, el cual crea la consola y le devuelve.

A continuación se muestra un ejemplo de una llamada a la consola que crea una sesión. Una vez enviadas las consultas, otra llamada cierra la sesión y confirma las consultas.

**nota**  
El cliente de Gremlin siempre debe estar cerrado para liberar los recursos del servidor.

```
gremlin> :remote connect tinkerpop.server conf/neptune-remote.yaml session
  . . .
  . . .
gremlin> :remote close
```

Para obtener más información y ejemplos, consulte [las sesiones](http://tinkerpop.apache.org/docs/current/reference/#console-sessions) en la TinkerPop documentación.

Todas las consultas que ejecuta durante una sesión forman una única transacción que no se confirma hasta que todas las consultas se completan correctamente y se cierra la conexión remota. Si se produce un error con una solicitud o si no cierra la conexión en el plazo máximo de duración de una sesión que Neptune admite, la transacción de la sesión no se confirmará y todas las solicitudes de la misma se revertirán.

## Sesiones de Gremlin en la variante de lenguaje Gremlin
<a name="access-graph-gremlin-sessions-glv"></a>

En la variante de lenguaje Gremlin (GLV), tiene que crear un objeto `SessionedClient` para emitir varias consultas en una única transacción como se muestra en el siguiente ejemplo.

```
try {                              // line 1
  Cluster cluster = Cluster.open();                    // line 2
  Client client = cluster.connect("sessionName");      // line 3
   ...
   ...
} finally {
  // Always close. If there are no errors, the transaction is committed; otherwise, it's rolled back.
  client.close();
}
```

La línea 3 del ejemplo anterior crea el objeto `SessionedClient` en función de las opciones de configuración establecidas para el clúster en cuestión. La *sessionName* cadena que se pasa al método connect pasa a ser el nombre exclusivo de la sesión. Para evitar las colisiones, utilice un UUID para el nombre.

El cliente inicia una transacción de sesión cuando se inicializa. Todas las consultas que ejecuta durante el formulario de sesión se confirman solo cuando llama a `client.close( )`. Si se produce un error de nuevo con una única solicitud o si no cierra la conexión en el plazo máximo de duración de una sesión que Neptune admite, la transacción de la sesión no se confirmará y todas las solicitudes de la misma se revertirán.

**nota**  
El cliente de Gremlin siempre debe estar cerrado para liberar los recursos del servidor.

```
GraphTraversalSource g = traversal().withRemote(conn);

Transaction tx = g.tx();

// Spawn a GraphTraversalSource from the Transaction.
// Traversals spawned from gtx are executed within a single transaction.
GraphTraversalSource gtx = tx.begin();
try {
  gtx.addV('person').iterate();
  gtx.addV('software').iterate();

  tx.commit();
} finally {
    if (tx.isOpen()) {
        tx.rollback();
    }
}
```