Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe eine Java-Klasse mit AXIS als Webservice deployed. Da viele Variablen statisch sind ist ein gleichzeitiger Request natürlich problematisch weil die Klasse ja innerhal einer JRE nur einmal exisitiert.
Gibt es mit Tomcat die Möglichkeit, für jeden Request eine eigene JRE bereitzustellen ?
nun ja , die Hauptklasse hat 3300 Zeilen Code, und es gibt noch einige andere. Ist der einzige sinnvolle Lösungsansatz die Herstellung von Threadsicherheit ?
Wenn man sich dazu entschliesst die Grundregeln der OO zu ignorieren (3300 Zeilen...) kann man etwas lauffähiges bekommen, aber wenn man nicht die Grundregeln des Multithreading einhält, bekommt man keine wirklich lauffähige Serveranwendung.
jaja, mittlerweile weiß ich auch, dass das nicht so der große Wurf ist mit der Riesenklasse - war halt mein erstes größeres JAVA-Progarmm ueh:
Das werde ich aber nicht so ohne Weiteres vom Tisch bekommen.
Nochmal zur Threadsicherheit: Ist es so, dass Tomcat/Axis pro Request einen Thread für meine deployed Class aufmacht? Und ist dann jeweils eine Instanz meiner Klasse aktiv.
Also wie stellt sich das Threadsichermachen in so einem Fall dar? Wenn ich meine Static Klassenvariablen zu Instanzvariablen machen würde - wäre das dann schon im Sinne von Threadsicherheit?
Klassenvariablen zu Instanzvariablen ist ein guter Anfang, grob gesagt musst du dafür sorgen dass Resourcen, welche von mehreren Threads gelichzeitig genutzt werden könnten Threadsicher sind oder Threadsicher genutzt werden.
zB. ist es kein Problem wenn Klassenkonstanten anstatt Klasenvariablen genutzt werden, denn nebenläufiges lesen (ohne Änderungen) bereitet keine Probleme.
Auf Tomcat wird jeder Request von einem Thread abgearbeitet, die Threads liegen in einem Pool.
Danke erstmal für deine Antworten und deine Geduld Maki.
Also läuft pro Thread eine Instanz meiner Klasse (muss ja dann so sein sonst würde das Umstellen auf Instanzvariablen keinen Sinn machen).
Momentan habe ich folgendes Bild : da ich nicht direkt ein Servlet programmiere sondern eine Klasse die ich mit Axis als Webservice einbinde, muss ich kaum mit speziellen Methoden oder Techniken arbeiten - in diesem Fall muss ich nur meine Resourcen gegenseitig abschotten. Beachten muss ich allerding ob die von mir verwendeten Bibliotheken (JDBC-Treiber, log4j usw.) threadsicher sind.