/ / jar problém izolácie loadloadera na

problém izolácie triedy loadloader na jboss - java, jboss, classloader

Mám na uchu nasadené dva ušinastavenie izolácie triediča. Keď šev fazule volá jarné fazule, ktoré robia niektoré otázky v databáze, všetko funguje dobre, ale keď sa vyvolá jarné kremeň, fazuľa sa spustí a pokúsi sa vykonať databázové dotazy, nastane problém, pretože jar sa pokúsi tiež použiť prezimovanú nádobu z iného ucha a vyvolá sa výnimka. ! Je zrejmé, že ide o problém izolácie nakladača triedy jar. Stretol sa niekto s takým problémom? Ako zabezpečiť izoláciu?

odpovede:

0 pre odpoveď č. 1

Stavím sa, že Hibernate JAR, ktorý používa SEAM, pochádza zo zavádzača triedy JBOSS, ktorý sa nazýva pred akýmkoľvek zavádzačom triedy EAR. Deje sa to preto, lebo SEAM je súčasťou JBOSS.

Jar v EAR používa inú verziu Hibernate JAR alebo jej závislosti, takže získate konflikt.

Buď musíte odstrániť režim dlhodobého spánku z JBOSS, aby už nebol viditeľný pre zavádzač triedy aplikačných serverov, ale pravdepodobne by to poškodilo SEAM.

Možno zistíte, či má JBOSS nejaký spôsob, ako povedať aplikačnému serveru, aby uprednostnil JAR na úrovni aplikácie pred JAR na serveri v konfigurácii EAR.


0 pre odpoveď č. 2

Za predpokladu, že JBoss 4.x, potom v deploy/ear-deployer.xml súbor, uistite sa, že máte povolenú izoláciu triediča, napr.

<server>
<mbean code="org.jboss.deployment.EARDeployer" name="jboss.j2ee:service=EARDeployer">
<attribute name="Isolated">true</attribute>
<attribute name="CallByValue">false</attribute>
<attribute name="EnablelibDirectoryByDefault">true</attribute>
</mbean>
</server>

Toto zabráni videniu tried v jednom EAR pre druhého. Z nejakého dôvodu je predvolená hodnota Isolation=false.

To môže stačiť. Možno však budete musieť pridať aj jboss-app.xml súbor v EAR META-INF adresár obsahujúci niečo také:

<jboss-app>
<loader-repository>MyCompany:loader=MyApplication</loader-repository>
</jboss-app>

Nie som si istý, či to ide alebo čo ho používa, ale v niektorých prípadoch sa zdá, že sa zvyšuje izolácia medzi EAO.