Conexão: Cliente - Servidor - BD

Ae gente, vou tentar ser o mais claro possível, não necessito de exemplos de códigos ainda, só alguns conceitos.

Estou desenvolvendo um software em java que é como uma prova online. É um applet feito em Slick2D, uma engine de jogos em Java. Eu vou precisar de um banco de dados com as perguntas e respostas e também algumas estastísticas sobre o desempenho dos usuários. Entendo também que a forma correta para fazer isso é com um servidor, pois os clientes nunca devem se conectar direto ao BD, muito menos conferir as respostas eles mesmos. Eu também necessito que o servidor possa manusear múltiplos clientes ao mesmo tempo…

Bem as questões são:

Que tipo de tecnologia eu devo usar nesse caso? Posso fazer conexões com socket? Isso não limitaria meus clientes ao número de threads que o servidor suportar? Caso queira suportar digamos 50 ou 100 conexões isso seria viável?

Outra coisa, como eu faço pra manter o servidor up lá na máquina servidor, a qual não tenho acesso físico. Desculpe a ignorância mas eu realmente não sei como fazer isso funcionar, seria o tal Apache? Isso influencia no desenvolvimento do código do servidor em si?

Só pra exemplificar o tipo de conversa que eu terei no cliente e servidor:

Client: Oi, sou um Cliente!
Server: Oi, sou o servidor, como posso lhe ajudar?
Client: Gostaria de fazer uma prova.
Server: Claro, aqui estão suas 10 perguntas, você tem 10 minutos.
Client: Obrigado.


Client: Ei! Terminei! Aqui está meu gabarito!
Server: Okay, vamos ver… Você acertou essa e essa, errou aquela e aquela.
Client: Hmm… posso ver minhas estatísticas?
Server: Claro, aqui estão suas estatísticas de todas as suas provas já feitas.
Client: Obrigado, to indo agora.
Server: Até mais!

Onde o servidor mantem toda a base de dados num banco de dados na mesma máquina em que ele está rodando.

Fazendo uma breve pesquisa eu descobri que posso usar RMI, é fácil e serveria bem meu propósito. A questão então fica sendo, como eu faço pra manter o rmiregistry e o jar do server up numa máquina de um server web que não tenho acesso físico?

Vc tem que solicitar isso a quem administra seu servidor que vc não tem acesso físico…

Ou usar acesso remoto…