Сколько EJB слишком много? - PullRequest
6 голосов
/ 20 апреля 2009

В настоящее время я разрабатываю большую часть программного обеспечения на JavaEE. Мы следовали общим рекомендациям JavaEE, в которых говорится, что каждый связанный набор операций должен входить в свой собственный EJB. В настоящее время у нас есть более 275 различных классов EJB (сессионные компоненты без сохранения состояния). Это число, скорее всего, вырастет, по крайней мере, вдвое больше этого числа.

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

Мы используем Glassfish v2 с JavaEE 5 на Sun Java 6, поэтому советы по этой конкретной платформе были бы весьма полезны.

Ответы [ 4 ]

5 голосов
/ 20 апреля 2009

EJB должны быть мелкозернистыми, чтобы не было проблем с тем, что вы делаете, если вы последовательны в своем дизайне.

EJB - это просто классы, поэтому не о чем беспокоиться, за исключением общей нагрузки, которая ортогональна числу развернутых EJB.

Если вы беспокоитесь о производительности, добавьте какой-нибудь мониторинг или другие показатели производительности и посмотрите, как идут дела с добавлением новых функций.

В конце концов, вы бы предпочли поддерживать меньше классов с множеством методов или множество классов с меньшим количеством методов? Я знаю, какой бы я выбрал.

2 голосов
/ 20 апреля 2009

(Есть ли способ, которым я могу сказать "любой вообще", не будучи лишенным права голоса?)

На серьезной ноте, используйте столько, сколько вам нужно. Мое эмпирическое правило (как для EJB, так и для классов в целом), если вы не можете полностью описать, что эта штука делает в имени класса из трех слов, у вас слишком много работы.

Что касается производительности, я подозреваю, что если система начинает страдать от "слишком большого количества EJB-компонентов", у вас где-то гораздо большие проблемы.

1 голос
/ 11 марта 2010

EJB - это не просто обычный экземпляр класса. Требуется дополнительное обслуживание контейнера, экземпляра пула и т. Д. Многие EJB-компоненты требуют много ресурсов на сервере.

Я не думаю, что системе нужны сотни EJB. Хотя я также принимал участие в приложении с 90 EJB-компонентами, это был кошмар: <не было тестируемости, и развертывание также является огромной задачей. </p>

1 голос
/ 06 мая 2009

EJB-компоненты являются компонентами, а не классами, и вы должны думать о них в этом термине и соответствующим образом выражать дизайн вашей системы.

Степень детализации компонента, очевидно, зависит от домена.

Предположим, вы моделировали (довольно старомодный) компьютер с EJB. Резисторы, транзисторы, катушки и т. Д. Это pojos. Микросхемы и платы являются компонентами. Сборка ушная.

Степень детализации интерфейса должна отражать функцию компонента.

...