Search for a command to run...
μjUniter: Automated Unification of Java Spring-Boot Microservices μjUniter is a research framework designed to automate the migration of Java Spring-Boot microservice systems into functionally equivalent modular monoliths. This artifact supports the evaluation presented in our paper. 1. Project Structure /mjuniter: The core refactoring engine (Spoon-based). /rmgenerator: The synthetic microservice generator (RM* subjects). /subjects: Includes Train Ticket, Piggy Metrics, and SCShowcase (sample-spring-microservice-new-united) (original and united versions). gucc.py: Automation script for generation, unification, and CLOC-based measurement. 2. Prerequisites Java: 17 or higher (Required for AST analysis). Maven: 3.8+ Docker & Docker Compose: For deploying the resulting monoliths. CLOC: Required for gucc.py measurement Download cloc. 3. Quick Start: Building the Tool cd mjuniter mvn clean package 4. Reproducing Paper Results # This script generates, unites, and calculates CLOC metrics automatically python3 gucc.py 5. Manual Execution on Evaluation Subjects To manually run the unification on the provided case studies, ensure the subject directories are placed in the parent directory of μjUniter: Train Ticket: java -jar ./target/μjUniter-dev-0.1.jar μjUniter-train-ticket.properties ../train-ticket-java-united/ts-united-monolith Piggy Metrics java -jar ./target/μjUniter-dev-0.1.jar μjUniter-piggymetrics.properties ../piggymetrics-united/united-monolith SCShowcase: java -jar ./target/μjUniter-dev-0.1.jar μjUniter-sample-spring-microservices.properties ../sample-spring-microservices-new-united/united-monolith 6. Testing & Deployment Deployment After unification, the resulting monolith can be built and deployed via Docker: docker-compose -f docker-compose-united.yml build docker-compose -f docker-compose-united.yml up -d Functional Validation (RQ1) To verify functional parity (the 409 test cases mentioned in the paper): cd {subject-name}-tests mvn test 7. Synthetic Subjects (RM*) Due to the large size of RM-100-0.02, synthetic microservices are generated on-the-fly using the /rmgenerator. This ensures the artifact remains lightweight while allowing for stress-test reproduction.
Published in: Open MIND