09. april 2002 - 09:08Der er
6 kommentarer og 1 løsning
Flush/Garbage Collecter æder mine objekter
jeg har et problem med et projekt. Situationen er den at jeg har en Model som indeholder container objekter. Disse containers har så en vector/hashmap som indeholder diverse objekter af de forskellige typer.
Jeg kan så via en servlet oprette et objekt og indsætte den både i en mySql database og i den rette container.
Mit problem er så at objekterne forsvinder efter noget tid og nogle gange efter jeg har uploadet en fil til min server. Men uploaden er ikke væsentlig for objekternes overlevelse da de servlets ikke direkte berør Model objekterne men kun aktiver den via en controller.
Jeg har tjekket vores controller og der er ikke noget sted vi overskriver Model eller container.
Jeg håber nogle kan hjælpe mig.
jeg køre resin 2.1.0 server og mySql.
hvis der er andet i vil vide så i meget gerne kontakte mig på tydexx@students.aabc.dk
//thomas
pS . Erik Jacobsen hvis du har tid vil det være lækkert hvis du kunne hjælpe enten via mail eller i OLC på skolen.
private OpslagsTavleContainer otc= new OpslagsTavleContainer(); public Model() { super(); }
public static Model getModel(){ return model; }
public static OpslagsTavleContainer getOpslagsTavleContainer(){ return model.otc; } } Til at opretholde referencerne bliver model opretholdt i denne klasse: import NyWebPortal.Server.ModelServer.*; import javax.swing.*; /** * * @author tander35 * @version */ public class StartServer extends JFrame{
/** Creates new StartServer */ public StartServer() { } public static void main(String[] args){ JFrame jf = new JFrame(); JButton jb = new JButton("Stop Server"); jf.getContentPane().add(jb); jf.pack(); jf.show(); Model m = new Model();
} } den skulle gerne have holde model i live. (correct me if im wrong)
her bliver et objekt tilføjet : package NyWebPortal.Server.ControllerServer; import NyWebPortal.Server.ModelServer.*;
public class OpretOpslagstavleController { public static int opretOpslagstavle(String title) { int dummy = -1; OpslagsTavleContainer otc = Model.getOpslagsTavleContainer(); System.out.println("otc: " + otc); dummy=otc.opretOpslagstavle(title); System.out.println("efter opret"); return dummy;
} }
og her er container til opslagstavle: package NyWebPortal.Server.ModelServer; import java.util.*; import java.text.*; import dk.friluftsliv.util.*; import java.sql.*; import javax.sql.*; //import NyWebPortal.Server.ModelServer.*; public class OpslagsTavleContainer {
public OpslagsTavleContainer(){ super(); lnkOpslagstavle = new HashMap(); }
/* Metoden svarer ikke til sekvensdiagrammet, idet den ikke selv sletter beskederne hvis opslagstavlen ikke eksisterer som objekt. Det er ikke nødvendigt, idet alle opslagstavler <i>eksisterer</i> som objekt. */ public int remove(String tavleNavn) { int status = -1;
Opslagstavle tavle = find (tavleNavn); if (tavle != null) { // Fjern opslagstavlebeskederne i opslagstavlen status = tavle.destroy();
// Fjern opslagstavle objektet fra containeren // Dette er sidste reference til opslagstavle objektet, // => objektet bliver slettet af GC. if (status==0) { lnkOpslagstavle.remove(tavle); } } return status; }
public Opslagstavle find(String titel) {
Collection c = lnkOpslagstavle.values(); Iterator enum = c.iterator();
Opslagstavle tavle;
while (enum.hasNext()) { tavle = (Opslagstavle)enum.next(); if ((((String)tavle.getTitel()).compareTo(titel))==0) { return tavle; } } return null; }
public HashMap getTavler() { return lnkOpslagstavle; }
public int opretOpslagstavle(String navn){
// tilføj tavle til DB try { boolean result; java.sql.Connection conn = ConnectionManager.getConnection(); java.sql.Statement stat = conn.createStatement(); result=stat.execute ("INSERT INTO Opslagstavle (titel) VALUES ('"+ navn + "')"); conn.close(); if (result) return 1; } catch (Exception e) {
Nå jeg fandt selv ud af det. Men tak til dem der prøvede at hjælpe mig.
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.