Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [Java] server milti client

    Salve....
    Ho creato un server che accetta diverse connessioni client attraverso l'utilizzo dei thread.

    Ogni richiesta prevede l'accesso ad un database.

    Gli script eseguiti dal singolo trhead sono racchiusi in una transazione che ha un livello di isolamento uguale a serializable.

    Se pervengono enne richieste, il server crea i singoli thread e questi eseguono la propria transazione sql..
    Problema: se la transazione di uno dei trhead attivi non va a buon fine l'operazione è annullata e vengono annullate anche le transazioni degli altri thread.

    Perchè????

    Ho pensato: i trhead sono processi eseguiti in parallelo. Le transazioni settate come serializable effettuano i lock sulle tabelle ed evitano accessi concorrenti al db.
    Forse le due cose non possono coesistere???


  2. #2
    nessuno ha smanettato con trhead e db????

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    In teoria dovrebbe essere perche tutti i thread utilizzano la stessa istanza di connessione al db, per cui quando fai un rollback si ripercuote su ogni thread.

    Se il problema è questo dovresti fornire ad ogni modulo una distinta istanza di connessione, anche perchè i livelli di isolamento hanno senso solo nella cooperazione tra piu connessioni, ovvero quando imposti il livello di una certa connessione a serializzabile è perchè intendi tutelare questa connessione da interventi concorrenti di altre.

    Inoltre, vorrei aggiungere che tempo fa ho testato in diversi modi il livello serializable (su oracle 9i lite) e nutro forti dubbi sul suo effettivo funzionamento

  4. #4
    no. non era quello ilproblema.
    avevo volutamente inserito dati non corretti, ma la simulazione d'errore era nel punto sbagliao.

    Cmq ho risolto...il problema è che adesso i thread si comportano come se si dessero il cambio.
    Nel senso.......due trhead hanno una transazione composta da select ed insert. ilprimo thread fa la select, il secondo pure, il primo fa l'insert, il secondo pure.
    perchè???
    io voglio che il primo therad faccia select ed insert. termina e passa la mano al secondo e così via

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    cosi, giusto per scrupolo, hai provato a vedere che succede se imposti come isolamento repeatable read?

  6. #6
    perchè????
    Con serializable mantengo il lock table ed evito che altre transazioni agiscano sul database


  7. #7
    ho risolto tutto ok....
    grazie per l'attenzione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.