2015-07-08 2 views
0

РМО спецификация утверждает, что:EJB RMI проблема реализации

«Метод отправляется посредством среды выполнения RMI на удаленный объект реализации (сервер) может или не может выполняться в отдельном потоке. Звонки, исходящие от разных клиентов. Виртуальные машины будут выполнять в разных потоках. Из той же клиентской машине не гарантируется, что каждый метод будет работать в отдельном потоке»

Теперь, как EJB, которым использует RMI в качестве реализации основного, иметь дело с этим?

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

ответ

0

Вы не получите этого. Эта формулировка довольно непрозрачна, но ее оккультное значение состоит в том, что вы не можете предположить, что она однопоточная на сервере. Подобных реализаций RMI нет. Одновременные вызовы от клиента будут выполняться одновременно на сервере.

+0

спасибо, могу ли я предположить, что если бы это было действительно так, это поставило бы проблемы seriuos на реализацию EJB? – GionJh

+0

Такая реализация была бы совершенно бесполезной. – EJP

0

Прежде всего, во многих реализациях веб-приложений Enterprise beans в основном локальны или перепроектированы и заслуживают того, чтобы быть локальными. В случае локального доступа вызовы шунтируются и не будут переходить на RMI. Не сказать, что это относится к вам, но это то, что нужно учитывать. Однако, отмечая, что ваш контейнер сервлетов и контейнер контейнера один и тот же, я не вижу большого смысла использовать удаленные клиенты.

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

Смежные вопросы