🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: be.comp.programming
6 messages
6 total messages Started by Zubke Sun, 21 Mar 2004 09:24
Java Servlets Probleem
#2519
Author: Zubke
Date: Sun, 21 Mar 2004 09:24
33 lines
2591 bytes
Hoi,

Ik zit met een vervelend probleem. We zijn momenteel aan het werken om een
kleine website te maken voor een klachtenbehandeling in Java servlets. Nu
zijn er een aantal dingen waar we geen rekening mee gehouden hebben. Dat is
ook iets wat absoluut stom is van ons. Eventjes de technische omgeving
schetsen. We werken met apache webserver en apache jserv. Als databank
gebruiken we oracle. We hebben ten eerste geen jsp's gemaakt, enkel
servlets.

Nu het echte probleem is dat we voor elke package een controller gemaakt
hebben en van die controller hebben we een singleton pattern gemaakt,
waarvan we het object terugkrijgen dmv een statische methode
getController(). Nu was ons gedacht dat die voor elke gebruiker die aanlogde
1 object ging aanmaken, dus als drie gebruikers ingelogd zij dat er drie
verschillende objecten bestaan van dat singleton. Blijkbaar niet dus! want
de twee andere gebruikers krijgen ineens alle rechten van de laatst
ingelogde gebruiker.

Omdat we dit veel te laat opgemerkt hebben komen we dus nu echt in
tijdsnood. Weet iemand misschien een oplossing die vrij snel te
verwezenlijken is. Het probleem is dus dat we elke keer een gebruiker inlogd
een instantiatie moeten maken van elke controller en dat we aan die
controller nog moeten aankunnen die voor die gebruiker geldt. Iemand een
idee hoe we dit misschien toch nog eenvoudig kunnen oplossen.

Als er nog dingen niet duidelijk zijn wil ik altijd wel antwoorden.

Alvast duizend maal bedankt.

Groeten,

Jo
Re: Java Servlets Probleem
#2523
Author: Daniel Tryba
Date: Sun, 21 Mar 2004 10:44
18 lines
1970 bytes
In nl.comp.programmeren Zubke <zubkejv@hotmail.com> wrote:
> Nu het echte probleem is dat we voor elke package een controller gemaakt
> hebben en van die controller hebben we een singleton pattern gemaakt,
> waarvan we het object terugkrijgen dmv een statische methode
> getController(). Nu was ons gedacht dat die voor elke gebruiker die aanlogde
> 1 object ging aanmaken, dus als drie gebruikers ingelogd zij dat er drie
> verschillende objecten bestaan van dat singleton. Blijkbaar niet dus! want
> de twee andere gebruikers krijgen ineens alle rechten van de laatst
> ingelogde gebruiker.

IMHO kan dat heel simpel. IPV de data "direct" in de singleton op te
slaan, bevat de singletop een Map als storage voor je object. Als key
dien je iets unieks te gebruiken wat gekoppeld is aan de ingelogde
gebruiker, dus bv het sessionid.

-- 

  Daniel Tryba
