Tomcat + Struts + Oracle

Von: , Frage gestellt am Mi, 18. Feb 2004

Hallo,

ich habe eine Suchmaske erstellt, in dem ich den Inhalt der Felder an Variblen übergebe und diese (per ActionMapping / Struts) zu Java schicke und danach wird in Java mit diesen Variablen, als Übergabeparameter, in Oracle eine Stored Procedure ausgeführt. Funktioniert soweit auch, aber wenn ich versuche Wildcards zu benutzen bekomme ich folgende Fehlermeldung:

java.io.CharConversionException: EOF

Da es nicht bei allen Sonderzeichen passiert, sondern nur bei bestimmten (getestet habe ich "%" und "*"), verstehe ich nicht wirklich warum es dazu kommt bzw. wie ich es fixen kann.
In Java kommt für die entsprechende Variable schon ein NULL Value an, weswegen ich davon ausgehen, dass die Fehlermeldung von Struts kommt.
Ich muß irgendwie die Wildcards übergeben,da es sich um sehr große Listen handelt und es auch kritische Daten sind, die nicht immer alle auf einmal angezeigt werden sollen.

Vielen Dank für eure Hilfe!

Gruß
Alexander

7 Antworten zu dieser Frage

  1. Antwort von nach 50 Minuten 0 hilfreich
    Re: Tomcat + Struts + Oracle

    Hallo,

    verstehe ich das Problem richtig?
    Du hast eine seite.jsp, auf der ein HTML-Formular ist. Diese Seite schickt das ganze dann per Senden-Button zu einem Servlet, welches dann damit eine Oracle Stored Procedure lostreten soll. Servlet und JSP-Seite wurden mit Struts gemacht.

    Ist das richtig so?
    Interessant wären allerdings noch die Tomcat- und Struts-Versionsnummern. Procedure ausgeführt. Funktioniert soweit auch, aber wenn ich
    versuche Wildcards zu benutzen bekomme ich folgende
    Fehlermeldung:

    java.io.CharConversionException: EOF
    Nun. Das ist eine Exception die bei der Umwandlung von Chars von einem Characterset in ein anderes passieren kann. Ich tippe mal, dass er hinter dem '%' oder '*' noch etwas erwartet, weil in HTML ist das %-Zeichen z.B. ein Escape-Character. Daher das "EOF".

    Auf jeden Fall bräuchte man erstmal mehr Infos. Hast du denn keinen Stacktrace des Fehlers, wo drin steht in welcher Klasse er wo passiert?

    Und hast du schon mal probiert, den Sende-Typ des HTML-Formulars zu ändern. Also falls du GET benutzt hast, mal POST zu benutzen oder anders rum.

    Will sagen:



    Da es nicht bei allen Sonderzeichen passiert, sondern nur bei
    bestimmten (getestet habe ich "%" und "*"), verstehe ich nicht
    wirklich warum es dazu kommt bzw. wie ich es fixen kann.
    Wie gesagt: ich tippe mal, dass es sich bei beiden um Escape-Zeichen handelt und daher erwartet er hinter diesen Zeichen noch etwas. Es kommt aber nichts, daher der EOF-Conversion-Error. In Java kommt für die entsprechende Variable schon ein NULL
    Value an, weswegen ich davon ausgehen, dass die Fehlermeldung
    von Struts kommt.
    Möglich, bzw das ist sehr wahrscheinlich. Auch Tomcat könnte noch in Frage kommen. Da gabs nämlich schon mal so einen Bug bei JSPs.
    http://issues.apache.org/bugzilla/show_bug.cgi?id=3986


    mfg
    deconstruct

    • Antwort von nach einer Stunde 0 hilfreich
      Re^2: Tomcat + Struts + Oracle

      Hi deconstruct,

      Ja, das verstehst du richtig.
      Struts 1.1 und Tomcat 4.1.27-32

      Leider weiß ich nicht, wo ich in Struts "Get" und "Post" ändern kann.

      Ist das ein Stacktrace?:

      java.io.CharConversionException: EOF
      at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:119)
      at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:87)
      at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:428)
      at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:515)
      at org.apache.tomcat.util.http.Parameters.handleQueryParameters(Parameters.java:298)
      at org.apache.coyote.tomcat4.CoyoteRequest.parseRequestParameters(CoyoteRequest.java:1933)
      at org.apache.coyote.tomcat4.CoyoteRequest.getParameter(CoyoteRequest.java:911)
      at org.apache.coyote.tomcat4.CoyoteRequestFacade.getParameter(CoyoteRequestFacade.java:178)
      at org.apache.jsp.probe_suchen_jsp._jspService(probe_suchen_jsp.java:125)
      at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
      at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
      at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
      at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
      at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
      at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
      at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
      at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
      at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
      at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
      at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
      at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
      at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
      at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
      at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
      at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
      at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
      at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
      at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
      at java.lang.Thread.run(Thread.java:534)

      Ich werd mir das mit dem Bug schon mal durchlesen.

      Gruß
      Alex [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

      • Antwort von nach einer Stunde 0 hilfreich
        Re^3: Tomcat + Struts + Oracle

        Hallo, Ja, das verstehst du richtig.
        Struts 1.1 und Tomcat 4.1.27-32

        Leider weiß ich nicht, wo ich in Struts "Get" und "Post"
        ändern kann.
        Kannst du hier nachlesen:
        http://jakarta.apache.org/struts/userGuide/struts-ht... Ist das ein Stacktrace?:
        Ja ;) at
        org.apache.jsp.probe_suchen_jsp._jspService(probe_suchen_jsp.java:125)
        Was passiert an dieser Stelle in deinem JSP?
        Dazu musst du aber in die kompilierte Version deiner JSP schauen, also in die Datei 'probe_suchen_jsp.java'

        mfg
        deconstruct

        • Antwort von nach 2 Stunden 0 hilfreich
          Re^4: Tomcat + Struts + Oracle

          Hallo, Hallo, Ja, das verstehst du richtig.
          Struts 1.1 und Tomcat 4.1.27-32

          Leider weiß ich nicht, wo ich in Struts "Get" und "Post"
          ändern kann.
          Kannst du hier nachlesen:
          http://jakarta.apache.org/struts/userGuide/struts-ht...
          Wo muß man dies eintragen? Im ActionMapping oder im Form? Ist das ein Stacktrace?:
          Ja ;) at
          org.apache.jsp.probe_suchen_jsp._jspService(probe_suchen_jsp.java:125)
          Was passiert an dieser Stelle in deinem JSP?
          String strASuche = (String) request.getParameter("selectedASuche");

          Das passiert dort. Er ließt den Variablenwert aus dem Feld es Formulars.

          Gruß
          Alex Dazu musst du aber in die kompilierte Version deiner JSP
          schauen, also in die Datei 'probe_suchen_jsp.java'

          mfg
          deconstruct

          • Antwort von nach 3 Stunden 0 hilfreich
            Re^5: Tomcat + Struts + Oracle

            Hallo, Kannst du hier nachlesen:
            http://jakarta.apache.org/struts/userGuide/struts-ht...
            Wo muß man dies eintragen? Im ActionMapping oder im Form?
            Du trägst das auf deinem JSP-Form ein, also etwa

            <html:form action="myaction" method="GET" enctype="mein/enctype">

            Aber die Methode umzustellen bringt nichts, hab ich gerade gelesen. Eventuell hilft aber ein Umstellen des Encodings mit enctype.
            Das ganze schein ein Bug in Tomcat zu sein. Ich hab nämlich grad den betreffenden Bugreport gefunden:
            http://nagoya.apache.org/bugzilla/show_bug.cgi?id=21018

            Eventuell hilft auch eine andere Tomcat-Version. Probier mal die 4.1.29 (eventuell auch eine ältere, als du bisher hast) oder - falls das für dich eine Option ist - könntest du auch mal den Tomcat5 testen. org.apache.jsp.probe_suchen_jsp._jspService(probe_suchen_jsp.java:125)
            Was passiert an dieser Stelle in deinem JSP?
            String strASuche = (String)
            request.getParameter("selectedASuche");
            Dann kann Struts nichts dafür. Das ist ein Tomcat-Problem.

            mfg
            deconstruct

            • Antwort von nach 4 Stunden 0 hilfreich
              DANKE!

              Hi,

              danke nochmal für die Mühe die du dir gemacht hast!!!

              Gruß
              Alex [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!