Bisognerebbe vedere meglio cosa fanno i vari metodi di quel UserService (che io ovviamente non lo so).
Ma a parte questo, una cosa te la posso segnalare subito, che è molto "seria".
Nella seconda servlet tieni dei campi di istanza.
private int contactId;
private UserService service;
Lo sai che la istanza della servlet è UNA sola e tutte le invocazioni ai doXXX possono anche essere effettuate in modo concorrente da più thread distinti?
Che succede se, per dire uno scenario possibile, la sequenza delle richieste fosse:
- l'utente A causa la invocazione di doGet per contactId 100
- l'utente B causa la invocazione di doGet per contactId 200
- l'utente A causa la invocazione di doPost per aggiornare name, surname ecc...
- l'utente B causa la invocazione di doPost per aggiornare name, surname ecc...
?
Questa si chiama "race condition" e ti consiglio di correggere subito, perché è parecchio grave.