Distributed systems case-study project with:
- Java RMI service for weather operations
- Embedded HTTP API for browser integration
- Web dashboard for live monitoring
common/WeatherService.java: shared RMI contractserver/WeatherServiceImpl.java: in-memory weather store + history + summaryserver/WeatherServer.java: RMI registry binding, HTTP API, static file hosting, simulationclient/WeatherClient.java: CLI RMI clientweb/: dashboard UI assets (index.html,script.js,styles.css)
- JDK 11+ (tested with JDK 24)
- Ports available:
1099(RMI),8080(HTTP)
From project root:
javac -encoding UTF-8 common/WeatherService.java server/WeatherServiceImpl.java server/WeatherServer.java client/WeatherClient.javaStart server from the project root:
java server.WeatherServerIf ports are occupied, run on custom ports:
java -Dweather.http.port=8081 -Dweather.rmi.port=1100 server.WeatherServerRun client:
java client.WeatherClient
java client.WeatherClient PuneOptional remote host/port:
java -Dweather.host=<host> -Dweather.port=<port> client.WeatherClient PuneFor custom local RMI port from above:
java -Dweather.host=localhost -Dweather.port=1100 client.WeatherClient PuneOpen dashboard:
- http://localhost:8080/
- If using custom HTTP port, open that port instead (example:
http://localhost:8081/)
- If using custom HTTP port, open that port instead (example:
GET /api/weather-> all locationsGET /api/weather?location=<name>-> one locationPOST /api/weatherwith JSON body:{"location":"Pune","temperature":31.2,"humidity":65}
GET /api/history?location=<name>&limit=<n>GET /api/summary