Uma aplicação bancária para sistemas distribuídos feita com a biblioteca BFT-SMART. Trabalho final da disciplina de Tópicos avançados em computadores - Tolerância a falhas em sistemas distribuídos 2020/2 da Universidade de Brasília.
Nome | Matrícula |
---|---|
André Filipe Caldas Laranjeira | 16/0023777 |
Hugo Nascimento Fonseca | 16/0008166 |
José Luiz Gomes Nogueira | 16/0032458 |
Victor André Gris Costa | 16/0019311 |
Este projeto utiliza arquivos obtidos da biblioteca BFT-Smart, distribuídos sob a licença Apache License 2.0. Esta seção tem o intuito de avisar o leitor sobre o uso desses arquivos e atender às obrigações legais decorrentes do uso desses arquivos em nosso projeto de software.
Conforme requisitado na seção 4, item 'a', da licença Apache License 2.0, uma cópia completa da licença Apache License 2.0, referente aos arquivos obtidos da biblioteca BFT-Smart, pode ser encontrada em /docs/apache_license_2-0.txt
.
Conforme requisitado na seção 4, item 'b', da licença Apache License 2.0, todos os arquivos obtidos da biblioteca BFT-Smart que foram modificados possuem um aviso claro afirmando que seu conteúdo foi modificado.
Conforme requisitado na seção 4, item 'c', da licença Apache License 2.0, todas as notificações de direitos autorais, patentes, marcas registradas e atribuições foram mantidas nos arquivos obtidos da biblioteca BFT-Smart.
A requisição feita na seção 4, item 'd', da licença Apache License 2.0, não se aplica a nosso projeto, pois a biblioteca BFT-Smart não possuía um arquivo de NOTICE
na data em que seus arquivos foram incluídos nesse projeto.
Além disso, listamos abaixo todos os arquivos e pastas de arquivos obtidos da biblioteca BFT-Smart.
- config/keysECDSA
- config/keysRSA
- config/keysSSL_TLS
- config/keysSunEC
- config/workloads
- config/java.security
- config/logback.xml
- lib/bcpkix-jdk15on-160.jar
- lib/bcprov-jdk15on-160.jar
- lib/bft-smart.jar
- lib/commons-codec-1.11.jar
- lib/core-0.1.4.jar
- lib/logback-classic-1.2.3.jar
- lib/logback-core-1.2.3.jar
- lib/netty-all-4.1.34.Final.jar
- lib/slf4j-api-1.7.25.jar
- config/hosts.config
- config/system.config
Os arquivos abaixo não foram copiados para o projeto, sendo encontrados apenas na biblioteca BFT-Smart. Entretanto, como seu conteúdo foi utilizado para configurar este projeto, decidimos listá-los abaixo por precaução.
- runscripts/smartrun.sh
gson
: para converter data classes para json e vice versajava-jwt
: Para codificar e decodificar jwt
Para rodar o projeto no IntelliJ, será necessário realizar alguns passos de configuração do projeto.
-
Inclua todos os arquivos
.jar
da pastalib
nas bibliotecas utilizadas pelo projeto.Isso pode ser feito clicando com o botão direito no nome do projeto, escolhendo a opção "Open module settings (f4)" e navengando ao menu "Project settings -> Libraries". Lembre-se de colocar os arquivos
.jar
como uma biblioteca do tipo "Java". -
Crie as configurações de construção e execução do projeto.
Para isso, clique canto direito superior da tela, clique em "Add Configuration". As configurações devem ser do tipo "Application". Crie 3 configurações para a classe
BankingServer
e 1 para a classeBankingClient
. Os servidores devem receber um argumento de id, o qual deve ser os números 0, 1 e 2. -
Modifique as configurações de construção e execução do projeto para incluir as opções necessárias da máquina virtual.
Talvez seja necessário habilitar o uso destas opções na tela de edição de configuração de construção e execução pelo link "Modify options" com a marcação da opção "Java -> Add VM options". O valor das opções de máquina virtual deve ser exatamente
-Djava.security.properties="./config/java.security"; -Dlogback.configurationFile="./config/logback.xml"
.