Announcement

Collapse
No announcement yet.

Warum werden die Packages in common\lib oder shared\lib nicht gefunden?

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

  • Warum werden die Packages in common\lib oder shared\lib nicht gefunden?

    Hallo,
    ich möchte gerne das Struts.jar gemeinsam für mehrere App`s verwenden. In der Tomcat-doku habe ich gelesen das dazu die Verzeichnisse common\lib und share\lib genutzt werden.
    Das funktioniert aber bei mir nicht. Ich kann es nur in server\lib reinlegen, dann ist es sichtbar für die Applikationen.

    Aber da gehört das struts.jar ja nicht hin.

    Was muss ich machen, das common\lib und shared\lib für die App\s sichtbar werden.

    Danke für jede Hilfe

    Christoph

  • #2
    Hi Christoph,
    eigentlich hast Du alles richtig gemacht. Vielleicht gibts ne Einstellung, die das laden von Klassen aus diesen Pfaden verbietet?... Aber egal. Ich will auf einen anderen Punkt hinaus:
    In der Struts-Doku wird davon abgeraten, das struts.jar in einen der beiden zentralen Tomcat-Ordner zu legen. Die Begründung ist, dass sich mit dieser Konstellation eine Entwicklung meherer Applikationen mit unterschiedlichen Struts-Versionen verbietet. Und solltest Du einmal nach einer höheren Struts-Version migrieren wollen, sind davon immer gleich alle Web-Aplikationen betroffen, die auf dem Server mit Struts laufen. Und zu guter Letzt, solltest Du Deine Applikation bei irgendeinem Tomcat-Hoster hosten wollen, kannst Du das struts.jar sowieso nicht in einen der beiden Ordner legen. Pack es also lieber ins WEB-INF/lib der jeweiligen Applikation.
    ngom
    http://www.winfonet.eu

    Comment


    • #3
      Hi,
      danke für deine prompte Antwort. Im Grunde hast Du recht, aber gerade weil ich viele Applikationen hosten will (eigener Server) die die gleiche Logik verwenden möchte ich das Struts.jar und meine eigenen packages an einem zentralen Ort ablegen.

      Das macht es für mich bei späteren Wartungsarbeiten doch einfacher.

      Und was noch viel merkwürdiger ist, ist die Tatsache das das ganze funktioniert wenn ich die jar`s und Klassen in %CATALINA_HOME%/server/lib und /classes ablege. Also da gehören Sie doch am allerwenigsten hin, aber so läuft es. So will ich es auf gar keinen Fall betreiben.

      Überall und nirgends lese ich das dafür common/lib o. share/lib gedacht sind, aber es funzt nicht. Das raffe ich nicht

      Gruß Christop

      Comment


      • #4
        Hallo Christoph!

        Im Dokument <a href="http://jakarta.apache.org/tomcat/tomcat-5.0-doc/class-loader-howto.html">
        Class Loader HOW-TO</a> steht eigentlich beschrieben, dass Deine Konfiguration funktionieren sollte... Allerdings ist sie für mehrere <i>Instanzen</i> des Tomcats auf einem Server u. U. etwas anders (Pfade relativ zu CATALINA_BASE und nicht CATALINA_HOME). Aber das scheint bei Dir ja nicht der Fall zu sein.

        Was genau sind denn die Fehlermeldungen? Vielleicht kommt man so weiter?!?

        Gruß, Jör

        Comment


        • #5
          Seit dem Tomcat 5.0 kann man sich die Pfade
          für die unterschiedlichen ClassLoader selber zusammenstellen.

          Es dient dazu die Datei catalina.properties ( S. Release unter conf).

          Für jede Instanz kann mit dem Argument
          -Dcatalina.config=file:../conf/catalina.properties
          eine eigene Zusammenstellung gewählt werden.

          Ich denke, es ist ein schlechte Idee das Struts.jar als shared element zu verwenden. Soweit ich mitbekommen habe, gibt es unschöne Seiteneffekte beim Class Reloading. Er der neue Tomcat 5.5.9 schafft dieses Probleme vermutlich aus der Welt.

          Bin gespannt auf Dein Testergebniss. Deploy/undeploy einfach die Anwendungen einwenig und beoachtet den Speicherverbraucht :-)

          Peter

          PS: Wenn Du wirklich viele Instanzen aufsetzen muss, schau Dir doch mal das centaurus Projekt an ( centaurus.sf.net) oder nutze die Templates von meiner Site tomcat.objektpark.org (Update in den nächsten Tagen. S. News

          Comment


          • #6
            Hallo Joerg,
            ja irgendwie sollte das hinhauen, so nach allem was man liest.
            Also ich geb dir mal das Log der Applikation. Ich habe Struts.jar in shared\lib und meine Klassen in shared\classes und dann gibt es folgende Log`s.

            Kannst ja mal reinschauen, vieleicht fällt die was auf.

            Danke schon mal.

            Gruß Christop

            Comment


            • #7
              Wo ist der erwähnte Log

              Comment


              • #8
                Hallo Peter,

                den log habe ich in dem vorigen Eintrag schon hinzugefügt.
                Ich hänge ihn nochmal als zip an.

                Du bist auch der Meinung das ich mehrere Instanzen von Tomcat bilden möchte. Das will ich aber momentan gar nicht.

                Ich möchte nur für mehrere Hosts die die gleichen Klassen und packages verwenden einen zentralen ort haben. So das ich nicht für jeden Host bzw. jede Applikation in dem jeweiligen Host die gleichen Klassen reinkopieren muss.

                Das ist doch für mich bei der Wartung erheblich einfacher, oder lieg ich da falsch.

                Warum werden die Klassen denn nicht in shared\... oder common\... gefunden. Das ist doch für gemeinsame resourcen gedacht oder funktioniert das nur wenn ich mehrere Instanzen von Tomcat bilde?

                Gruß

                Christop

                Comment


                • #9
                  Habe das gerade mit dem 5.5.9 und der Struts 1.2.6 blank
                  Anwendung erfolgreich geschafft.

                  Wenn ich die folgenden jars in shared/lib lege, klappt es:

                  commons-beanutils.jar commons-digester.jar
                  commons-validator.jar struts.jar

                  Vermutlich ist das unter dem 5.0.x ebenso, nur das der ClassLoader seine wirklichen Probleme bisher vor Dir verheimlicht hat.

                  Peter

                  PS: Ich denke, aber das einige merkwürdige Abhängigkeiten zwischen den Anwendung bestehen und eine Redeployment wirklich nicht einfacher wird. Eigentlich sind Web-Module in der Regel besser unabhängig voneinander

                  Comment


                  • #10
                    Hi Christoph,
                    wenns sogar der Guru sagt, dann pack Deine jars halt ins WEB-INF/lib Mensch ) Was Deinen Einwand der Wartbarkeit angeht, der Mehrauffwand besteht ja wohl nur darin, dass Du deine jars statt an eine Stelle in jede Applikation einzeln kopieren musst. Das kannst Du auch ein ant-Target erledigen lassen dazu gibt es hier Beispiele (sogar mit automatischem Context-Reaload... falls die Manager-App läuft). Bequemer gehts da kaum noch: http://jakarta.apache.org/tomcat/tomcat-5.0-doc/manager-howto.html#Executing%20Manager%20Commands%20With%2 0An
                    http://www.winfonet.eu

                    Comment


                    • #11
                      Hallo Peter,
                      also ich hab es auch mal so wie Du ausprobiert.
                      Ich habe Struts-Examples in den default-host --> webapps
                      installiert. Und siehe da wenn ich, wie Du es auch gemacht hast, die gesamten .jar`s von WEB-INF\lib nach shared\lib verschiebe dann läuft es bei mr auch unter 5.0.30 und auch unter 5.5.9.

                      Es scheint bei meiner Applikation nicht zu funzen weil ich diese unter einem eigenen Host installiert habe. Dem zu folge habe ich auch das ROOT des Hostes ausserhalb von webapps.

                      Es muss doch irgendwie daran liegen, oder?

                      Habe ich denn etwas falsch gemacht mit dem Host, oder warum ist das Verhalten mit diesem Host anders?

                      Wo dran kann das liegen?

                      Gruß Christop

                      Comment


                      • #12
                        Hallo Peter,

                        vergiss den Beitrag 10. Wenn ich nähmlich meine Applikation unter dem default-host --> webapps installiere funktioniert es mit meiner Applikation auch nicht.

                        Ich bin gerade dabei herauszufinden warum.

                        Ich melde mich wenn ich näheres weiß.

                        Gruß Christop

                        Comment

                        Working...
                        X