solverforge-service

Crates.iosolverforge-service
lib.rssolverforge-service
version0.3.0
created_at2025-12-17 14:14:20.398275+00
updated_at2026-01-02 09:08:01.289918+00
descriptionJVM lifecycle management for SolverForge
homepagehttps://solverforge.org
repositoryhttps://github.com/solverforge/solverforge
max_upload_size
id1990343
size144,864
Vittorio Distefano (blackopsrepl)

documentation

https://docs.solverforge.org

README

solverforge-service

JVM lifecycle management for SolverForge's embedded solver service.

Overview

This crate provides automatic management of the Timefold solver service JVM process:

  • JAR Management - Downloads and caches the solver service JAR from Maven
  • Embedded Service - Spawns and manages the JVM process lifecycle
  • Configuration - Port, Java options, timeouts, and paths

Usage

Add to your Cargo.toml:

[dependencies]
solverforge-service = "0.1"

Start Embedded Service

use solverforge_service::{EmbeddedService, ServiceConfig};

// Start with default configuration
let service = EmbeddedService::start(ServiceConfig::default())?;

// Get the solver service client
let solver_service = service.solver_service();

// Service URL for manual use
println!("Service running at: {}", service.url());

// Service is automatically stopped on drop

Custom Configuration

use solverforge_service::ServiceConfig;
use std::time::Duration;

let config = ServiceConfig {
    port: 8080,                              // 0 = auto-assign
    startup_timeout: Duration::from_secs(60),
    java_home: Some("/path/to/java".into()),
    java_opts: vec!["-Xmx2g".into()],
    ..Default::default()
};

let service = EmbeddedService::start(config)?;

Service Lifecycle

let mut service = EmbeddedService::start(ServiceConfig::default())?;

// Check if running
if service.is_running() {
    println!("Port: {}", service.port());
}

// Explicit stop (also called on drop)
service.stop()?;

JAR Source

The solver service JAR is:

  1. Downloaded from Maven Central on first use
  2. Cached in ~/.cache/solverforge/
  3. Reused for subsequent runs

Requirements

  • Java 24+ - Must be installed and in PATH (or set java_home)
  • Network - Required for initial JAR download

Documentation

License

Apache-2.0

Commit count: 0

cargo fmt