Re: Java Servlets Probleem
#2524
Author: VoodooChile
Date: Sun, 21 Mar 2004 11:02
57 lines
3987 bytes
Zubke wrote:
> Hoi,
> 
> Ik zit met een vervelend probleem. We zijn momenteel aan het werken om een
> kleine website te maken voor een klachtenbehandeling in Java servlets. Nu
> zijn er een aantal dingen waar we geen rekening mee gehouden hebben. Dat is
> ook iets wat absoluut stom is van ons. Eventjes de technische omgeving
> schetsen. We werken met apache webserver en apache jserv. Als databank
> gebruiken we oracle. We hebben ten eerste geen jsp's gemaakt, enkel
> servlets.
> 
> Nu het echte probleem is dat we voor elke package een controller gemaakt
> hebben en van die controller hebben we een singleton pattern gemaakt,
> waarvan we het object terugkrijgen dmv een statische methode
> getController(). Nu was ons gedacht dat die voor elke gebruiker die aanlogde
> 1 object ging aanmaken, dus als drie gebruikers ingelogd zij dat er drie
> verschillende objecten bestaan van dat singleton. Blijkbaar niet dus! want
> de twee andere gebruikers krijgen ineens alle rechten van de laatst
> ingelogde gebruiker.
> 
> Omdat we dit veel te laat opgemerkt hebben komen we dus nu echt in
> tijdsnood. Weet iemand misschien een oplossing die vrij snel te
> verwezenlijken is. Het probleem is dus dat we elke keer een gebruiker inlogd
> een instantiatie moeten maken van elke controller en dat we aan die
> controller nog moeten aankunnen die voor die gebruiker geldt. Iemand een
> idee hoe we dit misschien toch nog eenvoudig kunnen oplossen.
> 
> Als er nog dingen niet duidelijk zijn wil ik altijd wel antwoorden.
> 
> Alvast duizend maal bedankt.
> 
> Groeten,
> 
> Jo
> 
> 
> 
> 
kijk eens in de hibernate manual wat ze daar doen met ThreadLocals? En 
ipv per thread een controller een controller per sessie (in src.jar moet 
je ThreadLocal code wel vinden, copy paste naar SessonLocal.java en dan 
aanpassen ofzo.

http://www.hibernate.org/42.html

vergeet niet dat waar hier gesproken wordt over een sessie dat dit een 
Hibernate Session is, en niet een Session van een ingelogde user. Dus 
threadLocal maakt een session per request, niet per usersession 
(hopelijk is dit een beetje duidelijk uitgelegd). Dus dit is ongeveer 
het systeem, maar je moet niet per thread opslaan, maar per 
usersession...en dan zou het moeten werken.

eneuhm, static Controller is voor iedereen dezelfde, dat is toch 
elementaire java...jammer dat zoiets stom je hele project blokkeert.
Wat zitten securitygegevens trouwens in de controller te doen? Wat is er 
mis met die gegevens in de usersession te stoppen (en serverside nog te 
double checken)? Ik denk niet dat ik je design goed snap...
Re: Java Servlets Probleem
#2525
Author: Zubke
Date: Sun, 21 Mar 2004 11:07
35 lines
2711 bytes
"Daniel Tryba" <news_be.comp.programming@canopus.nl> schreef in bericht
news:c3jrn1$9vn$1@news.tue.nl...
> In nl.comp.programmeren Zubke <zubkejv@hotmail.com> wrote:
> > Nu het echte probleem is dat we voor elke package een controller gemaakt
> > hebben en van die controller hebben we een singleton pattern gemaakt,
> > waarvan we het object terugkrijgen dmv een statische methode
> > getController(). Nu was ons gedacht dat die voor elke gebruiker die
aanlogde
> > 1 object ging aanmaken, dus als drie gebruikers ingelogd zij dat er drie
> > verschillende objecten bestaan van dat singleton. Blijkbaar niet dus!
want
> > de twee andere gebruikers krijgen ineens alle rechten van de laatst
> > ingelogde gebruiker.
>
> IMHO kan dat heel simpel. IPV de data "direct" in de singleton op te
> slaan, bevat de singletop een Map als storage voor je object. Als key
> dien je iets unieks te gebruiken wat gekoppeld is aan de ingelogde
> gebruiker, dus bv het sessionid.
>
> --
>
>   Daniel Tryba
>

Dank je Daniel voor je snel antwoord. Ik was ook al zo'n beetje in die
richting aan het denken. Maar kan je het sessionId ook opvragen zonder dat
je het HttpServletRequest object hebt? Ik zit dan weer te denken om het
sessionId op te slaan in een coockie. Maar misschien is er ook een andere
manier om altijd aan het sessionId te raken. En kan je ook de tijd instellen
dat het sessionId actief moet blijven, omdat de gebruikers niet graag ineens
uitgelogd willen zijn als ze hun middagpauze genomen hebben.

mvg,

Jo
Re: Java Servlets Probleem
#2526
Author: VoodooChile
Date: Sun, 21 Mar 2004 14:08
54 lines
3213 bytes
Zubke wrote:

> "Daniel Tryba" <news_be.comp.programming@canopus.nl> schreef in bericht
> news:c3jrn1$9vn$1@news.tue.nl...
> 
>>In nl.comp.programmeren Zubke <zubkejv@hotmail.com> wrote:
>>
>>>Nu het echte probleem is dat we voor elke package een controller gemaakt
>>>hebben en van die controller hebben we een singleton pattern gemaakt,
>>>waarvan we het object terugkrijgen dmv een statische methode
>>>getController(). Nu was ons gedacht dat die voor elke gebruiker die
> 
> aanlogde
> 
>>>1 object ging aanmaken, dus als drie gebruikers ingelogd zij dat er drie
>>>verschillende objecten bestaan van dat singleton. Blijkbaar niet dus!
> 
> want
> 
>>>de twee andere gebruikers krijgen ineens alle rechten van de laatst
>>>ingelogde gebruiker.
>>
>>IMHO kan dat heel simpel. IPV de data "direct" in de singleton op te
>>slaan, bevat de singletop een Map als storage voor je object. Als key
>>dien je iets unieks te gebruiken wat gekoppeld is aan de ingelogde
>>gebruiker, dus bv het sessionid.
>>
>>--
>>
>>  Daniel Tryba
>>
> 
> 
> Dank je Daniel voor je snel antwoord. Ik was ook al zo'n beetje in die
> richting aan het denken. Maar kan je het sessionId ook opvragen zonder dat
> je het HttpServletRequest object hebt? Ik zit dan weer te denken om het
> sessionId op te slaan in een coockie. Maar misschien is er ook een andere
> manier om altijd aan het sessionId te raken. En kan je ook de tijd instellen
> dat het sessionId actief moet blijven, omdat de gebruikers niet graag ineens
> uitgelogd willen zijn als ze hun middagpauze genomen hebben.
> 
> mvg,
> 
> Jo
> 
> 
String key = request.getSession().getId();

moet je natuurlijk wel ergens een sessie creeren...

String key = request.getSession(true).getId();

zorgt ervoor dat er een sessie aangemaakt wordt als die nog niet 
voorkomt in de SessionContext.
Re: Java Servlets Probleem
#2557
Author: Stefan Arentz
Date: Thu, 25 Mar 2004 22:28
14 lines
1398 bytes
"Zubke" <zubkejv@hotmail.com> writes:

...

> Het probleem is dus dat we elke keer een gebruiker inlogd
> een instantiatie moeten maken van elke controller en dat we aan die
> controller nog moeten aankunnen die voor die gebruiker geldt.

Hopelijk ontcijfer ik je enorm kromme zinnen correct :)

Waarom is het een probleem om voor elke 'hit' een controller te maken? Heb je
een concreet performance probleem? Is dit premature optimalisatie?

 S.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads