A fully containerized environment for integrating Oracle Autonomous Database Free 26ai
with JasperReports Server (Community Edition) β featuring AI Vector Search,
Select AI, and In-Database Machine Learning capabilities.
| Feature | Description |
|---|---|
| Oracle ADB Free 26ai | Latest converged database with native AI Vector Search, Select AI, and OML |
| JasperReports Server CE | Enterprise-grade reporting, dashboards, and ad-hoc analytics |
| Zero-Install Setup | Fully containerized β just docker compose up and go |
| AI-Ready Data Layer | Store embeddings, run similarity searches, and feed results to reports |
| Secure by Default | Isolated Docker network, .env-based secrets, Oracle Wallet support |
graph TB
subgraph DockerNet["π³ Docker Network β oracle-adb-network"]
direction TB
ODB["ποΈ Oracle ADB Free 26ai<br/>ββββββββββββββ<br/>Ports: 1521 Β· 1522 Β· 8443 Β· 27017"]
MDB["ποΈ MariaDB<br/>ββββββββββββββ<br/>Jasper Metadata Store"]
JS["π JasperReports Server CE<br/>ββββββββββββββ<br/>Port: 9091 β 8080"]
end
User["π€ Developer / Analyst"]
User -- "Browser :9091" --> JS
User -- "SQL Client :1522" --> ODB
JS -- "JDBC (ojdbc8)" --> ODB
MDB -- "Internal Metadata" --> JS
style DockerNet fill:#1a1a2e,stroke:#16213e,color:#e0e0e0
style ODB fill:#F80000,stroke:#cc0000,color:#ffffff
style JS fill:#007396,stroke:#005a75,color:#ffffff
style MDB fill:#003545,stroke:#002030,color:#ffffff
style User fill:#4a90d9,stroke:#2d6cb4,color:#ffffff
| Service | Container | Image | Role |
|---|---|---|---|
| Oracle ADB | oracle-adb-26ai |
ghcr.io/oracle/adb-free:latest-26ai |
Application & data layer (ATP workload) |
| JasperReports | jasperreports |
bitnami/jasperreports:latest |
Reporting server & dashboard UI |
| MariaDB | mariadb |
bitnami/mariadb:latest |
Repository DB for JasperServer metadata |
| Requirement | Minimum | Recommended |
|---|---|---|
| Docker Engine | 20.10+ | Latest stable |
| Docker Compose | v2.0+ | Latest stable |
| RAM allocated to Docker | 6 GB | 8β10 GB |
| Disk Space | 10 GB | 20 GB+ |
| Git | 2.x | Latest |
Warning
Oracle ADB Free 26ai is resource-intensive. If the container exits immediately or fails to start, increase Docker's memory allocation in Docker Desktop β Settings β Resources.
git clone https://github.com/eng-malek/Oracle-adb-26ai-Integration-for-Jasper-Report-Server.git
cd Oracle-adb-26ai-Integration-for-Jasper-Report-Servercd oracle-adb
cp .env.example .env # Edit .env to set secure passwordsCreate the required Docker network and volumes:
docker network create oracle-adb-network
docker volume create oracle-adb-data
docker volume create oracle-adb-logsLaunch the database:
docker compose up -dNote
First-time startup takes 3β5 minutes while Oracle initializes. Monitor progress with:
docker logs -f oracle-adb-26aiOpen a new terminal and run:
cd jasper-server
cp .env.example .env # Edit .env to customize credentials
docker compose up -d| Service | URL / Address | Credentials |
|---|---|---|
| JasperReports UI | http://localhost:9091/jasperserver |
jasperadmin / jasperadmin |
| Oracle Database | localhost:1522 (TCPS) Β· localhost:1521 (Classic) |
ADMIN / (as set in .env) |
| Oracle ORDS | https://localhost:8443/ords |
ADMIN / (as set in .env) |
Download ojdbc8.jar from Oracle's JDBC Downloads, then copy it into the running container:
docker cp ojdbc8.jar jasperreports:/opt/bitnami/jasperreports/apache-tomcat/lib/
docker restart jasperreports- Log in to JasperReports β View β Repository.
- Right-click Data Sources β Add Resource β Data Source.
- Configure:
| Field | Value |
|---|---|
| Type | JDBC Data Source |
| Driver | oracle.jdbc.OracleDriver |
| URL | jdbc:oracle:thin:@oracle-adb:1522/ORCLPDB1 |
| Username | ADMIN |
| Password | (your ADMIN_PASSWORD from .env) |
- Click Test Connection β Save.
Tip
The hostname oracle-adb resolves automatically inside the Docker network. Use localhost:1522 only from the host machine.
Oracle Database 26ai introduces powerful AI capabilities you can expose through JasperReports:
Store and query vector embeddings directly in Oracle for semantic search:
-- Create a table with a VECTOR column
CREATE TABLE product_embeddings (
id NUMBER GENERATED ALWAYS AS IDENTITY,
name VARCHAR2(200),
embedding VECTOR(384, FLOAT32)
);
-- Find the 5 most similar products to a query vector
SELECT name, VECTOR_DISTANCE(embedding, :query_vector, COSINE) AS similarity
FROM product_embeddings
ORDER BY similarity
FETCH FIRST 5 ROWS ONLY;Use DBMS_CLOUD_AI to translate plain-English questions into SQL:
-- Ask a question in natural language
SELECT AI NARRATE 'What were the top 5 products by revenue last quarter?';Train and score ML models inside the database, then visualize predictions in JasperReports:
-- Example: Apply an in-database classification model
SELECT PREDICTION(my_model USING *) AS predicted_class
FROM customer_data;| Variable | Description | Default |
|---|---|---|
WALLET_PASSWORD |
Oracle Wallet encryption password | ChangeThisWalletPassword123! |
ADMIN_PASSWORD |
Password for the ADMIN database user |
ChangeThisAdminPassword123! |
WALLET_HOST_PATH |
Host path to mount Oracle Wallet files | ./wallet |
| Variable | Description | Default |
|---|---|---|
JASPER_USER |
JasperReports admin username | jasperadmin |
JASPER_PASSWORD |
JasperReports admin password | jasperadmin |
DB_USER |
MariaDB user (internal) | bn_jasperreports |
DB_PASSWORD |
MariaDB password (internal) | bitnami |
DB_NAME |
MariaDB database name (internal) | bitnami_jasperreports |
Caution
Never commit .env files to version control. They are already listed in .gitignore.
- Secrets Management β All credentials are externalized via
.envfiles excluded from Git. - Oracle Wallet β For mTLS connections, mount your wallet directory via
WALLET_HOST_PATHinoracle-adb/.env. - Network Isolation β All services communicate over an isolated Docker bridge network (
oracle-adb-network). - Principle of Least Privilege β MariaDB is only accessible to JasperReports internally; it is not exposed on the host.
Oracle-adb-26ai-Integration-for-Jasper-Report-Server/
β
βββ oracle-adb/
β βββ docker-compose.yaml # Oracle ADB 26ai service definition
β βββ .env.example # Environment variable template
β βββ README.md # Oracle-specific setup guide
β
βββ jasper-server/
β βββ docker-compose.yaml # JasperReports + MariaDB service definitions
β βββ .env.example # Environment variable template
β βββ README.md # Jasper-specific setup & JDBC guide
β
βββ image/
β βββ Screenshot_*.png # Screenshots & visual assets
β
βββ .gitignore # Git ignore rules (env, wallet, jars, etc.)
βββ LICENSE # Apache License 2.0
βββ README.md # β You are here
| Port | Protocol | Service | Description |
|---|---|---|---|
1521 |
TCP | Oracle ADB | Classic SQL*Net listener |
1522 |
TCPS | Oracle ADB | Secure SQL*Net (TLS) |
8443 |
HTTPS | Oracle ORDS | REST / APEX / ORDS API |
8888 |
HTTP | Oracle ADB | Database Actions (optional) |
27017 |
TCP | Oracle ADB | MongoDB-compatible API |
9091 |
HTTP | JasperReports | Reporting server web UI |
Oracle container exits immediately
Increase Docker's memory allocation to at least 8 GB. On Docker Desktop: Settings β Resources β Memory.
docker logs oracle-adb-26ai # Check for OOM or config errorsJasperReports shows "Login Failed" on first launch
MariaDB may not be fully ready when JasperReports attempts its first connection. Wait 30 seconds, then restart:
docker restart jasperreportsCannot connect Jasper to Oracle β "Network adapter" error
Ensure both stacks share the same Docker network:
docker network inspect oracle-adb-networkBoth oracle-adb-26ai and jasperreports containers must appear in the output.
"Class not found: oracle.jdbc.OracleDriver"
The JDBC driver (ojdbc8.jar) is not installed. Follow the JDBC driver installation steps above.
Contributions, issues, and feature requests are welcome!
- Fork the repository.
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m "feat: add amazing feature" - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request.
This is an unofficial community project and is not affiliated with or endorsed by Oracle Corporation or Cloud Software Group (Jaspersoft). All trademarks belong to their respective owners. Standard license terms apply.
This project is licensed under the Apache License 2.0 β see the LICENSE file for details.
Maintained by
Eng. Malek Mohammed Al-edresi
Oracle APEX & Database Developer | AI & Vector Search Enthusiast
β If you find this project useful, please consider giving it a star!
