or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

configuration.mdexceptions.mdindex.mdsession-management.md
tile.json

tessl/maven-org-seleniumhq-selenium--selenium-session-map-jdbc

JDBC-backed session map implementation for Selenium Grid providing database-backed storage for distributed WebDriver sessions.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/org.seleniumhq.selenium/selenium-session-map-jdbc@4.33.x

To install, run

npx @tessl/cli install tessl/maven-org-seleniumhq-selenium--selenium-session-map-jdbc@4.33.0

index.mddocs/

Selenium JDBC Session Map

The Selenium JDBC Session Map provides a database-backed implementation of the SessionMap interface for Selenium Grid. It enables distributed session management through database persistence, allowing WebDriver session state to be stored, retrieved, and shared across multiple grid nodes for enterprise-scale browser automation infrastructure.

Package Information

  • Package Name: selenium-session-map-jdbc
  • Package Type: maven
  • Group ID: org.seleniumhq.selenium
  • Artifact ID: selenium-session-map-jdbc
  • Language: Java
  • Installation: Add to your Maven dependencies or use with Selenium Grid
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-session-map-jdbc</artifactId>
    <version>4.33.0</version>
</dependency>

Core Imports

import org.openqa.selenium.grid.sessionmap.jdbc.JdbcBackedSessionMap;
import org.openqa.selenium.grid.sessionmap.jdbc.JdbcSessionMapOptions;
import org.openqa.selenium.grid.sessionmap.jdbc.JdbcSessionMapFlags;
import org.openqa.selenium.grid.sessionmap.jdbc.JdbcException;
import org.openqa.selenium.grid.sessionmap.SessionMap;
import org.openqa.selenium.grid.data.Session;
import org.openqa.selenium.remote.SessionId;
import org.openqa.selenium.grid.config.Config;
import org.openqa.selenium.events.EventBus;
import org.openqa.selenium.remote.tracing.Tracer;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.ImmutableCapabilities;
import org.openqa.selenium.NoSuchSessionException;
import java.sql.Connection;
import java.sql.SQLException;
import java.net.URI;
import java.time.Instant;
import java.io.Closeable;

Basic Usage

Creating a JDBC Session Map

import org.openqa.selenium.grid.config.Config;
import org.openqa.selenium.grid.sessionmap.jdbc.JdbcBackedSessionMap;

// Using the static factory method with configuration
Config config = // ... your grid configuration
SessionMap sessionMap = JdbcBackedSessionMap.create(config);

// Manual construction with explicit dependencies
import org.openqa.selenium.remote.tracing.Tracer;
import java.sql.Connection;
import org.openqa.selenium.events.EventBus;

Tracer tracer = // ... your tracer instance
Connection connection = // ... your JDBC connection
EventBus eventBus = // ... your event bus
JdbcBackedSessionMap sessionMap = new JdbcBackedSessionMap(tracer, connection, eventBus);

Configuration Setup

import org.openqa.selenium.grid.config.Config;
import org.openqa.selenium.grid.sessionmap.jdbc.JdbcSessionMapOptions;
import java.sql.Connection;

// Configure JDBC connection options
JdbcSessionMapOptions options = new JdbcSessionMapOptions(config);
Connection connection = options.getJdbcConnection();
String jdbcUrl = options.getJdbcUrl();
String jdbcUser = options.getJdbcUser();

Command Line Usage

# Configure Selenium Grid with JDBC session map
java -jar selenium-server-4.33.0.jar standalone \
  --jdbc-url "jdbc:mysql://localhost:3306/selenium_grid" \
  --jdbc-user "grid_user" \
  --jdbc-password "password123"

Architecture

The JDBC Session Map integrates with several key Selenium Grid components:

  • SessionMap Interface: Implements the standard Grid session storage contract
  • Database Persistence: Uses JDBC for durable session state storage
  • Event System Integration: Automatically handles session cleanup via Grid events
  • Distributed Tracing: Provides observability for database operations
  • Configuration Management: Integrates with Grid's config system and command-line flags

Capabilities

Session Management

Core session storage and retrieval operations with database persistence.

public boolean add(Session session);
public Session get(SessionId id) throws NoSuchSessionException;
public void remove(SessionId id);
public URI getUri(SessionId id) throws NoSuchSessionException;
public void removeByUri(URI sessionUri);
public boolean isReady();
public void close();

Session Management

Configuration and Setup

Database connection management and Grid configuration integration for JDBC session storage.

public static SessionMap create(Config config);
public JdbcBackedSessionMap(Tracer tracer, Connection jdbcConnection, EventBus bus);
public Connection getJdbcConnection() throws SQLException;
public String getJdbcUrl();
public String getJdbcUser();

Configuration

Exception Handling

Custom exception types for JDBC session map error scenarios.

public class JdbcException extends WebDriverException {
  public JdbcException();
  public JdbcException(String message);
  public JdbcException(Throwable cause);
  public JdbcException(String message, Throwable cause);
}

Exception Handling

Types

public class JdbcBackedSessionMap extends SessionMap implements Closeable {
  public JdbcBackedSessionMap(Tracer tracer, Connection jdbcConnection, EventBus bus);
  public static SessionMap create(Config config);
  public boolean add(Session session);
  public Session get(SessionId id) throws NoSuchSessionException;
  public void remove(SessionId id);
  public void removeByUri(URI sessionUri);
  public boolean isReady();
  public void close();
}

public class JdbcSessionMapOptions {
  public JdbcSessionMapOptions(Config config);
  public Connection getJdbcConnection() throws SQLException;
  public String getJdbcUrl();
  public String getJdbcUser();
}

public class JdbcSessionMapFlags implements HasRoles {
  public Set<Role> getRoles();
}

public class Session implements Serializable {
  public Session(SessionId id, URI uri, Capabilities stereotype, Capabilities capabilities, Instant startTime);
  public SessionId getId();
  public URI getUri();
  public Capabilities getStereotype();
  public Capabilities getCapabilities();
  public Instant getStartTime();
}

public class JdbcException extends WebDriverException {
  public JdbcException();
  public JdbcException(String message);
  public JdbcException(Throwable cause);
  public JdbcException(String message, Throwable cause);
}