Avatar billede kernelx Juniormester
02. maj 2008 - 10:17 Der er 7 kommentarer og
2 løsninger

få fat i informationer fra en extern ArrayList i et servlet

Hi,

jeg har en servlet som har methoderne doGet og doPost på en sun application-server.

Nu vil jeg gerne have en java-class som administrerer sessions.

Det er lidt svært for mig at forklare mit problem.
men jeg prøver :-)

Session:
+++
...
public class Sessions {
  public static String getNewSession() { ... }
}
+++

Servlet:
+++
...
@Override protected void doGet( HttpServletRequest req, HttpServletResponse res ) throws ServletException, IOException {
  String session = test.sessions.Session.getNewSession();
}
...
+++

Hvordan kan jeg få Session-klassen til at eksistere u-afhængig af servlet?

Der skal altså eksistere et Session-object, hvor alle servlet-clients har mulighed for at arbejde med. Alle clients skal ikke have et Session-object for sig selv. De skal alle have muligheden for at connecte til det samme Session-object.

Session-objectet skal indeholde f.eks. en ArrayList, som indeholder alle sessions, deres timeout, osv.

Er der nogen, som kan hjælpe mig med at finde en løsning på mit problem?


med venlig hilsen
KernelX
Avatar billede lborupj Nybegynder
02. maj 2008 - 12:30 #1
Hej,

Hvad med at lave den som singleton?

public class Session {
    private static Session instance;
    private Session() {
        // Private default constructor
    }
    public static synchronized Session getInstance() {
        if (instance == null) {
            instance = new Session(... whatever args ...);
        }
        return instance;
    }
}

Nu kan du i din servlet(s) :

public void doPost(ServletRequest req, ServletResponse resp) {
    Session sess = Session.getInstance();

}


Håber det giver mening

Mvh / Lars Borup Jensen
http://www.it-arbejde.dk
Avatar billede lborupj Nybegynder
02. maj 2008 - 12:34 #2
meeen du skal passe på at holde alle HttpSession i en liste i en singleton, da det kan betyde at dine HttpSession's ikke bliver GC'ed, når containeren har released dem.
Tag evt. et kig på Soft/WeakReference og ReferenceQueue så du får ryddet op..
Avatar billede arne_v Ekspert
02. maj 2008 - 15:10 #3
det client specifikke putter du i den normale session

det client's skal dele putter du i context (application objektet i JSP)

hvis du vil have en liste med alle sessions saa implementerer du en session listener
som tilfoejer naar session oprettes og fjerner naar sessions destroyes
Avatar billede kernelx Juniormester
22. maj 2008 - 12:52 #4
husk at skrive et eller andet som svar
Avatar billede arne_v Ekspert
24. maj 2008 - 00:31 #5
hvem ?
Avatar billede kernelx Juniormester
24. maj 2008 - 16:23 #6
den som er hurtigst?!? :-)
Avatar billede kernelx Juniormester
24. maj 2008 - 16:24 #7
hvis begge giver svar deler jeg points op i to :-)
Avatar billede arne_v Ekspert
24. maj 2008 - 16:47 #8
det sidste lyder fint
Avatar billede lborupj Nybegynder
24. maj 2008 - 18:17 #9
okeli-dokely! :-)
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