Announcement

Collapse
No announcement yet.

WAR in eigener VM ausführen ...

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

  • WAR in eigener VM ausführen ...

    Hallo!

    Ich hab in meinem JBoss (jboss-3.2.5) mehrere EARs und WARs laufen. Anscheinend laufen alle in der selben VM, weil die "WAR 1" auf die statischen Variablen (Parameter-Klasse als Singleton) von "WAR 2" und vice versa zugreifen kann.

    Gibt es einen Weg, dies zu verhindern und alle WARs jeweils in einer eigenen VM laufen zu lassen ?

    Danke und lG
    Manfred

  • #2
    Hallo Manfred,

    Das ist der berühmte UCL (Unified Classloader) vom JBoss. Per default werden Klassen aus verschiedenen ears (wars) mit demselben Classloader geladen. Das ist nicht J2EE-konform sondern ein "special feature" des JBoss. Andere Server machen das nicht. Probleme gibt das natürlich wenn Klassen in verschieden Versionen deployt werden (und natürlich statische Variablen).

    Man kann das abschalten. Dazu muß man ins jboss-app.xml der Applikation (kommt ins meta-inf, wo auch application.xml liegt), folgendes einbauen:

    <PRE>
    &lt;loader-repository&gt;myapp:loader=myapp.ear&lt;/loader-repository&gt;
    </PRE>

    Für wars muß man ins jboss-web.xml (kommt ins web-inf) folgendes einbauen:

    <PRE>
    &lt;class-loading&gt;
    &lt;loader-repository&gt;myapp:loader=myapp.war&lt;/loader-repository&gt;
    &lt;/class-loading&gt;
    </PRE>

    Ich glaube in neueren JBoss-Versionen kann man das auch global ausschalten. Ich weiß nicht genau wie. In 3.2.3 ist das oben beschriebene AFAIK der einfachste Weg.

    Gruß,

    Alwi

    Comment


    • #3
      danke. das ganze hat mich gestern nacht noch einiges an nerven gekostet ;-).

      lG Manfre

      Comment

      Working...
      X