Jun 22, 2026 Replies: 12 jRDC3 Server TemplateVersion: 3.62 (based on jRDC3 Server version 3.01) GitHub: https://github.com/pyhoon/jrdc3-server-template OverviewA B4J template for creating a jRDC3 remote database server — an HTTP-based middleware that bridges B4X client applications (B4A, B4i, B4J) with your database, exposing SQL operations through a simple binary-serialized protocol. Note: Connections between clients and server are bi-directional. Work with jRDC2 Client template and jRDC3 Client template. Attachments jRDC3r3.png 437.1 KB · Views: 625 jRDC3 Server (3.62).b4xtemplate jRDC3 Server (3.62).b4xtemplate 36.5 KB · Views: 88 Last edited: Aug 28, 2026 Click to expand...
jRDC3 Server TemplateVersion: 3.62 (based on jRDC3 Server version 3.01) GitHub: https://github.com/pyhoon/jrdc3-server-template OverviewA B4J template for creating a jRDC3 remote database server — an HTTP-based middleware that bridges B4X client applications (B4A, B4i, B4J) with your database, exposing SQL operations through a simple binary-serialized protocol. Note: Connections between clients and server are bi-directional. Work with jRDC2 Client template and jRDC3 Client template.
aeric Expert Licensed User Longtime User Jun 22, 2026 #2 Features Multi-database support — SQLite, MySQL, MariaDB, MSSQL, PostgreSQL, Firebird, DBF Zero-config SQLite — works out of the box with a bundled sample database HTTP API — clients send DBCommand objects over HTTP and receive DBResult responses Batch transactions — execute multiple INSERT/UPDATE/DELETE statements atomically SSL/TLS — optional HTTPS with configurable keystore Auto-provisioning — creates tables and seed data on first run Health check — /test endpoint verifies database connectivity Status dashboard — browser-based UI at / with HTMX-powered auto-refresh Request log viewer — real-time request log via HTMX polling, shown in a modal Debug mode — hot-reload SQL queries from config file on each request 6 build configurations — one-click select the database driver in the IDE Last edited: Jun 23, 2026
Features Multi-database support — SQLite, MySQL, MariaDB, MSSQL, PostgreSQL, Firebird, DBF Zero-config SQLite — works out of the box with a bundled sample database HTTP API — clients send DBCommand objects over HTTP and receive DBResult responses Batch transactions — execute multiple INSERT/UPDATE/DELETE statements atomically SSL/TLS — optional HTTPS with configurable keystore Auto-provisioning — creates tables and seed data on first run Health check — /test endpoint verifies database connectivity Status dashboard — browser-based UI at / with HTMX-powered auto-refresh Request log viewer — real-time request log via HTMX polling, shown in a modal Debug mode — hot-reload SQL queries from config file on each request 6 build configurations — one-click select the database driver in the IDE
aeric Expert Licensed User Longtime User Jun 23, 2026 #3 Supported Databases DatabaseJDBC DriverDownloadSQLitesqlite-jdbc-min-3.49.1.0https://www.b4x.com/android/forum/threads/project-template-jrdc2-server.165712/#post-1018264 https://drive.usercontent.google.com/download?id=1YS9ldF64eMfQ8em4h6C_gxGpvEFGRMQOMySQLmysql-connector-j-9.3.0https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/9.3.0/mysql-connector-j-9.3.0.jarMariaDBmariadb-java-client-3.5.6https://repo1.maven.org/maven2/org/...va-client/3.5.6/mariadb-java-client-3.5.6.jarMSSQLjtds-1.3.1 / mssql-jdbc-12.2.1https://repo1.maven.org/maven2/net/sourceforge/jtds/jtds/1.3.1/jtds-1.3.1.jar https://repo1.maven.org/maven2/com/...jdbc/12.2.1.jre11/mssql-jdbc-12.2.1.jre11.jarPostgreSQLpostgresql-42.6.0https://repo1.maven.org/maven2/org/postgresql/postgresql/42.6.0/postgresql-42.6.0.jarFirebirdjaybird-5.0.0.java11https://repo1.maven.org/maven2/org/firebirdsql/jdbc/jaybird/5.0.0.java11/jaybird-5.0.0.java11.jarDBFjavadbf-1.13.2 + dbschema-dbf-jdbc + H2https://www.b4x.com/android/forum/threads/dbf-reading-visual-foxpro-dbf-using-jdbc.136840/ https://www.b4x.com/android/forum/threads/h2-database.132688/ https://repo1.maven.org/maven2/com/github/albfernandez/javadbf/1.13.2/javadbf-1.13.2.jar https://dbschema.com/download/dbschema_windows_10_2_1.zip https://github.com/h2database/h2database/releases/download/version-2.4.240/h2-2025-09-22.zip Note: Please check vulnerabilities before download. These versions are tested by me during development of jRDC2 Server Template. You can always download the newer versions. Last edited: Jun 23, 2026
Supported Databases DatabaseJDBC DriverDownloadSQLitesqlite-jdbc-min-3.49.1.0https://www.b4x.com/android/forum/threads/project-template-jrdc2-server.165712/#post-1018264 https://drive.usercontent.google.com/download?id=1YS9ldF64eMfQ8em4h6C_gxGpvEFGRMQOMySQLmysql-connector-j-9.3.0https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/9.3.0/mysql-connector-j-9.3.0.jarMariaDBmariadb-java-client-3.5.6https://repo1.maven.org/maven2/org/...va-client/3.5.6/mariadb-java-client-3.5.6.jarMSSQLjtds-1.3.1 / mssql-jdbc-12.2.1https://repo1.maven.org/maven2/net/sourceforge/jtds/jtds/1.3.1/jtds-1.3.1.jar https://repo1.maven.org/maven2/com/...jdbc/12.2.1.jre11/mssql-jdbc-12.2.1.jre11.jarPostgreSQLpostgresql-42.6.0https://repo1.maven.org/maven2/org/postgresql/postgresql/42.6.0/postgresql-42.6.0.jarFirebirdjaybird-5.0.0.java11https://repo1.maven.org/maven2/org/firebirdsql/jdbc/jaybird/5.0.0.java11/jaybird-5.0.0.java11.jarDBFjavadbf-1.13.2 + dbschema-dbf-jdbc + H2https://www.b4x.com/android/forum/threads/dbf-reading-visual-foxpro-dbf-using-jdbc.136840/ https://www.b4x.com/android/forum/threads/h2-database.132688/ https://repo1.maven.org/maven2/com/github/albfernandez/javadbf/1.13.2/javadbf-1.13.2.jar https://dbschema.com/download/dbschema_windows_10_2_1.zip https://github.com/h2database/h2database/releases/download/version-2.4.240/h2-2025-09-22.zip Note: Please check vulnerabilities before download. These versions are tested by me during development of jRDC2 Server Template. You can always download the newer versions.
aeric Expert Licensed User Longtime User Jun 23, 2026 #4 Getting StartedUsing the template (end-user) Copy or install the .b4xtemplate file from release/ into your B4J Additional Libraries folder. In B4J, create a new project using the jRDC3 Server template. Select your database Build Configuration (SQLite is the default). Open Files/config.properties and set your database connection details. Press F5 (Run). Visit http://127.0.0.1:17178/ to see the status dashboard. Building the template (from source) using #Macros Clone jRDC3.b4j to $APPNAME$.b4j. Open $APPNAME$.b4j in a new B4J windows. Remove #Macro Step 1 to Step 5 and close it. Package the template to release/jRDC3 Server (3.60).b4xtemplate. Copy the .b4xtemplate file to B4J's Additional Libraries directory. Check the created template in target directory. Last edited: Jun 23, 2026
Getting StartedUsing the template (end-user) Copy or install the .b4xtemplate file from release/ into your B4J Additional Libraries folder. In B4J, create a new project using the jRDC3 Server template. Select your database Build Configuration (SQLite is the default). Open Files/config.properties and set your database connection details. Press F5 (Run). Visit http://127.0.0.1:17178/ to see the status dashboard. Building the template (from source) using #Macros Clone jRDC3.b4j to $APPNAME$.b4j. Open $APPNAME$.b4j in a new B4J windows. Remove #Macro Step 1 to Step 5 and close it. Package the template to release/jRDC3 Server (3.60).b4xtemplate. Copy the .b4xtemplate file to B4J's Additional Libraries directory. Check the created template in target directory.
aeric Expert Licensed User Longtime User Jun 23, 2026 #5 ConfigurationAll settings are in Files/config.properties: SectionKeyDefaultServerServerPort17178ServerSSLPort0 (disabled)ServerDebugQueriesTrueSQLiteSQLite.DBFilesample.dbMySQLMySQL.JdbcUrljdbc:mysql://localhost:3306/{DBName}MSSQLMSSQL.JdbcUrljdbc:sqlserver://localhost:1433;databaseName={DBName}PostgreSQLPostgresql.JdbcUrljdbc:postgresql://localhost:5432/{DBName}FirebirdFirebird.JdbcUrljdbc:firebirdsql://localhost:3050/{DBName}DBFDBF.DBFDir(directory of .dbf files)SQL Queries(per-database)Predefined CRUD for tbl_category & tbl_products To enable SSL, set SSLPort, SSL_KEYSTORE_FILE, and SSL_KEYSTORE_PASSWORD. Last edited: Jun 23, 2026
ConfigurationAll settings are in Files/config.properties: SectionKeyDefaultServerServerPort17178ServerSSLPort0 (disabled)ServerDebugQueriesTrueSQLiteSQLite.DBFilesample.dbMySQLMySQL.JdbcUrljdbc:mysql://localhost:3306/{DBName}MSSQLMSSQL.JdbcUrljdbc:sqlserver://localhost:1433;databaseName={DBName}PostgreSQLPostgresql.JdbcUrljdbc:postgresql://localhost:5432/{DBName}FirebirdFirebird.JdbcUrljdbc:firebirdsql://localhost:3050/{DBName}DBFDBF.DBFDir(directory of .dbf files)SQL Queries(per-database)Predefined CRUD for tbl_category & tbl_products To enable SSL, set SSLPort, SSL_KEYSTORE_FILE, and SSL_KEYSTORE_PASSWORD.
aeric Expert Licensed User Longtime User Jun 23, 2026 #6 API Endpoints EndpointMethodDescription/GETStatus dashboard (HTML)/testGETHealth check — returns DB connection status as HTML/rdcPOSTExecute a DBCommand (query or batch) — returns DBResult/logGETReturns recent request log entries as HTML (used by dashboard modal) /rdc ProtocolThe /rdc endpoint accepts POST requests with a binary-serialized DBCommand payload: method=query2 — Execute a SELECT query, returns rows via B4XSerializator method=batch2 — Execute multiple DML statements in a single transaction Both client and server share the DBCommand / DBResult type definitions. Last edited: Jun 23, 2026
API Endpoints EndpointMethodDescription/GETStatus dashboard (HTML)/testGETHealth check — returns DB connection status as HTML/rdcPOSTExecute a DBCommand (query or batch) — returns DBResult/logGETReturns recent request log entries as HTML (used by dashboard modal) /rdc ProtocolThe /rdc endpoint accepts POST requests with a binary-serialized DBCommand payload: method=query2 — Execute a SELECT query, returns rows via B4XSerializator method=batch2 — Execute multiple DML statements in a single transaction Both client and server share the DBCommand / DBResult type definitions.
aeric Expert Licensed User Longtime User Jun 23, 2026 #7 Architecture B4X: ┌──────────────┐ HTTP (B4XSerializator) ┌──────────────────┐ │ B4A / B4i │ ──────────────────────────────> │ jRDC3 Server │ │ / B4J App │ <────────────────────────────── │ (B4J / Java) │ └──────────────┘ └────────┬─────────┘ │ JDBC ▼ ┌──────────────────┐ │ Database │ │ (SQLite/MySQL/ │ │ MSSQL/etc.) │ └──────────────────┘ The server uses B4XSerializator for binary serialization, jserver for HTTP handling, and jsql for database access.
Architecture B4X: ┌──────────────┐ HTTP (B4XSerializator) ┌──────────────────┐ │ B4A / B4i │ ──────────────────────────────> │ jRDC3 Server │ │ / B4J App │ <────────────────────────────── │ (B4J / Java) │ └──────────────┘ └────────┬─────────┘ │ JDBC ▼ ┌──────────────────┐ │ Database │ │ (SQLite/MySQL/ │ │ MSSQL/etc.) │ └──────────────────┘ The server uses B4XSerializator for binary serialization, jserver for HTTP handling, and jsql for database access.
aeric Expert Licensed User Longtime User Jun 23, 2026 #8 Modules ModuleResponsibilityIndexHandler.basServes the dashboard homepage (/) and health check (/test)RDCHandler.basProcesses /rdc requests — query and batch executionRDCConnector.basDatabase connection management and SQL query loadingHttpsFilter.basOptional HTTP-to-HTTPS redirect filterLogHandler.basReturns the last 50 request log entries at /log Last edited: Jun 23, 2026
Modules ModuleResponsibilityIndexHandler.basServes the dashboard homepage (/) and health check (/test)RDCHandler.basProcesses /rdc requests — query and batch executionRDCConnector.basDatabase connection management and SQL query loadingHttpsFilter.basOptional HTTP-to-HTTPS redirect filterLogHandler.basReturns the last 50 request log entries at /log
aeric Expert Licensed User Longtime User Jun 23, 2026 #9 Version: 3.60 (rev 3) With "Request Log" button on Index page (bottom left). Clicking the button shows a modal dialog and list of requests. The log caps at 50 entries (FIFO). The list is auto-refreshes every 2s via HTMX while open. Please download the update on post #1. Last edited: Jun 23, 2026
Version: 3.60 (rev 3) With "Request Log" button on Index page (bottom left). Clicking the button shows a modal dialog and list of requests. The log caps at 50 entries (FIFO). The list is auto-refreshes every 2s via HTMX while open. Please download the update on post #1.
Mashiane Expert Licensed User Longtime User Jun 23, 2026 #10 aeric said: Supported Databases DatabaseJDBC DriverSQLitesqlite-jdbc-min-3.49.1.0MySQLmysql-connector-j-9.3.0MariaDBmariadb-java-client-3.5.6MSSQLjtds-1.3.1 / mssql-jdbc-12.2.1PostgreSQLpostgresql-42.6.0Firebirdjaybird-5.0.0.java11DBFjavadbf-1.13.2 + dbschema-dbf-jdbc + H2 Click to expand... Perhaps include download locations for the drivers. This makes everything easy to find.
aeric said: Supported Databases DatabaseJDBC DriverSQLitesqlite-jdbc-min-3.49.1.0MySQLmysql-connector-j-9.3.0MariaDBmariadb-java-client-3.5.6MSSQLjtds-1.3.1 / mssql-jdbc-12.2.1PostgreSQLpostgresql-42.6.0Firebirdjaybird-5.0.0.java11DBFjavadbf-1.13.2 + dbschema-dbf-jdbc + H2 Click to expand... Perhaps include download locations for the drivers. This makes everything easy to find.
aeric Expert Licensed User Longtime User Jun 23, 2026 #11 Differences from original jRDC3 Server1. LoadSQLCommands Code: Private Sub LoadSQLCommands(Config As Map) Dim newCommands As Map newCommands.Initialize For Each k As String In Config.Keys If k.StartsWith("sql.") Then newCommands.Put(k, Config.Get(k)) End If Next commands = newCommands End Sub Code: Private Sub LoadSQLCommands mCommands.Initialize For Each Key As String In mConfig.Keys If Key.StartsWith(mDbType & ".SQL.") Or Key.StartsWith("SQL.") Then mCommands.Put(Key, mConfig.Get(Key)) End If Next End Sub Check config.properties to find the differences.
Differences from original jRDC3 Server1. LoadSQLCommands Code: Private Sub LoadSQLCommands(Config As Map) Dim newCommands As Map newCommands.Initialize For Each k As String In Config.Keys If k.StartsWith("sql.") Then newCommands.Put(k, Config.Get(k)) End If Next commands = newCommands End Sub Code: Private Sub LoadSQLCommands mCommands.Initialize For Each Key As String In mConfig.Keys If Key.StartsWith(mDbType & ".SQL.") Or Key.StartsWith("SQL.") Then mCommands.Put(Key, mConfig.Get(Key)) End If Next End Sub Check config.properties to find the differences.
aeric Expert Licensed User Longtime User Jul 26, 2026 #12 Version: 3.61 What's New Change dependency to jServer5 library Support jrdc3-client-template v3.61 Related topic: [B4X] jRDC3 - remote database connector This is version 3 of the beloved RDC / jRDC feature - a middleware server that makes it simple to safely connect clients and remote SQL database servers. This update simplifies the clients API (the previous API was implemented before Resumable Subs feature was fully implemented). The data... www.b4x.com
Version: 3.61 What's New Change dependency to jServer5 library Support jrdc3-client-template v3.61 Related topic: [B4X] jRDC3 - remote database connector This is version 3 of the beloved RDC / jRDC feature - a middleware server that makes it simple to safely connect clients and remote SQL database servers. This update simplifies the clients API (the previous API was implemented before Resumable Subs feature was fully implemented). The data... www.b4x.com
aeric Expert Licensed User Longtime User Aug 28, 2026 #13 Version: 3.62 What's New Minor updates in code, build configuration, config.properties Use jServer (version 5) Compile with B4J v10.7 Beta
Version: 3.62 What's New Minor updates in code, build configuration, config.properties Use jServer (version 5) Compile with B4J v10.7 Beta