Tenho uma aplicação que envia alguns dados em forma de Json para meu servidor, que popula uma tabela. Como eu poderia fazer, em Java, com que cada PC gere um ID e use o mesmo para sempre (mesmo que a máquina ou o serviço reinicie)? Sei que devo enviar esse dado pelo JSON para meu server, mas não sei como criar esse ID.
o que seria esse id?
um numero? uma string? um UUID?
existem diversas formas de fazer isso, um exemplo é usar um gerador de numeros aleatorios ( lembre-se de inicializar com uma semente / seed adequada como a hora atual com precisão de mili / nano segundos ) e salvar o mesmo em um arquivo local
outra forma é ver se o proprio servidor não tem algo que vc possa usar como o hostname ( de repente via variaveis de ambiente )
uma ultima forma é vc exigir um id na inicialização do servico ( via command line customizada ) ou ler a partir de um arquivo de configuração. assim a responsabilidade de ser unico é de quem configura o servidor 
- Quando um novo PC começa a enviar esse json para o servidor, ele faz algum tipo de cadastro? Ou novos PCs podem ser automaticamente adicionados?
- Há necessidade de transferir a identidade de um PC para outro? Por exemplo, se formatar o computador, o id deve ser o mesmo?
- Tem idéia de quantos PCs vao enviar esse json? 5, 50, 5000 ?
- Há algum aspecto de segurança envolvido nisso? Alguém pode querer que um PC se passe por outro por algum motivo?
Há várias formas de se implementar isso, automaticamente ou nao, dependendo das respostas acima, mas eu evoluiria para algo na linha:
- Cria manualmente um arquivo com ID e distribui na instalaçao
- Faça o sistema gerar o arquivo automaticamente na primeira vez que é usado
- Faça o sistema fazer download desse arquivo do servidor da primeira vez que é usado
E por aí vai… Para gerar um id único, um uuid deve ser o suficiente:
UUID.randomUUID()