Могут ли структуры DI предоставлять одноэлементную область в приложении EJB.(различное использование загрузчика классов)? - PullRequest
1 голос
/ 07 августа 2010

Допустим, я хочу использовать контейнер EJB, и я не знаю, как реализация контейнера использует загрузчики классов.

Теперь я хочу иметь совместно используемое состояние в памяти с моими пользовательскими структурами данных (поэтому нет HSQLDB и т. Д.). в этом приложении, и спецификация EJB оказывается

Если бы я использовал DI-фреймворки, такие как Spring, Google Guice и т. Д., Смогут ли они обеспечить однократную инъекцию? Если да, то как они могут это обеспечить?

1 Ответ

1 голос
/ 07 августа 2010

На практике это может (вероятно) быть возможным, поскольку большинство серверов приложений не особенно строги и позволяют немного «растянуть» спецификацию J2EE.

Теоретически вы не можете гарантировать синглтон в приложении J2EE.Одна из проблем заключается в том, что ваше приложение может быть развернуто на нескольких виртуальных машинах в кластерной среде, но даже синглтон EJB (в EJB 3.1) даст вам один синглтон на одну виртуальную машину.Другая возможная проблема, даже при работе на одной виртуальной машине, заключается в том, что ваше приложение может быть приостановлено с состоянием, а затем перезапущено на другой виртуальной машине, например, после отскока сервера.В этом случае шаблон синглтона также будет нарушен.

Строго следуя J2EE, вам также не разрешается использовать синхронизированные операторы или другие блокировки потоков в вашем коде.Это может сделать невозможным гарантировать целостность в общей структуре данных.Если вы ограничите свое развертывание одной виртуальной машиной, вы не должны ожидать никаких других проблем или проблем, чем если бы вы выполняли тот же код в среде не Java EE.

...