Glassfish: как заставить сервер использовать загрузчик одного класса для нескольких приложений - PullRequest
3 голосов
/ 21 апреля 2011

У меня есть несколько web / ejb приложений.Эти приложения используют некоторые общие библиотеки и должны совместно использовать экземпляры классов из этих библиотек.Но приложения развертываются независимо, поэтому их упаковка в EAR недопустима.Я полагаю, проблема в том, что каждое приложение использует отдельный загрузчик классов.Как я могу заставить AS использовать загрузчик одного класса для набора приложений?

Различные приложения зависят от разных библиотек, поэтому мне нужен способ, при котором библиотека не будет совместно использоваться для всех приложений в домене, но только для некоторых точных приложений.

Когда я помещаю банку в % domain% / lib - все работает.Но эта фляга распределяется между всеми приложениями в домене.Когда я попытался поместить общий jar в % domain% / lib / applibs и указал атрибут - library при развертывании, я получил исключение

java.lang.ClassCastException: a.FirstDao cannot be cast to a.FirstDao

Здесь http://download.oracle.com/docs/cd/E19879-01/820-4336/6nfqd2b1t/index.html Я прочитал:

Если несколько приложений или модулей ссылаются на одни и те же библиотеки, классы в этих библиотеках автоматически становятся общими.Это может уменьшить объем памяти и разрешить обмен статической информацией.

Означает ли это, что классы должны быть в состоянии быть приведенными?

1 Ответ

0 голосов
/ 01 мая 2011

Я бы порекомендовал использовать каталог domain / lib.Хотя это делает ваши библиотеки доступными для всех приложений, работающих в этом домене, действительно ли имеет значение, если другие приложения не используют эти библиотеки?

Если вы хотите устранить это воздействие, вы больше ориентируетесь на доставку своей группыприложений в качестве отдельного EAR, чтобы изолировать использование библиотеки только этими приложениями.

...