/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Servlet og tråde - kald af konstruktør??
Fra : RasMussen


Dato : 25-09-01 12:55

Hej,

Er der nogen der kan hjælpe mig ud af mine kvaler vedr. en Java Servlet og
tråde?
Jeg har en "Serverapplikation" (Logintjek), som henter indholdet af to
inputsfelter (initialer og password) fra en almen html-side, og disse skal
tjekkes i en DB om de er valide. I doPost-metoden vil jeg kalde
konstruktøren af trådklassen "Bruger" med fire parametre (this, request,
response og out) fra en synchronized blok, men den giver mig nedenstående
error:500. Hvis jeg kalder "Bruger"-konstruktøren uden argumenter giver den
ingen fejl? Kan man ikke kalde konstruktøren med parametre??

Håber der er en der kan hjælpe mig

Med venlig hilsen
RasMussen

Error: 500
Internal Servlet Error:

java.lang.NoSuchMethodError: Bruger: method
(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletRespo
nse;Ljavax/servlet/ServletOutputStream;)V not found


public class Logintjek extends HttpServlet
{
String initialer, password;
Bruger b;

public void doPost(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException
{
ServletOutputStream out = response.getOutputStream();
response.setContentType("txt/html");

try
{
b = new Bruger(this, request, response, out);
try
{
synchronized(this)
{
initialer = request.getParameter("login");
password = request.getParameter("password");
b.start();
}
}
catch(InterruptedException intex)
{
intex.printStackTrace();
}
}
catch(IOException ioex)
{
out.println("Fejl");
}
}

class Bruger extends Thread
{
private HttpServletRequest requ;
private HttpServletResponse resp;
private LogintjekNY login;
private ServletOutputStream ou;

private Connection connection;

public Bruger(LogintjekNY l, HttpServletRequest rq, HttpServletResponse
rs, ServletOutputStream o)
{
......
.......
.......
.......
}
}



 
 
Carsten (25-09-2001)
Kommentar
Fra : Carsten


Dato : 25-09-01 14:31

På fejlmeddelelsen (og med din kode-stumper i mente) kunne det
meget vel se ud som om at du har ændret i både servlet og
klassen "Bruger" uden at lukke serveren ned i mellemtiden.
Du har, så vidt jeg kan se, udviddet "Bruger" så den også tager
servletklassen med som den første parameter. Du har husket
at rette dette i servletten som du skal, men det er kun servletten,
der bliver auto-reloaded af din server. "Bruger" klassen gør
ikke.
Prøv at genstarte serveren og se om det så ikke har afhjulpet
problemet.

Blot et kvalificeret gæt

Carsten

"RasMussen" <jsr@pidyk.dk> wrote in
message news:Lg_r7.5370$t8.409544@news010.worldonline.dk...
> Hej,
>
> Er der nogen der kan hjælpe mig ud af mine kvaler vedr. en Java Servlet og
> tråde?
> Jeg har en "Serverapplikation" (Logintjek), som henter indholdet af to
> inputsfelter (initialer og password) fra en almen html-side, og disse skal
> tjekkes i en DB om de er valide. I doPost-metoden vil jeg kalde
> konstruktøren af trådklassen "Bruger" med fire parametre (this, request,
> response og out) fra en synchronized blok, men den giver mig nedenstående
> error:500. Hvis jeg kalder "Bruger"-konstruktøren uden argumenter giver
den
> ingen fejl? Kan man ikke kalde konstruktøren med parametre??
>
> Håber der er en der kan hjælpe mig
>
> Med venlig hilsen
> RasMussen
>
> Error: 500
> Internal Servlet Error:
>
> java.lang.NoSuchMethodError: Bruger: method
>
(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletRespo
> nse;Ljavax/servlet/ServletOutputStream;)V not found
>
>
> public class Logintjek extends HttpServlet
> {
> String initialer, password;
> Bruger b;
>
> public void doPost(HttpServletRequest request, HttpServletResponse
> response)
> throws ServletException, IOException
> {
> ServletOutputStream out = response.getOutputStream();
> response.setContentType("txt/html");
>
> try
> {
> b = new Bruger(this, request, response, out);
> try
> {
> synchronized(this)
> {
> initialer = request.getParameter("login");
> password = request.getParameter("password");
> b.start();
> }
> }
> catch(InterruptedException intex)
> {
> intex.printStackTrace();
> }
> }
> catch(IOException ioex)
> {
> out.println("Fejl");
> }
> }
>
> class Bruger extends Thread
> {
> private HttpServletRequest requ;
> private HttpServletResponse resp;
> private LogintjekNY login;
> private ServletOutputStream ou;
>
> private Connection connection;
>
> public Bruger(LogintjekNY l, HttpServletRequest rq,
HttpServletResponse
> rs, ServletOutputStream o)
> {
> ......
> .......
> .......
> .......
> }
> }
>
>



Janus (26-09-2001)
Kommentar
Fra : Janus


Dato : 26-09-01 16:34

Eller også er det fordi klassen Bruger tager ikke en instans af Logintjek
som parameter, men en LogintjekNY ... om LogintjekNY er super til Logintjek
ved jeg ikke, men hvis den er, så skulle Logintjek nok lige have det at vide
gennem en extends. Eller lad parametertypen i Bruger være en HttpServlet
istedet.

Bare et gæt..

Vh Janus

"Carsten" <carjak@wanadoo.dk> wrote in message
news:3bb08714$0$80761$edfadb0f@dspool01.news.tele.dk...
> På fejlmeddelelsen (og med din kode-stumper i mente) kunne det
> meget vel se ud som om at du har ændret i både servlet og
> klassen "Bruger" uden at lukke serveren ned i mellemtiden.
> Du har, så vidt jeg kan se, udviddet "Bruger" så den også tager
> servletklassen med som den første parameter. Du har husket
> at rette dette i servletten som du skal, men det er kun servletten,
> der bliver auto-reloaded af din server. "Bruger" klassen gør
> ikke.
> Prøv at genstarte serveren og se om det så ikke har afhjulpet
> problemet.
>
> Blot et kvalificeret gæt
>
> Carsten
>
> "RasMussen" <jsr@pidyk.dk> wrote in
> message news:Lg_r7.5370$t8.409544@news010.worldonline.dk...
> > Hej,
> >
> > Er der nogen der kan hjælpe mig ud af mine kvaler vedr. en Java Servlet
og
> > tråde?
> > Jeg har en "Serverapplikation" (Logintjek), som henter indholdet af to
> > inputsfelter (initialer og password) fra en almen html-side, og disse
skal
> > tjekkes i en DB om de er valide. I doPost-metoden vil jeg kalde
> > konstruktøren af trådklassen "Bruger" med fire parametre (this, request,
> > response og out) fra en synchronized blok, men den giver mig
nedenstående
> > error:500. Hvis jeg kalder "Bruger"-konstruktøren uden argumenter giver
> den
> > ingen fejl? Kan man ikke kalde konstruktøren med parametre??
> >
> > Håber der er en der kan hjælpe mig
> >
> > Med venlig hilsen
> > RasMussen
> >
> > Error: 500
> > Internal Servlet Error:
> >
> > java.lang.NoSuchMethodError: Bruger: method
> >
>
(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletRespo
> > nse;Ljavax/servlet/ServletOutputStream;)V not found
> >
> >
> > public class Logintjek extends HttpServlet
> > {
> > String initialer, password;
> > Bruger b;
> >
> > public void doPost(HttpServletRequest request, HttpServletResponse
> > response)
> > throws ServletException, IOException
> > {
> > ServletOutputStream out = response.getOutputStream();
> > response.setContentType("txt/html");
> >
> > try
> > {
> > b = new Bruger(this, request, response, out);
> > try
> > {
> > synchronized(this)
> > {
> > initialer = request.getParameter("login");
> > password = request.getParameter("password");
> > b.start();
> > }
> > }
> > catch(InterruptedException intex)
> > {
> > intex.printStackTrace();
> > }
> > }
> > catch(IOException ioex)
> > {
> > out.println("Fejl");
> > }
> > }
> >
> > class Bruger extends Thread
> > {
> > private HttpServletRequest requ;
> > private HttpServletResponse resp;
> > private LogintjekNY login;
> > private ServletOutputStream ou;
> >
> > private Connection connection;
> >
> > public Bruger(LogintjekNY l, HttpServletRequest rq,
> HttpServletResponse
> > rs, ServletOutputStream o)
> > {
> > ......
> > .......
> > .......
> > .......
> > }
> > }
> >
> >
>
>



Lars Hansen (27-09-2001)
Kommentar
Fra : Lars Hansen


Dato : 27-09-01 06:28

Du prøver på at initialisere Bruger med this. This er en instans af
LoginTjek der nedarver fra HttpServlet, og har ikke noget med
LoginTjekNY1, som Bruger forventer som argument.

Nu er jeg ikke sikker på hvad du vil med din tråd. Jeg går ud fra
at den laver noget passwordvalidering.

Du skal bare være opmærksom på, at så snart din doPost metode
er færdig, så vil dine request og på response objekter være invalide,
og tråden kan ikke længere anvende dem.(Alt efter implementering
kan det godt være at den kan anvende dem, men den vil bare ikke
få noget ud af det).

Desuden gør du også den fejl at lægge Bruger, initialer og password
som en instansvariabel på en servlet. Hver gang en servlet bliver
kaldt, bliver der IKKE oprettet en ny instans af den. Dvs. at du vil
få et problem med at logge flere brugere ind samtidig.

/Lars Hansen
"RasMussen" <jsr@pidyk.dk> wrote in message
news:Lg_r7.5370$t8.409544@news010.worldonline.dk...
> Hej,
>
> Er der nogen der kan hjælpe mig ud af mine kvaler vedr. en Java Servlet og
> tråde?
> Jeg har en "Serverapplikation" (Logintjek), som henter indholdet af to
> inputsfelter (initialer og password) fra en almen html-side, og disse skal
> tjekkes i en DB om de er valide. I doPost-metoden vil jeg kalde
> konstruktøren af trådklassen "Bruger" med fire parametre (this, request,
> response og out) fra en synchronized blok, men den giver mig nedenstående
> error:500. Hvis jeg kalder "Bruger"-konstruktøren uden argumenter giver
den
> ingen fejl? Kan man ikke kalde konstruktøren med parametre??
>
> Håber der er en der kan hjælpe mig
>
> Med venlig hilsen
> RasMussen
>
> Error: 500
> Internal Servlet Error:
>
> java.lang.NoSuchMethodError: Bruger: method
>
(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletRespo
> nse;Ljavax/servlet/ServletOutputStream;)V not found
>
>
> public class Logintjek extends HttpServlet
> {
> String initialer, password;
> Bruger b;
>
> public void doPost(HttpServletRequest request, HttpServletResponse
> response)
> throws ServletException, IOException
> {
> ServletOutputStream out = response.getOutputStream();
> response.setContentType("txt/html");
>
> try
> {
> b = new Bruger(this, request, response, out);
> try
> {
> synchronized(this)
> {
> initialer = request.getParameter("login");
> password = request.getParameter("password");
> b.start();
> }
> }
> catch(InterruptedException intex)
> {
> intex.printStackTrace();
> }
> }
> catch(IOException ioex)
> {
> out.println("Fejl");
> }
> }
>
> class Bruger extends Thread
> {
> private HttpServletRequest requ;
> private HttpServletResponse resp;
> private LogintjekNY login;
> private ServletOutputStream ou;
>
> private Connection connection;
>
> public Bruger(LogintjekNY l, HttpServletRequest rq,
HttpServletResponse
> rs, ServletOutputStream o)
> {
> ......
> .......
> .......
> .......
> }
> }
>
>



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408526
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste