Skip to content

Open-J-Proxy/ojp

Repository files navigation

Open J Proxy

Release

Main CI Spring Boot/Micronaut/Quarkus Integration

License

A type 3 JDBC Driver and Layer 7 Proxy Server to decouple applications from relational database connection management.

"The only open-source JDBC Type 3 driver globally, this project introduces a transparent Quality-of-Service layer that decouples application performance from database bottlenecks. It's a must-try for any team struggling with data access contention, offering easy-to-implement back-pressure and pooling management." (Bruno Bossola - Java Champion and CTO @ Meterian.io)

Discord


OJP Banner

"Buy Me A Coffee"


Value Proposition

OJP protects your databases from overwhelming connection storms by acting as a smart backpressure mechanism. Instead of every application instance opening and holding connections, OJP orchestrates and optimizes database access through intelligent pooling, query flow control, and multi-database support. With minimal configuration changes, you replace native JDBC drivers gaining connection resilience, and safer scalability. Elastic scaling becomes simpler without putting your database at risk.


Quick Start

Get OJP running in under 5 minutes:

1. Start OJP Server

docker run --rm -d --network host rrobetti/ojp:0.3.1-beta

2. Add OJP JDBC Driver to your project

<dependency> <groupId>org.openjproxy</groupId> <artifactId>ojp-jdbc-driver</artifactId> <version>0.3.1-beta</version> </dependency>

3. Update your JDBC URL

Replace your existing connection URL by prefixing with ojp[host:port]_:

// Before (PostgreSQL example) "jdbc:postgresql://user@localhost/mydb" // After  "jdbc:ojp[localhost:1059]_postgresql://user@localhost/mydb" // Oracle example "jdbc:ojp[localhost:1059]_oracle:thin:@localhost:1521/XEPDB1" // SQL Server example "jdbc:ojp[localhost:1059]_sqlserver://localhost:1433;databaseName=mydb"

Use the ojp driver: org.openjproxy.jdbc.Driver

That's it! Your application now uses intelligent connection pooling through OJP.

Alternative Setup: Executable JAR (No Docker)

If Docker is not available in your environment, you can build and run OJP Server as a standalone JAR file:

📖 Executable JAR Setup Guide - Complete instructions for building and running OJP Server as a standalone executable JAR with all dependencies included.


Documentation

High Level Solution

OJP High Level Design

  • The OJP JDBC driver is used as a replacement for the native JDBC driver(s) previously used with minimal change, the only change required being prefixing the connection URL with ojp_.
  • Open Source: OJP is an open-source project that is free to use, modify, and distribute.
  • The OJP server is deployed as an independent service that serves as a smart proxy between the application(s) and their respective relational database(s), controlling the number of connections open against each database.
  • Smart Connection Management: The proxy ensures that database connections are allocated only when needed, improving scalability and resource utilization.
  • Elastic Scalability: OJP allows client applications to scale elastically without increasing the pressure on the database.
  • gRPC Protocol is used to facilitate the connection between the OJP JDBC Driver and the OJP Server, allowing for efficient data transmission over a multiplexed channel.
  • OJP Server uses HikariCP connection pools to efficiently manage connections.
  • OJP supports multiple relational databases - in theory it can support any relational database that provides a JDBC driver implementation.
  • OJP simple setup just requires the OJP library in the classpath and the OJP prefix added to the connection URL (e.g., jdbc:ojp[host:port]_h2:~/test where host:port represents the location of the OJP server).

Further documents


Vision

Provide a free and open-source solution for a relational database-agnostic proxy connection pool. The project is designed to help efficiently manage database connections in microservices, event-driven architectures, or serverless environments while maintaining high scalability and performance.


Contributing & Developer Guide

Welcome to OJP! We appreciate your interest in contributing. This guide will help you get started with development.


Partners

Comunidade Brasil JUG       Comunidade Brasil JUG       Materian       Materian       Java Challengers