Zum Inhalt springen

Erstellen und Benutzen eines Servlet, welches fremde Methoden verwendet


Varrius

Empfohlene Beiträge

Hi,

ich bin grad dabei ein Servlet zu schreiben, welches nur ein Benutzernamen und ein Kennwort einlesen soll. Im Hintergrund soll nun eine Methode einer anderen Klasse aufgerufen werden und die einegegebenen Werte als Parameter übergeben werden.

Wie muss ich bei einem Tomcat-Server (verwende 5.0.29) ein Servlet richtig integrieren? Hab das umgangen indem ich es zu den Servlet-Examples gepackt hab und die Web.xml angepasst hab.

Das Servlet startet dort auch, nur leider kommt folgender Fehler, wenn die fremde Methode aufgerufen wird (durch auskommentieren getestet):

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 execution threw an exception

filters.ExampleFilter.doFilter(ExampleFilter.java:101)

root cause

java.lang.NoClassDefFoundError

HTML_Client.doGet(HTML_Client.java:38)

HTML_Client.doPost(HTML_Client.java:70)

javax.servlet.http.HttpServlet.service(HttpServlet.java:709)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

filters.ExampleFilter.doFilter(ExampleFilter.java:101)

In der Zeile 38 steht der Aufruf der fremden Methode, allerdings besteht die doPost Methode nur aus dem Aufruf der doGet Methode.

Das Servlet und die andere Klasse wurden mit Eclipse erstellt und kompiliert, danach habe ich alle verwendeten Klassen (.class Dateien) in den Ordner von Tomcat kopiert.

Falls noch Fragen offen sind einfach melden :)

Vielen Dank für eure Hilfe,

Varrius

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Servlet und die andere Klasse wurden mit Eclipse erstellt und kompiliert, danach habe ich alle verwendeten Klassen (.class Dateien) in den Ordner von Tomcat kopiert.

Und dabei hast du mind. eine Klasse vergessen, nämlich genau die, die in deinem Servlet verwendet wird. Überprüfe nochmal, ob wirklich alles im korrekten Classpath der Web-Application vorhanden ist.

Zum java.lang.NoClassDefFoundError schreibt JavaDoc nämlich:

Thrown if the Java Virtual Machine or a ClassLoader instance tries to load in the definition of a class (as part of a normal method call or as part of creating a new instance using the new expression) and no definition of the class could be found.

The searched-for class definition existed when the currently executing class was compiled, but the definition can no longer be found.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Sofern Tomcat den unter Windows eingegebenen Classpath verwendet, sollten alle Klassen drin sein die Standartmässig benötigt werden.

Desweiteren hab ich die .class der Servlet-Klasse, der Klasse deren Methode ich verwende und die Packages kopiert die ich verwende, mir fällt nicht ein was ich noch vergessen haben könnte.

Was ich an der Fehlermeldung nicht verstehe ist, das nicht gesagt wird, welche Klasse denn nun fehlt oder übersehe ich da was?

Was meinst du mit korrektem Classpath?

Denn das Servlet liegt an der richtigen Stelle, denn ich kann es aufrufen und es startet auch, wenn ich es aber veranlasse die fremde Methode aufzurufen, erscheint die obige Fehlermeldung. Die .class der fremden Klasse liegt aber im gleichen Verzeichnis.

Was ich mir als Fehlerquelle vorstellen könnte, ist das ich im Servlet die fremde Klasse nicht importiert habe, da sie im gleichen Projekt liegt. Wenn ich sie dann aber ausserhalb von Eclipse starten will, könnte es ja sein das die Klasse nicht gefunden wird oder?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Leider gibt es hier keine edit, deswegen neue Antwort.

Habe den Server nochmal neu gestartet und das mit dem Methodenaufruf nochmal probiert, nun kommt folgende etwas umfangreichere als die obige Fehlermeldung:

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 execution threw an exception

filters.ExampleFilter.doFilter(ExampleFilter.java:101)

root cause

1.) java.lang.NoClassDefFoundError: org/apache/commons/discovery/tools/DiscoverSingleton

org.apache.axis.components.logger.LogFactory$1.run(LogFactory.java:45)

2.) java.lang.NoClassDefFoundError: javax/xml/soap/SOAPException

org.apache.axis.configuration.FileProvider.configureEngine(FileProvider.java:179)

org.apache.axis.AxisEngine.init(AxisEngine.java:172)

3.) java.lang.NoClassDefFoundError: javax/wsdl/OperationType

org.apache.axis.description.OperationDesc.<clinit>(OperationDesc.java:59)

ch.wbe.webservices.GeneratorSoapStub._initOperationDesc1(GeneratorSoapStub.java:26)

nach der 1.) Fehlermeldung hab ich das dazugehörige .jar Verzeichnis commons-discovery-0.2.jar in den tomcat\common\lib\ und tomcat\server\lib\ kopiert, den Server neu gestartet und das Servlet erneut ausgeführt. Dann kam Fehlermeldung 2.) nun das gleiche mit der saaj.jar gemacht, neu gestartet. Nun erschien Fehlermeldung 3.) nach ausführen des Servlets und ich kopierte wsdl4j-1.5.1.jar.

Nachdem nun diese 3 Bibliotheken in den Ordnern sind, funktioniert alles :)

Vielen Dank nochmal für die Nachfragen, vielleicht hät ich hier sonst noch ein paar Stunden verzweifelt (vielleicht auch länger ;) )

MFG

Varrius

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...