Einfaches Problem mit Tomcat

Status
Nicht offen für weitere Antworten.

ernst

Top Contributor
Hallo allerseits,
1)
Meine Entwicklungsumgebung ist:
Netbeans IDE 5.5
Dort steht unter Tools--> Java Platform Manager:
Platform Name: jdk 1.5 (Default)
Platform Folder: C:\Programme\Java\jdk1.5.0_06

2)
Nachdem ich endlich meinem Java-Compiler beibringen konnte, dass er die Zeilem
import javax.servlet.*;
import javax.servlet.http.*;
versteht, habe ich das Projekt servlet1 erstellt.
Dabei habe ich die Datei myServlet.java (mit einem default package) erstellt.
Dann erzeugt der Compiler die Datei myServlet.class

3)
Jetzt habe ich nur noch ein Problem mit meinem Standalone-Tomcat 5.5
In der Tomcat Verzeichnisstruktur gibt es auch funktionierende, mit dem Downlaod mitgelieferte Beispiele.
Wenn ich z.B. in meinem Browser eingebe:
http://localhost:8080/sample/
Dann kann ich auf den Link
servlet
klicken, hinter dem sich die Datei
hello.class
verbirgt.
Das mitgelieferte Beispiel funktioniert problemlos.

4) So, jetzt will ich _mein_ Servlet
myServlet.class
testen. Zu diesem Zweck habe ich es in ein Verzeichnis
......\WEB-INF\classes
kopiert.
korrekter ausgedrückt, habe ich die Datei myServlet.class aus Verzweiflung fast überall in meine Tomcat Verzeichnisstruktur kopiert.

Wenn ich nun im Browser eingbe:
http://localhost:8080/myServlet
kommt vom Tomcat die Meldung:
The requested Ressource is not available

Ich habe auch sonst noch rumprobiert, aber der Tomcat hat mein Servlet _nie_ ausgeführt.

Was mache ich falsch?
Was muss ich in den Browser eingeben?

mfg
Ernst
 
>Dabei habe ich die Datei myServlet.java (mit einem default package) erstellt.
Ich glaube Tomcat lässt das default package nicht mehr zu.. (kann mich aber auch irren)

was sagt der manager

localhost:8182/root
oder wars
localhost:8182/manager ?
 
Der Müde Joe hat gesagt.:
>Dabei habe ich die Datei myServlet.java (mit einem default package) erstellt.
Ich glaube Tomcat lässt das default package nicht mehr zu.. (kann mich aber auch irren)

was sagt der manager

localhost:8182/root
oder wars
localhost:8182/manager ?

Deine Seiten werden bei mir nicht gefunden, bzw. gibt Fehlermeldung
"Firefox kann keine Verbindung zu dem Server unter localhost:8182 aufbauen."

mfg
Ernst
 
homer65 hat gesagt.:
Der Ort ../WEB-INF/classes ist richtig, aber es muß noch web.xml angepaßt werden.

1) Meinst du:
Wenn man mit default package arbeitet, dann muss web.xml angepaßt werden?
Wenn das so ist, arbeite ich nicht mit default package

2)
Muss web.xml angepaßt werden, wenn man _nicht_ mit default package arbeitet?
Wen ja, wie ?

3)
habe zu Testzwecken ein Projekt angelegt, in dem ich ein package, nämlich das package myPackage angelegt habe.
Dann habe ich unter
..\WEB-INF\classes\myPackage
das File
myServlet.class
kopiert.

Dann im Browser eingegeben:
http://localhost:8080/myServlet

Leider kommt die gleiche Fehlermeldung wie letztes Mal.

Was mache ich falsch?

mfg
Ernst
 
Guck dir doch mal den web.xml einer funktionierenden Anwendung an, dann siehst du schon wie man dort ein Servlet eintragen kann.
 
ach unter 5.5 ist einfach nur
http://localhost:8080/

dafür müsste man aber noch die tomcat-users.xml anpassen
Code:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="manager"/>
  <user username="tomcat" password="tomcat" roles="manager"/>
</tomcat-users>

unter Status kann man da gucken und auch neue Dinge raufladen
 
homer65 hat gesagt.:
Guck dir doch mal den web.xml einer funktionierenden Anwendung an, dann siehst du schon wie man dort ein Servlet eintragen kann.

Leider funktioniert es immer noch nicht.
Habe folgendes gemacht:

Habe das Verzeichnis mySample erzeugt:
C:\Programme\Apache_Tomcat\apache-tomcat-5.5.26\webapps\mySample
Darunter befindet sich:
WEB-INF\classes\myPackage

Unter
WEB-INF\classes\myPackage
ist die Datei
myServlet.class

Unter
WEB-INF
befindet sich
web.xml

web.xml hat den (von mir abgeänderten) Inhalt:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">

<display-name>Halllllllo, World Application</display-name>
<description>
This is a simple web application with a source code organization
based on the recommendations of the Application Developer's Guide.
</description>

<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>myPackage.myServlet</servlet-class>
</servlet>

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

</web-app>

mfg
Ernst
 
Klassen im default package sind immer eine schlechte Idee.

Servlets sollten immer in der web.xml eingetragen werden:
Code:
    <servlet>
        <servlet-name>ServletName</servlet-name> 
        <servlet-class>dein.Servlet</servlet-class> 
    </servlet>

    <servlet-mapping>
        <servlet-name>ServletName</servlet-name>  
        <url-pattern>/index3</url-pattern>  
    </servlet-mapping>
 
maki hat gesagt.:
Klassen im default package sind immer eine schlechte Idee.

Servlets sollten immer in der web.xml eingetragen werden:
Code:
    <servlet>
        <servlet-name>ServletName</servlet-name> 
        <servlet-class>dein.Servlet</servlet-class> 
    </servlet>

    <servlet-mapping>
        <servlet-name>ServletName</servlet-name>  
        <url-pattern>/index3</url-pattern>  
    </servlet-mapping>

Das habe ich doch oben in meinem Beispiel gemacht.
Oder befindet sich dort ein Fehler?

mfg
Ernst
 
maki hat gesagt.:
Was zeigt das log?

Zeig auch den kompletten Servlet Code.

Du hast den richtigen Riecher gehabt!!
Ich habe die erste Zeile vergessen, also
package ...

Wenn ich diese Zeile bringe, funktioniert alles.

Frage:
Ich habe die Doku zwar mal oberflächlich durchgesehen, aber wird dort wirklich beschrieben, dass man die web.xml _jedesmal_ anpassen muss?
Das kommt mir sehr komisch vor, denn bei Tomcat 4 war das nicht nötig (laut einem Buch, das ich darüber lese).
Gibt es keine Möglichkeit, das Anpassen der web.xml zu unterlassen?

mfg
Ernst


--------------------------------------------------------
//package myPackage;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class myServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hallo Welt</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hallo Welt</h1>");
out.println("</body>");
out.println("</html>");
out.close();
}
}
 
Ich habe die Doku zwar mal oberflächlich durchgesehen, aber wird dort wirklich beschrieben, dass man die web.xml _jedesmal_ anpassen muss?
Das kommt mir sehr komisch vor, denn bei Tomcat 4 war das nicht nötig (laut einem Buch, das ich darüber lese).
Lies die Doku genau, vergiss das alte Buch über TC 4...
Abgesehen davon sollte man im Normalfall nicht viele Servlets haben, manchmal auch nur 1-2 😉
Schliesslich willst du nicht wirklich HTML Code in Servlets erstellen lassen, dafür gibt es JSPs.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben