Предполагая, что JBoss 4.x, затем в файле deploy/ear-deployer.xml
убедитесь, что у вас включена изоляция загрузчика классов, например,
<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>
Это предотвратит видимость классов в одном EAR для другого. По какой-то причине по умолчанию установлено значение Isolation=false
.
Этого может быть достаточно. Однако вам также может понадобиться добавить файл jboss-app.xml
в каталог EAR META-INF
, содержащий что-то вроде этого:
<jboss-app>
<loader-repository>MyCompany:loader=MyApplication</loader-repository>
</jboss-app>
Я не уверен, что это делает или что использует, но в некоторых случаях кажется, что это усиливает изоляцию между EAR.