Distributed Systems Project 2022/2023
Group A10
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 | |
---|---|---|---|
99202 | Diogo Melita | https://github.com/d-melita | mailto:[email protected] |
99209 | Diogo Cardoso | https://github.com/D-Card | mailto:[email protected] |
99335 | Tiago Silva | https://github.com/trvds | mailto:[email protected] |
The overall system is made up of several modules. The main server is the DistLedgerServer. The clients are the User and the Admin. The definition of messages and services is in the Contract. The future naming server is the 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
To compile the naming server, servers and clients:
mvn compile
To run the naming server, serves or clients navigate to the folder of each module and run:
- For the naming server:
mvn exec:java -Dargs.exec="<max number of servers>"
Naming Server should be runned first since it is the one that will be used by the servers to register themselves. If you run the naming server without the "-Dexec.args" flag the server will take 3 as the default number of max number of servers.
- For the servers:
mvn exec:java -Dexec.args="<port> <qualifier>"
If you run the server without the "-Dexec.args" flag the server will take port number 2001 and qualifier A as default arguments.
- For the admin and user clients:
mvn exec:java
To run the naming server in debug mode you can use the flag:
mvn exec:java -Dargs.exec="<max number of servers>" -Ddebug
To run the server in debug mode you can use the flag:
mvn exec:java -Dexec.args="<port> <qualifier>" -Ddebug
To run the admin and user clients in debug mode you can use the flag:
mvn exec:java -Ddebug
To run the tests for the server and clients:
mvn clean verify