Avatar billede quiw Nybegynder
06. juli 2008 - 23:16 Der er 10 kommentarer og
1 løsning

Applet - Browser

Jeg har et lille problem, jeg har en chat i java, og når folk lukker chatten, så logger den selvfølgelig ud, der er bare det problem, at når folk opdaterer, eller bevæger sig til et nyt site, så "hænger" klienten stadig online, det betyder at klienterne aldrig logger af ordenligt, kun ved timeout efter 120 sekunder, hvilket ikke er særlig optimalt .. Findes der nogen løsning?
- Tror at problemet er, at browseren stadig har klienten "hængende" i baggrunden, og at den ikke loader forfra, men blot finder klienten fra cache ..
Avatar billede arne_v Ekspert
07. juli 2008 - 00:48 #1
Closer du socket i stop metoden ?
Avatar billede quiw Nybegynder
07. juli 2008 - 01:33 #2
Selvfølgelig, der var fejlen :) ..
- Det virker nu, den logger ud rigtigt, men den har stadig problemer, den tegner stadig noget fra den "gamle" applet, som ikke er der, og der er noget andet grafik som mangler .. Findes der en release/cleanup eller noget, til paint? Og diverse variabler? Så den ikke får det med igen ..
Avatar billede Slettet bruger
07. juli 2008 - 12:32 #3
Husker du at stoppe alle tråde i stop()?
Benytter du dig af statisk data/singleton?
Avatar billede quiw Nybegynder
07. juli 2008 - 13:36 #4
Jeg har stoppet alle mine tråde med stop(), men jeg har nogle:
public static int[]
public static String[]

Hvad bør jeg gøre med det?
Avatar billede Slettet bruger
07. juli 2008 - 21:18 #5
Trådes stop() metode - ikke at forveksle med applets stop() metode - er deprecated (dvs. bør ikke benyttes). Hvad jeg umiddelbart kan læse mig til, er det dog ikke kritisk for din applikation, da den du udelukkende risikere at korrupte data. Da du alligevel vil have al data destrueret og starte fra en frisk igen, kan du undtagelsesvist benytte stop() metoden her. Ønsker du at bruge lidt tid på at få fjernet dine deprecated kald, kan du i stedet bruge interrupt(): http://www.kbs.twi.tudelft.nl/Documentation/Programming/Java/jdk1.4/guide/misc/threadPrimitiveDeprecation.html

For at sikre dig, at du arbejder med data, der er frisk, kan du benytte denne model. Ikke kun de static data behøver at blive gendannet. Også data der er tilgængelige for applet objectet skal genopfriskes (hvis de altså ikke er tilstandsløse).

Du skal kun bruge static data, hvis du ønsker at dele dem mellem forskellige instanser af appletten på samme computer. Ellers vil static data udelukkende give problemer.

Jeg vil tro de hele løser sig, hvis du ser på applet objectet som noget blivende, der eksisterer fra gang til gang og fjerner alt static.


public void init(){
    start();
}
public void start(){
    /*
        Indlæs al data
        Reset eller genopret alle objecter, der indeholder nogen som helst form for data.
    */
}

public void destroy(){
    stop();
}
public void stop(){
    //Stop alle tråde her
}

/1
Avatar billede arne_v Ekspert
08. juli 2008 - 02:42 #6
Har du prøvet at remove alle Swing widgets ?
Avatar billede quiw Nybegynder
08. juli 2008 - 13:33 #7
Hm, umiddelbart sker der ingen ændringer i forhold til før .. Men hvorledes fjerner man dem (Swing widgets)?
Avatar billede arne_v Ekspert
08. juli 2008 - 18:35 #8
Der er forskellige remove metoder og vist ogsaa en removeAll.
Avatar billede quiw Nybegynder
19. november 2008 - 14:54 #9
Oh, det ser ud til at virke, vil du smide et svar? :)
Avatar billede quiw Nybegynder
19. november 2008 - 14:55 #10
Arne? :)
Avatar billede arne_v Ekspert
19. november 2008 - 15:12 #11
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester