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.
Bin allmählich am verzweifeln. :bahnhof:
Ich habe ein Applet, auf den aber immer nur ein Benutzer zugreifen darf. Jetzt hab ich es so gelöst, das ich ein File benutze um zu erfahren, ob das Applet gerade in Benutzung ist oder nicht. Ging so weit auch ganz gut, es konnte also das Applet nur einmal gestartet werden. Allerdings wenn ein zweiter Aufruf probier wurde hat das Applet vom ersten Aufruf nicht mehr richtig reagiert d.h. einige Buttons reagierten einfach nicht mehr.
Jetzt meine Frage an euch. Habt ihr eine Idee, wie ich das am besten lösen kann?
Hat keiner eine Ahnung wie man ein Applet immer nur von einem Benutzer öffnen kann? Also ich müsste vor dem Start des Applets wissen, ob es bereits läuft. Wie könnte man das vielleicht anstellen? Kann ich vielleicht ein Applet starten, und wenn mein File nicht geöffnet ist das nächste Applet starten und das erste beenden, oder wird dann das zweite Applet auch beendet?
ich fürchte dass man dieses Problem nur auf der server ebene lösen kann.aber ich habe keine idee wie man das machen kann
für Applikationen gibt es der trick dass man einen serversocket in konstruktur öffnet und in Fall einer Exception die Applikation beenden weil eine instance schon läuft. aber bei Applet ist schwiriger weil sie wird vom server aufgerufen und kann auf verschiedene Clients (Computer) ausgeführt werden.
Es muss doch irgendwas geben, wie ich das doch noch lösen kann.
Hab auch keine Ahnung, wie ich das auf Serverebene lösen soll. Kann der Server vor dem Aufruf des Applets nicht überprüfen, ob das File geöffnet ist und wenn es geöffnet ist, einfach nur eine Nachricht an den Benutzer schicken, ohne das Applet aufzurufen?
Gebe es vielleicht die Möglichkeit, vom Applet eine Variable an die HTML-Seite zu übergeben, das bedeutet, wenn diese Variable einen bestimmten Wert hat, dann wird von der Seite das Applet nicht aufgerufen, sondern eine Fehlerseite angezeigt? Wäre das möglich?
Also, so wie es aussieht, habe ich eine Möglichkeit, beim Server zu bestimmen, dass ein Programm nur einmal aufgerufen werden kann. Allerdings ist da jetzt das Problem, dass das Applet ja auf den Client runtergeladen wird und somit weiterhin aufgerufen werden kann, oder hab ich das jetzt falsch verstanden und das Applet kann NUR über den Server gestartet werden.
es gibt auch eine alternative aber die funktioniert nur pro JVM und zwar mit einer statische variable.
so in der art:
public class SingleApplet2 extends JApplet {
public static int i=0;// es gilt nur pro JVM
public SingleApplet2()
{
if(i==0)
{
System.out.println("es läuft kein instance vom Applet");
System.out.println("das Programm kann normal laufen");
i=1;
}
else
{
System.out.println("es laüft schon ein instanz");
return;
}
}
....
Sowas kann nur durch einen Server teilweise kontrolliert werden.
Wer sagt dir denn, daß der User das Applet nicht irgendwann lokal
heruntergeladen hat? Ein Starten des Applets kannst du niemals verhindern;
du kannst jedoch die Aktionen des Applets einschränken/ändern.
1. Applet wird (wie auch immer) gestartet.
2. Applet verbindet sich mit deinem Server über ein Socket und fragt
nach ob es überhaupt..., und wenn ja, was....
3. Server erlaubt 1. Aufruf und teilt dieses an das Applet mit, oder
verweigert dessen weiterarbeiten.
4. Die eigentliche Applet-Funktionalität wird initiiert oder es verabschiedet sich.
5. Das einzig laufende kommt zum Ende und teilt dem Server mit, daß
andere jetzt auch spielen dürfen.
Edit: BTW, wozu braucht man sowas Krummes? :autsch:
Es wird jetzt auf der Serverseite gelöst. Wie weiß ich nicht, weil für den Server jemand anderes zuständig ist. Wenn jemand das Applet runterladen will, lässt sich das Applet nicht starten, hab ich ausprobiert. Die einzige Möglichkeit wäre, die jar-Datei runterzuladen, aber dafür benötigt man Zugriff auf den Server und das hat ja nicht jeder.
Benötigt wird das bei uns in der Firma, weil verschiedene Leute mit dem Applet auf eine Anlage zugreifen und dort aber nicht mehrere Aufrufe durchgeführt werden dürfen, weil sonst die Anlage nicht mehr funktioniert.