Toon posts:

[JSP] Aanroepen objecten

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb last dat als twee gebruikers op hetzelfde moment een zelfde jsp pagina aanroepen, jsp instance van gebruiker 2 het object gebruikt van jsp instance van gebruiker 1.

Om het even duidelijker te maken wat ik nou precies bedoel:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<%@page language="java" contentType="text/html"%>
<%@page import="java.io.*"%>

<%!
    // our global object                        //Dit misschien het probleem?
    private DatabaseSessie s = null;
%>

<%

    s = new DatabaseSessie();

    do { %>

<tr>
    Doe iets met het huidige geselecteerde document
    bijvoorbeeld
    <%= s.getDocName(); %> 
    Hier komen dus ook verkeerde gegevens terug
    (uit s van de andere gebruiker)
</tr>

    <% 
    } while(s.nextDocument();

     s = null;
    %>


De classe die s gebruikt is een Thread. Ik zie ook als het fout gaat dat 1 van de 2 threads dus gewoon niet afgesloten word. Het lijkt dus wel of s niet uniek is, maar door de twee gebruikers geshared word.

Snapt iemand mijn probleem, of liever, weet iemand een oplossing? Zit het probleem hem in de Thread, of in de JSP pagina?

Verders word er een Tomcat server op een Windows OS gebruikt, met Java versie 1.4

Verwijderd

Topicstarter
Goed,

Volgende oplossing schijnt te werken:

<%@page language="java" contentType="text/html"%>
<%@page import="java.io.*"%>
<jsp:useBean id="s" class="nl.com.DatabaseSessie" scope="request">
</jsp:useBean>

<%

s.reset();

do { %>

<tr>

<%= s.getDocName(); %>
</tr>

<%
} while(s.nextDocument();

s = null;
%>

Verwijderd

Als je gebruik maakt van een jsp declaratie à la <%! dan worden dat als het ware persistent variabelen. Ze worden gedeeld over alle aanroepen van je JSP. Dan kun je inderdaad goed thread problemen krijgen. Verstandiger is om zo'n variabele dan niet in een <%! blok maar gewoon in een <% blok te declareren :)

Verwijderd

Topicstarter
Heee bedankt. Daar had ik echt niet aan gedacht. Alleen jammer dat ik me dus nu realiseer dat het lekker wat werk met zich mee brengt, omdat ik daar in geen enkele pagina aan gedacht heb :(

Oh well, daar hebben we immers weekend voor