Announcement

Collapse
No announcement yet.

CGI - Skripte mit Tomcat

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • CGI - Skripte mit Tomcat

    Hallo,

    ich verwende Tomcat 4.1 und möchte CGI-Skripte in HTML-Seiten einbinden. Dafür habe ich testweise eine Datei "hallo.cgi" mit dem folgenden Inhalt erstellt:

    <PRE>
    echo "Content-Type: text/plain"
    echo
    echo "Hallo"
    </PRE>

    Außerdem habe ich - wie in der Doku beschrieben - das Jar-File servlets-cgi.renametojar nach servlets-cgi.jar umbenannt und in der web.xml an den folgenden Stellen die Auskommentiereung herausgenimmen:

    <PRE>
    <servlet>
    <servlet-name>cgi</servlet-name>
    <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
    <init-param>
    <param-name>clientInputTimeout</param-name>
    <param-value>100</param-value>
    </init-param>
    <init-param>
    <param-name>debug</param-name>
    <param-value>6</param-value>
    </init-param>
    <init-param>
    <param-name>cgiPathPrefix</param-name>
    <param-value>examples/WEB-INF/cgi</param-value>
    </init-param>
    <load-on-startup>5</load-on-startup>
    </servlet>

    ...
    ...
    ...

    <!-- The mapping for the CGI Gateway servlet -->
    <servlet-mapping>
    <servlet-name>cgi</servlet-name>
    <url-pattern>/cgi-bin/*</url-pattern>
    </servlet-mapping>
    </PRE>

    Bei dem Versuch das Skript "hallo.cgi" direkt durch Eingabe der URL im Browser (bei mir ist das http://localhost:8080/examples/cgi-bin/hallo.cgi) bekomme ich vom CGIServlet eine Fehler - Seite, die mir die Meldung: "CGI Script not found or not specified." sowie eine Reihe von Umgebungsvariablen ausgibt. Eine Umgebungsvarible lautet "pathTranslated". Diese Variable gibt mir den Pfad aus in der auch tatsäclich mein Testskript "hallo.cgi" steht. Ich gehe daher davon das die CGI - Datei im richtigen Verzeichniss steht.

    Ich habe mich bisher noch nicht mit CGI - Programmierung beschäftigt und auch noch nicht viel an der Tomcat-Konfiguration herumgeschraubt.

    Hat jemand eine Idde wie ich das CGI-Skript zum Laufen bekommen kann?

    Gruß Olaf Böhm

  • #2
    Die Installation des Skripte sollte
    in WEB-INF/cgi erfolgen.
    <servlet>
    ....
    <init-param>
    <param-name>cgiPathPrefix</param-name>
    <param-value>WEB-INF/cgi</param-value>
    </init-param>
    <load-on-startup>5</load-on-startup>
    </servlet>

    Für die Suffixe .pl und .cgi nutzt CGIServlet perl als Interpreter der im System PATH oder PATH des Tomcat Startskript entsprechend eingetragen sein muss.

    -Pete

    Comment


    • #3
      Ein Perl für Windows findet man unter
      http://www.activestate.com/#

      Dein Script sieht dann folgendermassen aus:

      <--- Start hello.cgi --->
      print "Content-type: text/html\n\n" ;

      print <<EOF
      <html>
      <body>
      hello world
      </body>
      </html>
      EOF
      <--- END hello.cgi --->

      Pete

      Comment


      • #4
        Hallo,

        danke für die Hinweise.

        Ich möchte aber eigentlich kein Perl-Programm als CGI-Skript ausführen, sondern möglichst eine Java-Klasse. Es ist doch so, dass man alle ausführbaren Prgramme als CGI-Skript starten kann, auch wenn dies meist Perl-Programme sind. Ich kann nämlich schon etwas Java, aber habe noch keine Perl-Programmierkentnisse.

        Warunm ich jetzt CGI - Programme verwenden will?

        Ich habe bisher alles mit Javer Servlets bzw. Java Server Pages gelöst. Damit meine Website aber auch von diversen Suchmaschinen gefunden wird, habe ich mich entschlosen auch einige statische HTML-Seiten zu verwenden, die nicht dynamisch aus den JSP-Seiten generiert werden. Um für die HTML-Seiten Counter u.ä. einzubauen, hatte ich vor CGI-Skripte zu verwenden. Es müsste ja möglich sein eine ".class" - Datei ins CGI-Verzeichniss zu stellen und das CGIServlet zu sagen, die Datei mit dem Java - Interpreter zu starten. Wie das geht, weiß ich aber nicht. (Vieleicht hast du eine Idee.)

        Ich habe aber inzwichen eine andere alternative Lösung: Ich binde in meinen HTML-Seiten ein Inline-Frame mit width=0 und height=0 ein und als Quelle gebe ich eine JSP-Seite an. Auf der JSP-Seite kann ich dann, wie gewohnt jeden möglichen Java-Code einbinden.

        Gruß
        Ola

        Comment

        Working...
        X