Probleme mit Tomcat Servlet

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
TRex
Moderator
Beiträge: 8364
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Probleme mit Tomcat Servlet

Beitrag von TRex » 24.03.2008 21:02:37

Hi,

ich hab ein paar Probleme mit Tomcat. Ein einfachstes Servlet will nicht funktionieren.

Code: Alles auswählen

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyServlet extends HttpServlet
	{

	public void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException
		{
		// TODO Auto-generated method stub
		super.doPosts(req, resp);
		}

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

		PrintWriter out = response.getWriter();
		out.println("<HTML>");
		out.println("<HEAD>");
		out.println("<TITLE>Hi from Servlet Demo</TITLE>");
		out.println("</HEAD>");
		out.println("<BODY>");
		out.println("Welcome to the Servlet Demo");
		out.println("</BODY>");
		out.println("</HTML>");
		}

	}
Die Antwort auf das Spielchen sieht dann so aus:
HTTP Status 405 - HTTP method POST is not supported by this URL

type: Status report

message: HTTP method POST is not supported by this URL

description: The specified HTTP method is not allowed for the requested resource (HTTP method POST is not supported by this URL).
Apache Tomcat/5.5
Ich hab den invoker aktiviert, damit die web.xml als Fehlerquelle schonmal wegfällt. Muss dazusagen, dass ich es ohne den invoker nichtmal ansatzweise zum Laufen bekommen hab (obwohl alles 10001x als Beispiel im web steht).
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 24.03.2008 21:29:48

hallo,

wieso "super" ?
Du musst die methodem doGet und DoPost uberschreiben (es handelt sich um eine abstrakte klasse: HttpServlet)

Code: Alles auswählen

public class XYZ extends HttpServlet {
  public void doGet(HttpServletRequest req, HttpServletResponse res) throws ... {
    ...
  }

  public void doPost(HttpServletRequest req,HttpServletResponse res) throws .... {
    doGet(req, res);
  }
}
ändere die zeile "super.doPosts(req, resp); " in "doGet(req, resp);" .. dann gehts ...
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.

Benutzeravatar
TRex
Moderator
Beiträge: 8364
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Beitrag von TRex » 24.03.2008 22:28:15

Nö, sorry :)

"super" legt eclipse so an, wenn ich die Automatismen benutze, von derer Korrektheit ich mal blindlings ausgehe (Override/Implement Methods).

Hatte ich eh schon probiert und wundere mich gerade, wie das s da bei doPosts hinkommt. Im Original war das garnich :oops:

Genau der selbe Fehler.

Ich kompilier übrigens mit Eclipse, lösch das alte aus dem classes-Verzeichnis und kopier das aus dem workspace-bin wieder rüber. Alte Dateien dürfte ich somit keine haben, oder?
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 25.03.2008 04:39:35

> Genau der selbe Fehler.

Was steht denn in deinem servlet ? Hast du "doPost" in deinem servlet drin ?

> Ich kompilier übrigens mit Eclipse, lösch das alte aus dem classes-Verzeichnis
> und kopier das aus dem workspace-bin wieder rüber. Alte Dateien dürfte ich somit keine haben, oder?

Nicht grade optimal. Ich weiss nicht ob dein tomcat-plugin ein .war produzieren kann (solte eigentlich).
Wenn das nicht der fall ist, soltest du dir apache-ant mal anschauen ...

Hier nochmal ein hallo-welt-servlet (eines das auch mit POST-requests umgehen kann):

Code: Alles auswählen

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServlet;
import java.io.PrintWriter;
import java.io.IOException;

public class HalloWelt extends HttpServlet {

  public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
    String test = req.getParameter("test");
    PrintWriter o = res.getWriter();
    o.print(test);
    o.flush();o.close();
  }

  public void doPost(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException {
    doGet(req, res);
  }
}
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.

Benutzeravatar
TRex
Moderator
Beiträge: 8364
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Beitrag von TRex » 25.03.2008 10:02:38

Das Problem war nicht das Servlet, sondern die Umgebung...hab mir das sysdeo tomcat plugin für Eclipse besorgt, das mir dann die benötigte (vergessene) xml-Datei in /etc/tomcat5.5/Catalina/localhost angelegt hat. Die hatte ich zwar schonmal vor Urzeiten, aber ich wette, dass ich zu der Zeit die Geschichte mit doPost/doGet oder irgendwas andere versemmelt hatte. Nun funzts :D

Danke dir ;)

Edit: damits nicht übersehen wird :ist mir grad vor die Augen gekommen.

http://keyboardsamurais.de/wp-content/u ... torial.htm

Könnte ja nochmal nützlich sein. Hier wird ein anderer Weg beschrieben, der etwas besser aussieht als das veraltete Sysdeo Ding. Allerdings hatten ein paar Leute noch Schwierigkeiten damit und der Autor selbst schreibt in seinem Blog von Crashs von eclipse...also ob das Ding schon für produktiven Einsatz gedacht ist....
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 25.03.2008 11:07:00

TRex2003 hat geschrieben: Edit: damits nicht übersehen wird :ist mir grad vor die Augen gekommen.

http://keyboardsamurais.de/wp-content/u ... torial.htm

Könnte ja nochmal nützlich sein. Hier wird ein anderer Weg beschrieben, der etwas besser aussieht als das veraltete Sysdeo Ding. Allerdings hatten ein paar Leute noch Schwierigkeiten damit und der Autor selbst schreibt in seinem Blog von Crashs von eclipse...also ob das Ding schon für produktiven Einsatz gedacht ist....
Naja, also ich halte von solchen plugins nichts. Was ist wenn du mal die IDE wechseln willst ? Was ist wenn
du mit anderen leuten, die kein eclipse benutzen, ein projekt aufziehen möchtest ?

Apache-ant ist IMHO sehr viel flexibler und kann in nahezu jeder IDE integriert werden (sogar KAWA ;) )

Ich finde es auch immer extrem ätzend, wenn jemand für C-sourcen kein make benutzt sondern irgendwas
exotisches das kein mensch kennt ...

naja, aber prima das es jetzt klappt ...
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.

Benutzeravatar
TRex
Moderator
Beiträge: 8364
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Beitrag von TRex » 25.03.2008 12:25:43

Die komischen automake kann ich auch nicht ab :)

Das Ding in Eclipse würd ich dann benutzen, wenns mir das Leben einfacher macht. Ant muss ich mich erstmal einarbeiten, und das mach ich nur, wenn ich tomcat langfristig benutzen werde. Ist nicht mein Schwerpunkt ;)
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Antworten