я нашел некоторую информацию по этой теме, но не нашли хорошее решение еще:Absolute одноточечно над несколькими войнами (доля ClassLoader)
Скажем, у меня есть 3 проекта:
- Ключевых (Java)
- FrontEnd (JSP и уголек)
- WS (Java)
Оба WS и FrontEnd содержат Maven д выносливость к Core. в ядре, есть одноэлементно SomeDao, подобные этим:
private static SomeDao _instance = null;
public static SomeDao getInstance() {
if (_instance != null)
return _instance;
synchronized (SomeDao.class) {
if (_instance == null)
_instance = new SomeDao();
return _instance;
}
}
Приложение размещается в JBoss WildFly и как WS (Java) и FrontEnd (JSP) используют SomeDao, но из-за различных загрузчиков классов, там это два экземпляра для SomeDao. SomeDao имеет свой собственный кеш и, следовательно, через некоторое время перестает синхронизироваться (WS < -> FrontEnd).
Мои вопросы:
- Каков наилучший подход к силе только один instantation (сделать родительское войну, плавить войны, используют один и тот же загрузчик классов, Maven решение, поместите Ядро, как Lib в JBoss, развернуть Core как его собственная война в JBoss) и почему?
- Возможно ли получить доступ к загрузчику классов другой WAR в JBoss? Если да, то как?
Для уточнения: JBoss имеет 2 войны: фронтэнда и WS каждый со своей собственной зависимости от Ядра –