Distributed Systems Project 2024
Group A18
(choose one of the following levels and erase the other one)
Difficulty level: I am Death incarnate!
In all source files (namely in the groupIds of the POMs), replace GXX with your group identifier. The group identifier consists of either A or T followed by the group number - always two digits. This change is important for code dependency management, to ensure your code runs using the correct components and not someone else's.
Number | Name | User | |
---|---|---|---|
99309 | Rafael Girão | https://github.com/rafaelsgirao | mailto:[email protected] |
102082 | Simão Sanguinho | https://github.com/simaosanguinho | mailto:[email protected] |
103252 | José Pereira | https://github.com/pereira0x | mailto:[email protected] |
The overall system is made up of several modules. The different types of servers are located in ServerX (where X denotes stage 1, 2 or 3). The clients is in Client. The definition of messages and services is in Contract. The future naming server is in NamingServer.
See the Project Statement for a complete domain and system description.
The Project is configured with Java 17 (which is only compatible with Maven >= 3.8), but if you want to use Java 11 you can too -- just downgrade the version in the POMs.
To confirm that you have them installed and which versions they are, run in the terminal:
javac -version
mvn -version
To compile and install all modules:
mvn clean install
Go to the Contract
directory and run the following command:
mvn exec:exec
Then, go to the NameServer
directory and run the following command:
python3 server.py
Then, go to the ServerR1
directory and run the following command:
mvn compile exec:java
Then, go to the Client
directory and run the following command:
mvn compile exec:java
To debug the NameServer
, run the following command:
python3 server.py -debug
To debug the Client
and ServerR1
, run the following command:
mvn compile exec:java -Ddebug