Technology/Installation

Architectural Overview

Database Bindings/Support
  • Oracle

  • Microsoft SQL Server

Installer
  • Based on izPack (Java)

  • Bundles all components

Update/Migration
  • DB updates are based on migration packages

  • Python-based migration framework is included in the server

Python
  • Used as scripting language throughout the application

  • Bundled versions of CPython (native server) and IronPython (GUI client)

  • API provides access to server and client functionality [links]

YAJSW - Yet Another Java Service Wrapper
  • Provides daemon and init scripts on linux, or service on windows

  • Invokes java server, monitoring

Monitoring
  • Checks for DB availability

  • Checks for server availability

  • Web-based interface (Jetty)

Java Server (Standalone)
  • Provides DB interface via Hibernate/JDBC

  • Exposes minimalist REST interface towards monitoring

  • Communicates with native server components via protocol buffers through (local) network socket

  • Logging via slf4j, using logback as backend

  • Invokes native server

Native Server (Piggyback)
  • Accepts incoming client connections

  • Invokes per-session process

  • Connects to java server

  • Communicates with client via XML protocol through network socket

Client
  • Connects to native server

  • Either GUI or headless

  • GUI can either be pre-installed or deployed via ClickOnce

Authentication Schemes
  • Interactive (username/password)

  • Kerberos

  • Single Sign-On via CredentialManager