Avatar billede jonas-i Nybegynder
08. marts 2004 - 20:01 Der er 23 kommentarer og
1 løsning

Tomcat 5 og servlet

Hej

Jeg har installeret Tomcat 5 men jeg kan ikke få mine egne servlets til at virke.
De servlets der følger med virker fint. Men prøver jeg at lægge min egen ind og teste så virker de ikke. Heller ikke selvom jeg lægger dem i servlet-examples/web-inf/classes
Og jeg har skrevet dem ind i web.xml, men den gider bare ikke.

Det jeg gerne vil have at i hjælper med er at jeg kunne have mine servlets i f.eks. webapps/test/web-inf/classes også de virkede.

Er ikke nogen haj til Tomcat så der kan sagtens være noget underligt jeg har overset?

Jeg vil helst have det til at virke uden at invoker'en behøver at være slået til som standart.

Håber meget i kan hjælpe.
Avatar billede arne_v Ekspert
08. marts 2004 - 20:07 #1
Du:
  - skriver din MinServlet.java
  - kompiler MinServlet.java til MinServlet.class
  - ligger den som webapps/test/WEB-INF/classes/MinServlet.class
  - mapper servlet i webapps/test/WEB-INF/web.xml

web.xml fragment:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
  <servlet>
    <servlet-name>MinServlet</servlet-name>
    <servlet-class>MinServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>MinServlet</servlet-name>
    <url-pattern>/MinServlet</url-pattern>
  </servlet-mapping>
</web-app>

så bør:

http://localhost:8080/test/MinServlet

virke !
Avatar billede jonas-i Nybegynder
08. marts 2004 - 20:13 #2
Ok har gjort som du sagde jeg får denne fejl

HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Error instantiating servlet class HelloWorld2
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
    org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:833)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:732)
    org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:619)
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:688)
    java.lang.Thread.run(Thread.java:534)


root cause

java.lang.Error: Unresolved compilation problems:
    The import javax.servlet cannot be resolved
    The import javax.servlet cannot be resolved
    HttpServlet cannot be resolved or is not a valid superclass
    HttpServletRequest cannot be resolved (or is not a valid type) for the argument request of the method doGet
    HttpServletResponse cannot be resolved (or is not a valid type) for the argument response of the method doGet
    ServletException cannot be resolved (or is not an exception type) for the method doGet

    HelloWorld2.<init>(HelloWorld2.java:8)
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    java.lang.reflect.Constructor.newInstance(Constructor.java:274)
    java.lang.Class.newInstance0(Class.java:308)
    java.lang.Class.newInstance(Class.java:261)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
    org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:833)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:732)
    org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:619)
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:688)
    java.lang.Thread.run(Thread.java:534)


note The full stack trace of the root cause is available in the Tomcat logs.
Avatar billede arne_v Ekspert
08. marts 2004 - 20:21 #3
Har du manuelt compilet inden du deployer som jeg skrev ?
Avatar billede jonas-i Nybegynder
08. marts 2004 - 20:25 #4
Ja har compilet i eclipse er det et problem?
Avatar billede arne_v Ekspert
08. marts 2004 - 20:30 #5
Nej - helt fint.

Jeg undrer mig bare over "java.lang.Error: Unresolved compilation problems:" - hvad
er det den forsøger at compile ?
Avatar billede jonas-i Nybegynder
08. marts 2004 - 20:39 #6
Ja ved jeg heller ikke, Men min eclipse kan ikke finde javax.servlet når det er den compilere. Kan det have noget at sige?
Avatar billede arne_v Ekspert
08. marts 2004 - 20:43 #7
Ja - for så har du vel ikke nogen MinServlet.class at kopiere !?
Avatar billede arne_v Ekspert
08. marts 2004 - 20:44 #8
Download J2EE kittet fra SUN (uden deres app-server !), udpak og tilføj
j2ee.jar til classpath i Eclipse.
Avatar billede jonas-i Nybegynder
08. marts 2004 - 20:46 #9
Jow det havde jeg nu alligevel(weird), men det prøver jeg lige.
Avatar billede arne_v Ekspert
08. marts 2004 - 20:46 #10
Alternativt kan du prøve at compile mode common\lib\servlet.jar !
Avatar billede jonas-i Nybegynder
08. marts 2004 - 21:03 #11
Jeg får denne fejl nu?

HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Wrapper cannot find servlet class HelloWorld or a class it depends on
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:175)
    org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:383)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:577)
    org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:207)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:647)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:499)
    org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:575)
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:649)
    java.lang.Thread.run(Thread.java:534)


root cause

java.lang.ClassNotFoundException: HelloWorld
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1373)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1220)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:175)
    org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:383)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:577)
    org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:207)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:647)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:499)
    org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:575)
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:649)
    java.lang.Thread.run(Thread.java:534)


note The full stack trace of the root cause is available in the Tomcat logs.
Avatar billede arne_v Ekspert
08. marts 2004 - 21:05 #12
Vi er på rette spor nu !
Avatar billede arne_v Ekspert
08. marts 2004 - 21:05 #13
Hvordan ser din URL og din web.xml ud ?
Avatar billede arne_v Ekspert
08. marts 2004 - 21:06 #14
Og ligger der en HelloWorld.class nede i classes nu ?
Avatar billede jonas-i Nybegynder
08. marts 2004 - 21:09 #15
Min url: http://localhost:8080/test/HelloWorld
min web.xml ligger i test\WEB-INF\

Og min web.xml indeholder:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
</web-app>

Og min HelloWorld.class ligger i test\WEB-INF\classes\
Avatar billede jonas-i Nybegynder
08. marts 2004 - 21:10 #16
HalloWorld.java ligger også i classes hvis det gør en forskel...
Avatar billede arne_v Ekspert
08. marts 2004 - 21:12 #17
Hvis HelloWorld.class ligger i webapps\test\WEB-INF\classes og HelloWorld
ikke indeholder nogen package, så burde det faktisk virke.
Avatar billede jonas-i Nybegynder
08. marts 2004 - 21:14 #18
Dette er koden HelloWorld indeholder
import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;


public class HalloWorld extends HttpServlet
{

    public void doGet(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException
    {
        PrintWriter out = response.getWriter();
        response.setContentType("text/html");

        out.println("Hello World - this servlet works!");
    }
}

Men jeg får stadig fejlen. og klikker jeg crtl+f5 skifter den fra fejlen til en 404
Avatar billede jonas-i Nybegynder
08. marts 2004 - 21:15 #19
Kan der være noget der er forkert i min conf/web.xml eller conf/server.xml?
Avatar billede arne_v Ekspert
08. marts 2004 - 21:17 #20
HalloWorld skal det ikke være HelloWorld ????

(e - ikke a)
Avatar billede jonas-i Nybegynder
08. marts 2004 - 21:19 #21
Hehe hvis det er fejlen slår jeg mig selv :D
Avatar billede jonas-i Nybegynder
08. marts 2004 - 21:26 #22
Yesyes det var det selvfølgelig, damn jeg føler mig dum lige nu :(
Nå men tak for din toldmodige hjælp.
Avatar billede jonas-i Nybegynder
08. marts 2004 - 21:26 #23
Send et svar så får du dine points :)
Avatar billede arne_v Ekspert
08. marts 2004 - 21:28 #24
svar
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