Skip to content

malek-al-edresi/Oracle-Database-AI-26ai-Integration-for-Jasper-Report-Server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

JasperReports Server β€” Login Screen

Oracle Database 26ai Integration
for JasperReports Server

License Oracle ADB JasperReports Docker MariaDB

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.


✨ Key Features

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

πŸ—οΈ Architecture

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
Loading

Service Overview

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

πŸ“‹ Prerequisites

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.


πŸš€ Quick Start

1 Β· Clone the Repository

git clone https://github.com/eng-malek/Oracle-adb-26ai-Integration-for-Jasper-Report-Server.git
cd Oracle-adb-26ai-Integration-for-Jasper-Report-Server

2 Β· Start Oracle ADB

cd oracle-adb
cp .env.example .env        # Edit .env to set secure passwords

Create the required Docker network and volumes:

docker network create oracle-adb-network
docker volume create oracle-adb-data
docker volume create oracle-adb-logs

Launch the database:

docker compose up -d

Note

First-time startup takes 3–5 minutes while Oracle initializes. Monitor progress with:

docker logs -f oracle-adb-26ai

3 Β· Start JasperReports Server

Open a new terminal and run:

cd jasper-server
cp .env.example .env        # Edit .env to customize credentials
docker compose up -d

4 Β· Access the Services

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)

πŸ”Œ Connecting JasperReports to Oracle

Step 1 β€” Install the JDBC Driver

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

Step 2 β€” Create a Data Source in Jasper

  1. Log in to JasperReports β†’ View β†’ Repository.
  2. Right-click Data Sources β†’ Add Resource β†’ Data Source.
  3. 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)
  1. Click Test Connection β†’ Save.

Tip

The hostname oracle-adb resolves automatically inside the Docker network. Use localhost:1522 only from the host machine.


πŸ€– Leveraging AI Features (Oracle 26ai)

Oracle Database 26ai introduces powerful AI capabilities you can expose through JasperReports:

AI Vector Search

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;

Select AI β€” Natural Language to SQL

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?';

In-Database Machine Learning (OML)

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;

πŸ”§ Environment Variables

Oracle ADB (oracle-adb/.env)

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

JasperReports Server (jasper-server/.env)

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.


πŸ”’ Security & Best Practices

  • Secrets Management β€” All credentials are externalized via .env files excluded from Git.
  • Oracle Wallet β€” For mTLS connections, mount your wallet directory via WALLET_HOST_PATH in oracle-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.

πŸ“ Project Structure

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 Reference

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

❓ Troubleshooting

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 errors
JasperReports 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 jasperreports
Cannot connect Jasper to Oracle β€” "Network adapter" error

Ensure both stacks share the same Docker network:

docker network inspect oracle-adb-network

Both 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.


πŸ› οΈ Tech Stack

Oracle JasperReports MariaDB Docker


🀝 Contributing

Contributions, issues, and feature requests are welcome!

  1. Fork the repository.
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Commit your changes: git commit -m "feat: add amazing feature"
  4. Push to the branch: git push origin feature/amazing-feature
  5. Open a Pull Request.

⚠️ Disclaimer

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.


πŸ“„ License

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!

About

Oracle Autonomous Database 26ai integration with JasperReports Server using Docker, showcasing AI-powered queries and enterprise reporting.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors