tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
4748
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Robout Robout ist offline Rookie
    Registriert seit
    Mar 2004
    Beiträge
    5
    Hi,
    ich bin ganz neu bei der Sache und habe folgendes Problem:
    Ich habe ein Servlet programmiert und möchte es nun testen.
    Ich habe Von SUN das Web Services Developer Pack installiert, welches Tomcat beinhaltet (ich weiß nicht welche Version).
    Tomcat selber scheint zu funktionieren - die localhost:8080 funktionier einwandfrei und die examples unter localhost:8080/servlet-examples lassen sich auch aufrufen.
    Ich habe nun in dem gleichen Verzeichnis wie das servlet-examples einen neuen Ordener mit dem Namen Test angelegt und mein Servlet inclusive der ganzen verzeichnisse mit den classen da rein kopiert.
    Zusätzlich habe ich ein Verzeichnis WEB-INF angelegt und darin ein web.xml angelegt nach dem Vorbild der examples.
    ... das klappt nun aber einfach nicht. Wenn ich localhost/test/bla eingebe sagt er das wäre nicht available...

    zum Test habe ich das ganze dann einfach in den vorhandene Examples Ordner verschoben und in der web.xml zusätzlich eingetragen, aber auch da passiert das gleiche. Während sich alle anderen Servlets im gleichen Verzeichnisn ausführen lassen, sagt er bei meinem, "not available"..
    Hat jemand einen Tip woran das liegen kann Ich hab langsam keinen Bock mehr....
    Vielen Dank schonmal!
    Robin
     

  2. #2
    Avatar von Franz Degenhardt
    Franz Degenhardt Franz Degenhardt ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Ort
    Köln
    Beiträge
    378
    Hi!

    Wenn für deinen context nicht "autoDeploy" aut true gesetzt ist, musst du Tomcat neustarten um die neuen Servlets sehen zu können. Wenn es das nicht ist, könntest du mal deine context-Konfiguration und die web.xml posten.

    Grüsse TrueSun
     

  3. #3
    Robout Robout ist offline Rookie
    Registriert seit
    Mar 2004
    Beiträge
    5
    also mit tomcat neustarten hab ich schon versucht.. Aber das mit auf auto stellen,
    sollte ich vielleicht mal machen.
    Also meine Verzeichnisse sehen so aus:
    ich habe das webapps verzeichnis indem auch die beispieldateien liegen.
    da habe ich mir einen neuen Ordner angelegt "Gruppenaufgabe"
    darin habe ich einen Ordner "WEB-INF" und darin die unten stehende web.xml
    dann habe ich in "WEB-INF" einen Ordner "classes" indem meine "servlet1.class" ist mit den dazugehörigen Unterordnern.
    Ich habe die web.xml Datei aus dem Beispiel kopiert und editiert. Sonst habe ich nichts weiter gemacht...
    Hier ist die web.xml komplett
    Vielen Dank schonmal



    <?xml version="1.0" encoding="ISO-8859-1"?>

    <!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>

    <display-name>Servlet 2.4 Examples</display-name>
    <description>
    Servlet 2.4 Examples.
    </description>

    <!-- Define servlet-mapped and path-mapped example filters -->
    <filter>
    <filter-name>Servlet Mapped Filter</filter-name>
    <filter-class>filters.ExampleFilter</filter-class>
    <init-param>
    <param-name>attribute</param-name>
    <param-value>filters.ExampleFilter.SERVLET_MAPPED</param-value>
    </init-param>
    </filter>
    <filter>
    <filter-name>Path Mapped Filter</filter-name>
    <filter-class>filters.ExampleFilter</filter-class>
    <init-param>
    <param-name>attribute</param-name>
    <param-value>filters.ExampleFilter.PATH_MAPPED</param-value>
    </init-param>
    </filter>
    <filter>
    <filter-name>Request Dumper Filter</filter-name>
    <filter-class>filters.RequestDumperFilter</filter-class>
    </filter>

    <!-- Example filter to set character encoding on each request -->
    <filter>
    <filter-name>Set Character Encoding</filter-name>
    <filter-class>filters.SetCharacterEncodingFilter</filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>EUC_JP</param-value>
    </init-param>
    </filter>

    <filter>
    <filter-name>Compression Filter</filter-name>
    <filter-class>compressionFilters.CompressionFilter</filter-class>

    <init-param>
    <param-name>compressionThreshold</param-name>
    <param-value>10</param-value>
    </init-param>
    <init-param>
    <param-name>debug</param-name>
    <param-value>0</param-value>
    </init-param>
    </filter>

    <!-- Define filter mappings for the defined filters -->
    <filter-mapping>
    <filter-name>Servlet Mapped Filter</filter-name>
    <servlet-name>invoker</servlet-name>
    </filter-mapping>
    <filter-mapping>
    <filter-name>Path Mapped Filter</filter-name>
    <url-pattern>/servlet/*</url-pattern>
    </filter-mapping>


    <!-- Example filter mapping to apply the "Set Character Encoding" filter
    to *all* requests processed by this web application -->
    <!--
    <filter-mapping>
    <filter-name>Set Character Encoding</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    -->

    <!--
    <filter-mapping>
    <filter-name>Compression Filter</filter-name>
    <url-pattern>/CompressionTest</url-pattern>
    </filter-mapping>
    -->

    <!--
    <filter-mapping>
    <filter-name>Request Dumper Filter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    -->

    <!-- Define example application events listeners -->
    <listener>
    <listener-class>listeners.ContextListener</listener-class>
    </listener>
    <listener>
    <listener-class>listeners.SessionListener</listener-class>
    </listener>

    <!-- Define servlets that are included in the example application -->

    <servlet>
    <servlet-name>Servlet1</servlet-name>
    <servlet-class>Servlet1</servlet-class>
    </servlet>


    <servlet-mapping>
    <servlet-name>Servlet1</servlet-name>
    <url-pattern>/Servlet1</url-pattern>
    </servlet-mapping>

    <security-constraint>
    <display-name>Example Security Constraint</display-name>
    <web-resource-collection>
    <web-resource-name>Protected Area</web-resource-name>
    <!-- Define the context-relative URL(s) to be protected -->
    <url-pattern>/jsp/security/protected/*</url-pattern>
    <!-- If you list http methods, only those methods are protected -->
    <http-method>DELETE</http-method>
    <http-method>GET</http-method>
    <http-method>POST</http-method>
    <http-method>PUT</http-method>
    </web-resource-collection>
    <auth-constraint>
    <!-- Anyone with one of the listed roles may access this area -->
    <role-name>tomcat</role-name>
    <role-name>role1</role-name>
    </auth-constraint>
    </security-constraint>

    <!-- Default login configuration uses form-based authentication -->
    <login-config>
    <auth-method>FORM</auth-method>
    <realm-name>Example Form-Based Authentication Area</realm-name>
    <form-login-config>
    <form-login-page>/jsp/security/protected/login.jsp</form-login-page>
    <form-error-page>/jsp/security/protected/error.jsp</form-error-page>
    </form-login-config>
    </login-config>

    <!-- Security roles referenced by this web application -->
    <security-role>
    <role-name>role1</role-name>
    </security-role>
    <security-role>
    <role-name>tomcat</role-name>
    </security-role>

    <!-- Environment entry examples -->
    <!--env-entry>
    <env-entry-description>
    The maximum number of tax exemptions allowed to be set.
    </env-entry-description>
    <env-entry-name>maxExemptions</env-entry-name>
    <env-entry-value>15</env-entry-value>
    <env-entry-type>java.lang.Integer</env-entry-type>
    </env-entry-->
    <env-entry>
    <env-entry-name>minExemptions</env-entry-name>
    <env-entry-value>1</env-entry-value>
    <env-entry-type>java.lang.Integer</env-entry-type>
    </env-entry>
    <env-entry>
    <env-entry-name>foo/name1</env-entry-name>
    <env-entry-value>value1</env-entry-value>
    <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>
    <env-entry>
    <env-entry-name>foo/bar/name2</env-entry-name>
    <env-entry-value>true</env-entry-value>
    <env-entry-type>java.lang.Boolean</env-entry-type>
    </env-entry>
    <env-entry>
    <env-entry-name>name3</env-entry-name>
    <env-entry-value>1</env-entry-value>
    <env-entry-type>java.lang.Integer</env-entry-type>
    </env-entry>
    <env-entry>
    <env-entry-name>foo/name4</env-entry-name>
    <env-entry-value>10</env-entry-value>
    <env-entry-type>java.lang.Integer</env-entry-type>
    </env-entry>

    </web-app>
     

  4. #4
    Avatar von Franz Degenhardt
    Franz Degenhardt Franz Degenhardt ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Ort
    Köln
    Beiträge
    378
    Hey!

    Wenn deine Klasse "Servlet1" heisst gehe ich mal davon aus, das du das defaultpackage benutzt, ansonsten müsstest du die package-Angabe bei der "servlet-class" mit angeben, z.B.
    <servlet-class>de.Gruppenaufgabe.Servlet1</servlet-class>.
    Ich glaub nicht, dass du deine web.xml komplett verstehst, nimm lieber die minimalistische Version, dann weisst du auch was passiert. Zum testen ist es ganz praktisch, das invoker-Servlet zu benutzen. Dieses führt ein automatisches mapping für jedes Servlet durch.
    Mit:
    http://localhost:8080/Gruppenaufgabe/servlet/Servlet1 (invoker-mapping)
    oder
    http://localhost:8080/Gruppenaufgabe/Servlet1 (eigenes mapping)
    müsstest du dein servlet sehen.
    Ansonsten kannst du ja nochmal den Ausschnitt "Context" aus deiner server.xml posten. Schonmal geschaut ob du Fehlermeldungen in den logs hast?

    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
    28
    29
    30
    31
    32
    33
    
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    <!-- minimale web.xml -->
     
    <web-app>
       <display-name>example webapp</display-name>
       <description>your description here</description>
       <context-param>
          <param-name>webmaster</param-name>
          <param-value>webmaster@localhost</param-value>
          <description>
            The EMAIL address of the administrator to whom questions
            and comments about this application should be addressed.
          </description>
       </context-param>
     
       <servlet>
          <servlet-name>Servlet1</servlet-name>
          <servlet-class>Servlet1</servlet-class>
       </servlet>
     
       <servlet-mapping>
          <servlet-name>Servlet1</servlet-name>
          <url-pattern>/Servlet1</url-pattern>
       </servlet-mapping>
     
       <!-- nimm testweise einfach noch das invoker-mapping hinzu -->
       <servlet-mapping>
          <servlet-name>invoker</servlet-name>
          <url-pattern>/servlet/*</url-pattern>
       </servlet-mapping>
     
    </web-app>

    Grüsse TrueSun
     

  5. #5
    Robout Robout ist offline Rookie
    Registriert seit
    Mar 2004
    Beiträge
    5
    Hi,
    nach unzähligen Stunden Bastelei, habe ich nun folgende Fehlermeldung erreicht,die sich für mich schon heisser anhört:
    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: Servlet.init() for servlet servlet1 threw exception
    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.jav a: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.IllegalAccessError: tried to access method dblpbr.DblpMmDb.<init>()V from class dblpbr.Servlet1
    dblpbr.Servlet1.init(Servlet1.java:17)
    javax.servlet.GenericServlet.init(GenericServlet.java:256)
    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.jav a: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.
    Apache Tomcat/5.0.19

    ich komme jetzt immernoch nicht weiter, aber ich nehme an dass die web.xml jetzt korrekt ist -oder?
    Danke schonmal für deine Antwort
    Robin
     

  6. #6
    Robout Robout ist offline Rookie
    Registriert seit
    Mar 2004
    Beiträge
    5
    Hi,
    hat sich erledigt. Das Problem lag darin,dass der Klassenpfad auf die benötigte jat irgendwie nicht klappte... Ich hab die einfach entpackt und schon lief es!
    Gruß
    Robin
     

  7. #7
    klammer klammer ist offline Mitglied Bronze
    Registriert seit
    Sep 2005
    Beiträge
    34
    ich habe ein ähnliches problem, vielleicht könnt ihr mir weiterhelfen... wäre dringend

    vielleicht liegt es am kompilieren? (bin anfänger)

    was ich bisher gemacht habe und fehlermeldung:

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


    1. Tomcat Ordnerstruktur erstellen:

    <TOMCAT_HOME>/webapps/onjava
    =====> images (directory)
    =====> WEB_INF
    ==========> classes
    ==========> lib

    2. web.xml erstellen in <TOMCAT_HOME>/webapps/onjava/WEB_INF

    <?xml version="1.0" encoding="ISO-8859-1"?>

    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">

    <web-app>
    </web-app>

    3. ServletContext hinzufügen in <TOMCAT_HOME>/conf/server.xml

    <Context path="/onjava" docBase="onjava" debug="0" reloadable="true" />

    4. login.jsp erstellen in <TOMCAT_HOME>/webapps/onjava/

    <html>
    <head>
    <title>OnJava Demo</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>

    <body bgcolor="#FFFFFF" onLoad="document.loginForm.username.focus()">

    <table width="500" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td> </td>
    </tr>
    <tr>
    <td>
    </td>
    </tr>
    <tr>
    <td> </td>
    </tr>
    </table>
    <table width="500" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td>
    <table width="500" border="0" cellspacing="0" cellpadding="0">
    <form name="loginForm" method="post" action="servlet/com.onjava.login">
    <tr>
    <td width="401"><div align="right">User Name: </div></td>
    <td width="399"><input type="text" name="username"></td>
    </tr>
    <tr>
    <td width="401"><div align="right">Password: </div></td>
    <td width="399"><input type="password" name="password"></td>
    </tr>
    <tr>
    <td width="401"> </td>
    <td width="399"><br><input type="Submit" name="Submit"></td>
    </tr>
    </form>
    </table>
    </td>
    </tr>
    </table>
    </body>
    </html>

    5. Testen der JSP (Tomcat starten)

    http://localhost:8080/onjava/login.jsp




    6. welcome.jsp login.jsp erstellen in <TOMCAT_HOME>/webapps/onjava/

    <html>
    <head>
    <title>OnJava Demo</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>

    <table width="500" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td> </td>
    </tr>
    <tr>
    <td>
    <img src="/onjava/images/monitor2.gif"></td>
    <td>
    <b>Welcome : <%= request.getAttribute("USER")
    %></b>
    </td>
    </tr>
    <tr>
    <td> </td>
    </tr>
    </table>
    </body>
    </html>

    7. kompilieren von login.java

    package com.onjava;

    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.util.*;

    public class login extends HttpServlet {

    private String target = "/welcome.jsp";

    private String getUser(String username, String password) {

    // Just return a static name
    // If this was reality, we would perform a SQL lookup
    return "Bob";
    }

    public void init(ServletConfig config)
    throws ServletException {

    super.init(config);
    }

    public void doGet(HttpServletRequest request,
    HttpServletResponse response)
    throws ServletException, IOException {

    // If it is a get request forward to doPost()
    doPost(request, response);
    }

    public void doPost(HttpServletRequest request,
    HttpServletResponse response)
    throws ServletException, IOException {

    // Get the username from the request
    String username = request.getParameter("username");
    // Get the password from the request
    String password = request.getParameter("password");

    String user = getUser(username, password);

    // Add the fake user to the request
    request.setAttribute("USER", user);

    // Forward the request to the target named
    ServletContext context = getServletContext();

    RequestDispatcher dispatcher =
    context.getRequestDispatcher(target);
    dispatcher.forward(request, response);
    }

    public void destroy() {
    }
    }
    8. login.java und login.class speichern in <TOMCAT_HOME>/webapps/onjava/WEB_INF/classes/com/onjava

    9. Servlet Eintrag im web.xml hinzufügen (<TOMCAT_HOME>/webapps/onjava/WEB_INF)

    <servlet>
    <servlet-name>login</servlet-name>
    <servlet-class>com.onjava.login</servlet-class>
    </servlet>

    <servlet-mapping>
    <servlet-name>login</servlet-name>
    <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>

    10. Invoker nicht kommentieren in <TOMCAT_HOME>/conf/web.xml

    (2 Stellen)

    11. Testen der login.jsp und welcome.jsp (Tomcat neu starten)

    http://localhost:8080/onjava/login.jsp


    Fehlermeldung 404

    ressource onjava/servlet/login not available
     

Ähnliche Themen

  1. Alias für Tomcat(5.5)-Servlet einrichten
    Von Moritz123 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 2
    Letzter Beitrag: 06.08.09, 12:38
  2. Java servlet (auf Tomcat)
    Von Liutasil im Forum Java
    Antworten: 8
    Letzter Beitrag: 03.02.08, 23:25
  3. Tomcat log per Servlet auslesen?
    Von derChris im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 2
    Letzter Beitrag: 12.12.07, 12:56
  4. Tomcat: Servlet zu Port
    Von dadevelopa im Forum Hosting & Webserver
    Antworten: 0
    Letzter Beitrag: 24.01.06, 14:42
  5. Antworten: 42
    Letzter Beitrag: 27.09.05, 10:06