-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathdocumentation.html
More file actions
345 lines (329 loc) · 16 KB
/
documentation.html
File metadata and controls
345 lines (329 loc) · 16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Open J Proxy Documentation - Getting started guide, installation, and configuration">
<title>Documentation - Open J Proxy</title>
<link rel="stylesheet" href="css/style.css">
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-FF9FNL354M"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-FF9FNL354M');
</script>
</head>
<body>
<!-- Header -->
<header>
<div class="header-container">
<div class="logo">
<img src="images/ojp-logo.png" alt="Open J Proxy Logo">
<span>Open J Proxy</span>
</div>
<button class="mobile-menu-toggle" aria-label="Toggle menu">
<span></span>
<span></span>
<span></span>
</button>
<nav>
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="products.html">Products</a></li>
<li><a href="documentation.html" class="active">Documentation</a></li>
<li><a href="use-cases.html">Use Cases</a></li>
<li><a href="fit-assessment.html">Fit Assessment</a></li>
<li><a href="about.html">About</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</nav>
</div>
</header>
<div class="menu-overlay"></div>
<!-- Hero Section -->
<section class="hero">
<div class="hero-container">
<h1>Documentation</h1>
<p>Everything you need to get started with Open J Proxy</p>
</div>
</section>
<!-- Quick Start -->
<section class="section section-light">
<div class="container">
<div class="section-title">
<h2>Quick Start Guide</h2>
<p>Get up and running in 5 minutes</p>
</div>
<div class="feature-card">
<h3>Step 1: Start the OJP Server</h3>
<p>The easiest way to get started is using Docker:</p>
<div class="code-block">
<code>docker run --rm -d --network host rrobetti/ojp:0.4.16-beta</code>
</div>
<p style="margin-top: 1rem;">For production deployments, you can also run as a standalone JAR or deploy to Kubernetes.</p>
</div>
<div class="feature-card mt-2">
<h3>Step 2: Add the OJP JDBC Driver</h3>
<p>For Maven projects, add this dependency to your pom.xml:</p>
<div class="code-block">
<code><dependency><br>
<groupId>org.openjproxy</groupId><br>
<artifactId>ojp-jdbc-driver</artifactId><br>
<version>0.4.16-beta</version><br>
</dependency></code>
</div>
<p style="margin-top: 1rem;">For Gradle projects:</p>
<div class="code-block">
<code>implementation 'org.openjproxy:ojp-jdbc-driver:0.4.16-beta'</code>
</div>
<p style="margin-top: 1rem;"><strong>Spring Boot users:</strong> use <code>spring-boot-starter-ojp</code> instead — it includes the driver and auto-configures the datasource. See the <a href="https://github.com/Open-J-Proxy/ojp/tree/main/documents/java-frameworks/spring-boot" target="_blank">Spring Boot integration guide</a>; steps 3 and 4 below are not required.</p>
</div>
<div class="feature-card mt-2">
<h3>Step 3: Update Your JDBC Configuration</h3>
<p>Update your database driver class:</p>
<div class="code-block">
<code>org.openjproxy.jdbc.Driver</code>
</div>
<p style="margin-top: 1rem;">Update your JDBC URL by prefixing it with OJP connection info:</p>
<div class="code-block">
<code>// PostgreSQL<br>
jdbc:ojp[localhost:1059]_postgresql://user@localhost:5432/mydb<br><br>
// MySQL<br>
jdbc:ojp[localhost:1059]_mysql://localhost:3306/mydb<br><br>
// Oracle<br>
jdbc:ojp[localhost:1059]_oracle:thin:@localhost:1521/XEPDB1<br><br>
// SQL Server<br>
jdbc:ojp[localhost:1059]_sqlserver://localhost:1433;databaseName=mydb</code>
</div>
</div>
<div class="feature-card mt-2">
<h3>Step 4: Run Your Application</h3>
<p>That's it! Your application now benefits from:</p>
<ul style="margin-top: 1rem; padding-left: 2rem;">
<li>Central connection pooling</li>
<li>Protection from connection storms</li>
<li>Circuit breakers and backpressure</li>
<li>Query monitoring and observability</li>
<li>Elastic scaling support</li>
</ul>
</div>
</div>
</section>
<!-- Configuration -->
<section class="section section-dark">
<div class="container">
<div class="section-title">
<h2>Configuration</h2>
<p>Customize OJP for your environment</p>
</div>
<div class="features-grid">
<div class="feature-card">
<h3>Server Configuration</h3>
<p>Configure the OJP server with environment variables or configuration files:</p>
<ul style="margin-top: 1rem; padding-left: 1.5rem; text-align: left;">
<li><strong>OJP_PORT:</strong> Server port (default: 1059)</li>
<li><strong>OJP_MAX_CONNECTIONS:</strong> Max pool size</li>
<li><strong>OJP_CONNECTION_TIMEOUT:</strong> Timeout in ms</li>
<li><strong>OJP_IDLE_TIMEOUT:</strong> Idle timeout</li>
<li><strong>OJP_LOG_LEVEL:</strong> Logging level</li>
</ul>
</div>
<div class="feature-card">
<h3>Connection Pool Tuning</h3>
<p>Fine-tune HikariCP pool settings for your workload:</p>
<ul style="margin-top: 1rem; padding-left: 1.5rem; text-align: left;">
<li>Maximum pool size</li>
<li>Minimum idle connections</li>
<li>Connection timeout</li>
<li>Idle timeout</li>
<li>Max lifetime</li>
<li>Leak detection threshold</li>
</ul>
</div>
<div class="feature-card">
<h3>Security Settings</h3>
<p>Configure security and authentication:</p>
<ul style="margin-top: 1rem; padding-left: 1.5rem; text-align: left;">
<li>TLS/SSL encryption</li>
<li>Client authentication</li>
<li>Database credentials</li>
<li>Network security</li>
<li>Access control</li>
</ul>
</div>
</div>
</div>
</section>
<!-- Framework Integration -->
<section class="section section-light">
<div class="container">
<div class="section-title">
<h2>Framework Integration</h2>
<p>Works seamlessly with popular Java frameworks</p>
</div>
<div class="features-grid">
<div class="feature-card">
<h3>Spring Boot</h3>
<p>Use the OJP Spring Boot Starter (recommended) for zero-configuration setup. Replace <code>spring-boot-starter-jdbc</code> in your pom.xml:</p>
<div class="code-block">
<code><dependency><br>
<groupId>org.openjproxy</groupId><br>
<artifactId>spring-boot-starter-ojp</artifactId><br>
<version>0.4.16-beta</version><br>
</dependency></code>
</div>
<p style="margin-top: 1rem;">Then set your connection URL in <code>application.properties</code>:</p>
<div class="code-block">
<code>spring.datasource.url=jdbc:ojp[localhost:1059]_postgresql://localhost/mydb<br>
spring.datasource.username=user<br>
spring.datasource.password=secret</code>
</div>
<p style="margin-top: 1rem;">The starter automatically configures the driver class and <code>SimpleDriverDataSource</code>. For projects that cannot use the starter, see the <a href="https://github.com/Open-J-Proxy/ojp/tree/main/documents/java-frameworks/spring-boot" target="_blank">Spring Boot integration guide</a>.</p>
</div>
<div class="feature-card">
<h3>Jakarta EE / Java EE</h3>
<p>Configure data source in your application server:</p>
<div class="code-block">
<code><data-source><br>
<driver>org.openjproxy.jdbc.Driver</driver><br>
<url>jdbc:ojp[localhost:1059]_...</url><br>
</data-source></code>
</div>
</div>
<div class="feature-card">
<h3>Quarkus</h3>
<p>Add OJP configuration to application.properties:</p>
<div class="code-block">
<code>quarkus.datasource.db-kind=postgresql<br>
quarkus.datasource.jdbc.driver=org.openjproxy.jdbc.Driver<br>
quarkus.datasource.jdbc.url=jdbc:ojp[localhost:1059]_...</code>
</div>
</div>
<div class="feature-card">
<h3>Micronaut</h3>
<p>Configure OJP in application.yml:</p>
<div class="code-block">
<code>datasources:<br>
default:<br>
driver-class-name: org.openjproxy.jdbc.Driver<br>
url: jdbc:ojp[localhost:1059]_...</code>
</div>
</div>
</div>
</div>
</section>
<!-- Advanced Topics -->
<section class="section section-dark">
<div class="container">
<div class="section-title">
<h2>Advanced Topics</h2>
</div>
<div class="features-grid">
<div class="feature-card">
<h3>Distributed Transactions</h3>
<p>OJP supports XA distributed transactions for coordinating across multiple resources. Configure XA data sources and use standard JTA transaction managers.</p>
</div>
<div class="feature-card">
<h3>Monitoring & Observability</h3>
<p>Built-in metrics, query tracking, and performance monitoring. Integrate with Prometheus, Grafana, or your monitoring stack.</p>
</div>
<div class="feature-card">
<h3>High Availability</h3>
<p>Deploy multiple OJP server instances for high availability. Load balance connections and handle failover automatically.</p>
</div>
<div class="feature-card">
<h3>Multi-Language Support</h3>
<p>Use the gRPC API to access OJP from non-Java languages. Protocol Buffers definitions available on GitHub.</p>
</div>
<div class="feature-card">
<h3>Pool & Resource Tuning</h3>
<p>Tune connection pool sizes, query timeouts, and resource allocation to match your workload patterns and operational requirements.</p>
</div>
</div>
</div>
</section>
<!-- Resources -->
<section class="section section-light">
<div class="container">
<div class="section-title">
<h2>Additional Resources</h2>
</div>
<div class="features-grid">
<div class="feature-card">
<h3>📚 GitHub Repository</h3>
<p>Access source code, examples, and contribute to the project</p>
<a href="https://github.com/Open-J-Proxy/ojp" target="_blank" class="btn btn-blue" style="margin-top: 1rem;">View on GitHub</a>
</div>
<div class="feature-card">
<h3>🎥 Video Tutorial</h3>
<p>Watch the founder explain OJP architecture and benefits</p>
<a href="https://www.youtube.com/watch?v=JrpT3lghlw4" target="_blank" class="btn btn-blue" style="margin-top: 1rem;">Watch on YouTube</a>
</div>
<div class="feature-card">
<h3>📝 JAVARO Posts</h3>
<p>Deep dive articles about OJP features and use cases</p>
<a href="https://javapro.io/?s=OJP" target="_blank" class="btn btn-blue" style="margin-top: 1rem;">Read Blog</a>
</div>
<div class="feature-card">
<h3>💬 Community Support</h3>
<p>Get help from the community and contribute your knowledge</p>
<a href="https://github.com/Open-J-Proxy/ojp/issues" target="_blank" class="btn btn-blue" style="margin-top: 1rem;">Join Discussion</a>
</div>
</div>
</div>
</section>
<!-- CTA Section -->
<section class="cta-section">
<div class="container">
<h2>Need Help Getting Started?</h2>
<p>Our team is here to assist you</p>
<div class="hero-buttons">
<a href="contact.html" class="btn btn-primary">Contact Support</a>
<a href="https://github.com/Open-J-Proxy/ojp/issues" class="btn btn-secondary" target="_blank">Report an Issue</a>
</div>
</div>
</section>
<!-- Footer -->
<footer>
<div class="footer-container">
<div class="footer-section">
<h4>Open J Proxy</h4>
<p>The open-source Java database control plane — freedom across databases, clouds, and teams. Apache 2.0.</p>
</div>
<div class="footer-section">
<h4>Product</h4>
<ul>
<li><a href="products.html">Products</a></li>
<li><a href="documentation.html">Documentation</a></li>
<li><a href="use-cases.html">Use Cases</a></li>
<li><a href="https://github.com/Open-J-Proxy/ojp" target="_blank">GitHub</a></li>
</ul>
</div>
<div class="footer-section">
<h4>Company</h4>
<ul>
<li><a href="about.html">About Us</a></li>
<li><a href="contact.html">Contact</a></li>
<li><a href="#">Privacy Policy</a></li>
<li><a href="#">Terms of Service</a></li>
</ul>
</div>
<div class="footer-section">
<h4>Community</h4>
<ul>
<li><a href="https://github.com/Open-J-Proxy/ojp" target="_blank">GitHub</a></li>
<li><a href="https://www.linkedin.com/company/open-j-proxy" target="_blank">LinkedIn</a></li>
<li><a href="https://www.reddit.com/r/ojp/" target="_blank">Reddit</a></li>
<li><a href="https://javapro.io/?s=OJP" target="_blank">Publications</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
<p>© 2026 Open J Proxy. All rights reserved.</p>
</div>
</footer>
<script src="js/main.js"></script>
</body>
</html>