

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Suporte para sessões baseadas em script do Gremlin
<a name="access-graph-gremlin-sessions"></a>

É possível usar sessões do Gremlin com transações implícitas no Amazon Neptune. Para obter informações sobre as sessões do Gremlin, consulte [Considerando as sessões na documentação](http://tinkerpop.apache.org/docs/current/reference/#sessions) do TinkerPop Apache. As seções abaixo descrevem como usar sessões do Gremlin com Java.

**Importante**  
No momento, o tempo máximo que o Neptune pode manter uma sessão aberta baseada em script é dez minutos. Se você não fechar uma sessão antes desse tempo, a sessão atingirá o tempo limite e tudo associado a ela será revertido.

**Topics**
+ [Sessões do Gremlin no console do Gremlin](#access-graph-gremlin-sessions-console)
+ [Sessões do Gremlin no Gremlin Language Variant](#access-graph-gremlin-sessions-glv)

## Sessões do Gremlin no console do Gremlin
<a name="access-graph-gremlin-sessions-console"></a>

Se você criar uma conexão remota no Console do Gremlin sem o parâmetro `session`, a conexão remota será criada no modo *sem sessão*. Nesse modo, cada solicitação enviada ao servidor é tratada como uma transação completa por si só, e nenhum estado é salvo entre as solicitações. Se uma solicitação falhar, apenas essa solicitação será revertida.

Se você criar uma conexão remota que *não* use o parâmetro `session`, criará uma sessão baseada em script que durará até que você feche a conexão remota. Cada sessão é identificada por um UUID exclusivo que o console gera e retorna para você.

Veja a seguir um exemplo de uma chamada de console que cria uma sessão. Depois que as consultas são enviadas, outra chamada fecha a sessão e confirma as consultas.

**nota**  
O cliente do Gremlin deve estar sempre fechado para liberar recursos do lado do servidor.

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

Para obter mais informações e exemplos, consulte [Sessões](http://tinkerpop.apache.org/docs/current/reference/#console-sessions) na TinkerPop documentação.

Todas as consultas executadas durante uma sessão formam uma única transação que não é confirmada até que todas as consultas sejam bem-sucedidas e você feche a conexão remota. Se uma consulta falhar, ou se você não fechar a conexão no tempo de vida máximo da sessão permitido pelo Neptune, a transação da sessão não será confirmada e todas as consultas associadas serão revertidas.

## Sessões do Gremlin no Gremlin Language Variant
<a name="access-graph-gremlin-sessions-glv"></a>

No Gremlin Language Variant (GLV), você precisa criar um objeto `SessionedClient` para executar várias consultas em uma única transação, como no exemplo a seguir.

```
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();
}
```

A linha 3 no exemplo anterior cria o objeto `SessionedClient` de acordo com as opções de configuração definidas para o cluster em questão. A *sessionName* string que você passa para o método connect se torna o nome exclusivo da sessão. Para evitar colisões, use um UUID para o nome.

O cliente inicia uma transação de sessão quando é inicializado. Todas as consultas executadas durante o formulário de sessão são confirmadas somente quando você chama `client.close( )`. Novamente, se uma consulta falhar, ou se você não fechar a conexão no tempo de vida máximo da sessão permitido pelo Neptune, a transação da sessão falhará e todas as consultas associadas serão revertidas.

**nota**  
O cliente do Gremlin deve estar sempre fechado para liberar recursos do lado do 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();
    }
}
```