Announcement

Collapse
No announcement yet.

Sub-Applikation

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

  • Sub-Applikation

    Hallo,

    was ist genau eine Sub-Applikation? Wenn ich habe:

    webbapps
    +- app1
    +- app2

    (beide eigenständige struts-Anwendungen) und in app1 - web.xml definiere neues "init-param" mit param-name=config/app2 und param-value=/WEB-INF/struts-config.xml, dann ist app2 eine Sub-Applikation der app1-Applikation? Oder muss ich struts-config.xml von app2 irgendwie anders benennen und unter app1/WEB-INF/ ablegen? Wenn app2 eine Sub-Applikation der app1 ist, kann app2 auch weiter unabhängig von app1 aufgerufen werden?
    Soll app2 unter app1 abgelegt werden?

    Weiterhin, wenn ich in app1 - struts-config.xml
    action mit path="/goapp2" und type="org.apache.struts.actions.SwitchAction" definiere, soll ich im Browser mit .../app1/goapp2.do?prefix=/app2&page=/Main.do zur app2 gelangen?

    Gruß,
    Roman

  • #2
    webapps<br>
    +- app1<br>
    +- app2<br&gt

    Comment


    • #3
      Hallo,

      Zur ersten Frage:

      Subapplikationen sind lediglich logische Aufteilungen einer Struts Web-Applikation in mehrere Teile. M. a. W.: Alle Subapplikationen befinden sich in einer Web-Applikation.

      Es gibt eine Reihe von Unterschieden zwischen Web-Applikationen und Struts Sub-Applikationen. Die wichtigsten (die mir einfallen :-> ) sind:

      - verschiedene Web-Applikationen haben verschiedene Class-Loader und damit u. a. unterschiedliche lib-Verzeichnisse. Subapplikationnen "teilen" sich einen Classloader.

      - es ist nicht (ohne weiteres) möglich, Session-Variablen etc. zwischen Web-Applikationen zu übertragen. Bei Sub-Applikationen ist das kein Problem.

      Sub-Applikationen dienen daher m. E. lediglich dem Aufteilen eines Struts-Projektes in kleinere, u. U. von verschiedenen Entwicklern zu pflegende, Bausteine.

      Zur zweiten:

      Nehmen wir mal an, es gibt zwei Sub-Applikationen. Kreativ wie ich nunmal bin, habe ich sie subapp1 und subapp2 genannt.

      Hierzu wird in der web.xml folgendes deklariert:

      <PRE>
      <servlet>
      <servlet-name>action</servlet-name>
      <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
      <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
      </init-param>
      <init-param>
      <param-name>config/subapp1</param-name>
      <param-value>/WEB-INF/struts-config1.xml</param-value>
      </init-param>
      <init-param>
      <param-name>config/subapp2</param-name>
      <param-value>/WEB-INF/struts-config2.xml</param-value>
      </init-param>
      <init-param>
      <param-name>debug</param-name>
      <param-value>3</param-value>
      </init-param>
      <init-param>
      <param-name>detail</param-name>
      <param-value>3</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
      </servlet>
      </PRE>

      In der struts-config.xml sollte jetzt eine Switch-Action hinterlegt werden:

      <PRE>
      <action path="/subapp" type="org.apache.struts.actions.SwitchAction" validate="false" />
      </PRE>

      Jetzt kann man in den JSPs z. B. einen Link hinterlegen:

      <PRE>
      <html:link action="/subapp?prefix=/subapp2&page=/default.do">
      Subapp1
      </html:link>
      </PRE>

      Das liest sich so: im Parameeter "prefix" steht die Subapplikation (mit "/") und in page die Seite bzw. das Mapping, das relativ zu dieser Subapplikation aufgerufen werden soll. Jetzt fehlt noch der entsprechende Eintrag in der Konfigurationsdatei der Subapplikation (in diesem Beispiel struts-config2.xml) :

      <PRE>
      <action-mappings>
      <action forward="/test.jsp" path="/default" validate="false" />
      </action-mappings>
      </PRE>

      Hier wird einfach auf eine JSP forwarded.

      Der Vorteil ist jetzt, dass die Einträge in der struts-config2.xml vollkommen unabhängig von der (globalen) struts-config.xml geändert werden können - was bei größeren Projekten Vorteile bringen könnte.

      Ich hoffe, das hilft erstmal.

      Gruß, Jör

      Comment


      • #4
        <p>Hallo Jörg,</p>

        <p>erstmal vielen Dank für die Antwort.</p>

        <p>
        Wenn Sub-Applikationen (Module) Teile der logischen Aufteilung einer grösseren Struts-Webapplikation sind, bedeutet dies:</p>

        <p>
        1. Alle Module gehören zu einer Webapplikation, liegen unter einem Verzeichnis und können (unter Umständen - z.B. Login-Vorgang findet in einem anderen Modul) nicht als eingenständige Webapplikationen aufgerufen werden.</p>

        <p>
        2. Falls zwei existierende Webanwendungen "unter einem Dach" laufen sollen, müssen:</p>

        <p>
        2.1 web.xml angepasst werden<br>
        2.2 tiles-defs.xml angepasst werden<br>
        2.3 struts-config.xml jeweils anders benannt werden<br>
        </p>

        <p>
        3. Alle Dateien aus beiden Applikationen werden "vermischt", bei Namensgleichheit entstehen Probleme.
        </p>

        Ist das richtig?<br>

        <p>Gruß, <br>Roman</p&gt

        Comment

        Working...
        X