Jeg har et java program som kører med en scanner som snakker med nogle clienter og den slags. Samtidig kører der en webside i JSP som benytter de samme objekter og kontrol klasser. Jeg vil kun intialisere mine kontrol klasser en enkelt gang og dele dem. Problemet opstår når mine java aplets skal bruge kontrol klasserne.
Hvordan får jeg fat i mine kontrol klasser inde fra mine applets uden at initialisere en ny ?
Jeg har hørt noget om en singleton, eller en statisk klasse af en art. Men jeg kan ikke rigtig finde noget om det nogen steder.
Er der nogen som har, eller kan henvise mig til, et godt eksempel ?
En singleton er et pattern du kan slå op. Det er en klasse med en "private" contructor, og en metode der f.eks. hedder getInstance(). Så skal du yderligere have en statisk instansvariabel af samme type som klassen selv. Ved kald af getInstance(), returnere du samme private instansvariabel hver gang.
Arne har ret (as usual :o)).
Hvis du har dette problem, bør du nok overveje om arkitekturen i din app er iorden. Din applet kører først når requestet er afsluttet og alt html er leveret til browseren. Og derfor kan du ikke bruge samme klasser. Appletten kører på klienten i sin egen jvm. Jeg kender ikke din app, men jeg er sikker på at du ville komme længere hvis du minimerede brugen af applets mest muligt eller måske helt lod være med at bruge dem.
Sagen er jo at din applet stiller krav til klienten, som den ikke nødvendigvis kan honorere. Hvis du alligevel VIL have en eventstyret arkitektur, så skulle du nok tænke lidt i AJAX. Det er en stor mundfuld, men det er der nok mere fremtid i end applets
Nu er det her til et studie projekt, så jeg kan desvære ikke helt selv vælge. Jeg skal have en OO struktur i java som benyttes af en slags portscanner som snakker med flere klienter. Og samtidig skal jeg have nogle sider i JSP hvor man kan oprette ting i databasen. Jeg gik ud fra de burde dele de samme kontrol objekter, men hvis det ikke kan lade sig gøre, kan det selvfølgelig ikke være meningen.
Jeg går så ud fra at websiderne skal fungere separat fra resten af programmet. Men hvordan skal jeg så initialisere de objekter og kontrol klasser som jeg skal bruge til webdelen ? Det kan vel ikke passe at hver applet initialiserer sin egen kopi af de kontrol klasser den skal bruger, kan det ? Er der så en måde at dele kontrol klasserne, eller er det bare meningen hver applet intialiserer det den skal bruge ?
Jamen appletten kan ikke dele objekter med serveren.
Appletten kører i een jvm på din klents maskine.
Dine servlets og jsp'ere kører på en anden jvm placeret på den maskine der er din server.
En applet kører i sin egen lukkede sandkasse, og må derfor selv initialisere hvad den skal bruge. Og desuden kører applets og serverside kode på to forskellige tidspunkter:
1. Du sender et request (klikker eller skriver url i adr-linie) 2. Serverside kode renderes/køres på serveren (jsp, servlets etc) 3. Html returneres til browseren 4. Din applet renderes på klientens maskine
Det er også derfor at applets ikke bliver brugt så meget mere. Hvis du sørger for at alt din javakode ligger "serverside", altså undlader at bruge applets, så har du det hele liggende i samme jvm og kan derved genbruge dine objekter.
Synes godt om
Ny brugerNybegynder
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.