| Crates.io | solverforge-service |
| lib.rs | solverforge-service |
| version | 0.3.0 |
| created_at | 2025-12-17 14:14:20.398275+00 |
| updated_at | 2026-01-02 09:08:01.289918+00 |
| description | JVM lifecycle management for SolverForge |
| homepage | https://solverforge.org |
| repository | https://github.com/solverforge/solverforge |
| max_upload_size | |
| id | 1990343 |
| size | 144,864 |
JVM lifecycle management for SolverForge's embedded solver service.
This crate provides automatic management of the Timefold solver service JVM process:
Add to your Cargo.toml:
[dependencies]
solverforge-service = "0.1"
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
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)?;
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()?;
The solver service JAR is:
~/.cache/solverforge/java_home)Apache-2.0