ERLEDIGT
NEIN
NEIN
ANTWORTEN
0
0
ZUGRIFFE
752
752
EMPFEHLEN
-
Hallo Leute,
ich habe folgendes Problem:
Ich habe eine Testanwendung geschrieben, in der dem Nutzer eine Tabelle angezeigt wird und er diese Datensätze ändern,löschen und neue hinzufügen kann.
Soweit so gut. Nun liegt mein Problem in der parallelen Abarbeitung, wenn beispielsweise 2 Nutzer gleichzeitig 2 unterschiedl. Datensätze ändern wollen.
Der Nutzer kann ein Text und eine Zahl eines Datensatzes ändern.
Das Problem ist , dass die Variable text und zahl bei mir global und statisch sein müssen. Global, weil sie ja in den setter und getter Methoden verwendet werden und static weil meine Funktionen public static sein müssen um sie in der jsp verwenden zu können.
Wenn Nutzer A jetzt also auf ändern klickt werden setText und setZahl aufgerufen und die Variablen entsprechend gesetzt.
Wenn aber Nutzer A und B gleichzeit auf ändern klicken, will er ja jeweils 2 unterschiedliche Werte auf eine statische Variable speichern, was natürlich nicht funktioniert und nur der letzte Wert genommen wird.
Hier mal die java und die jsp-Datei für das Ändern:
change.jsp:
HTML-Code:<body> <s:form action="Eingeben"> <s:textfield label="TEXT255" name="text" size="60"/><br/> <s:textfield label="ZAHL6" name="zahl" size="60"/><br/> <s:textfield id="webserverid" name="webserverid" size="50" label="Session-ID"/> <s:hidden id="auswahlid" name="auswahlid"/> <s:submit action="changeEingeben"value="Ändern"/> </s:form>
EingebenAction.java
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
public String change() throws SQLException { System.out.println("\nchange()"); Session session = null; Transaction tr = null; try { Integer usid=user.get(webserverid).getUserID(); System.out.println("UserID bearbeitet: "+usid); System.out.println("auswahlid: "+auswahlid); String uname=user.get(webserverid).getUsername(); System.out.println("Username bearbeitet: "+uname); session = HibernateSessionFactory.getSession(); tr = session.beginTransaction(); Calendar cal = Calendar.getInstance(); SimpleDateFormat formater = new SimpleDateFormat(); String zeit=formater.format(cal.getTime()); Vor_tbspiel_t tbspiel = (Vor_tbspiel_t) session.get(Vor_tbspiel_t.class,auswahlid); tbspiel.setText255(text); tbspiel.setZahl6(zahl); tbspiel.setF_id_a_sb(usid); tbspiel.setDatum_a(zeit); session.update(tbspiel); tr.commit(); } catch (Exception ex) { ex.printStackTrace(); if(tr!=null)tr.rollback(); else{System.out.println("transaction=null");} throw new SQLException("Fehler in change()", ex); } finally { //Session freigeben if (session != null) { HibernateSessionFactory.closeSession(); } } System.out.println("\n\n"); //setWebserverid setText und setZahl zurücksetzen k--;l--; System.out.println("change() zurücksetzt"); return "anlegen"; } .... .... public void setText(String text) { k++; while(k>1){ try { System.out.println("warte in setText"); Thread.sleep(400); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("setText: "+text); this.text = text; } public void setZahl(Integer zahl) { l++; while(l>1){ try { System.out.println("warte in setZahl"); Thread.sleep(400); } catch (InterruptedException e) { e.printStackTrace(); } } if(zahl==null){ zahl=0; } System.out.println("setZahl: "+zahl); this.zahl = zahl; }
Bisher habe ich es so gelöst, dass die Variablen max. von einem Nutzer geändert werden können, bis er fertig ist.
D.h. Nutzer A klickt auf ändern, geht in die setter Methode und dann in die change(). Nutzer B klickt gleichzeitig ändern und muss aber warten bis Nutzer A die change() verlassen hat.
Nur das würde ja heißen, das später mehrere hundert Personen eine Datenbankconnection nur verwenden, weil der Eine auf den Anderen wartet.
Habt ihr vielleicht noch eine Lösung?
grüsse
Ähnliche Themen
-
Problem mit webbasierter Anwendung
Von 7bkahnt im Forum JavaAntworten: 5Letzter Beitrag: 09.04.10, 21:44 -
(Struts2-Anwendung) Abmessungen für Screenshot von laufendem Applet?
Von brines im Forum JavaAntworten: 4Letzter Beitrag: 04.12.07, 15:10 -
Webbasierter Texteditor mit Ajax
Von chpa im Forum Javascript & AjaxAntworten: 23Letzter Beitrag: 29.03.06, 12:55 -
Webbasierter CSS Editor
Von chris4712 im Forum HTML-EditorenAntworten: 4Letzter Beitrag: 15.01.06, 19:30 -
IRC webbasierter client mit PHP
Von knecht im Forum PHPAntworten: 1Letzter Beitrag: 11.06.02, 15:39





Zitieren
Login





