Spec-Zone .ru
спецификации, руководства, описания, API
|
|
|||||||||
ПРЕДЫДУЩИЙ ПАКЕТ ПАКЕТ NEXT | ФРЕЙМЫ НИКАКИЕ ФРЕЙМЫ |
См.:
Описание
Сводка интерфейса | |
---|---|
Экземпляр <T> | Позволяет приложению динамически получать экземпляры бобов с указанной комбинацией необходимого типа и спецификаторов. |
Сводка исключения | |
---|---|
AmbiguousResolutionException | Указывает, что многократные бобы соответствуют определенную комбинацию необходимого типа и требуемых спецификаторов и имеют право на инжекцию в определенный class. |
CreationException | Указывает, что проверенное исключение было выдано во время создания боба. |
IllegalProductException | Указывает, что метод производителя, возвращенный нулевое значение или поле производителя, содержавшее нулевое значение, и контекст метода производителя или поля, не был Dependent . |
InjectionException | |
ResolutionException | |
UnproxyableResolutionException | Указывает, что контекстная ссылка для боба с нормальным контекстом и определенным бобовым типом не может быть получена, потому что бобовый тип не может быть проксирован контейнером. |
UnsatisfiedResolutionException | Указывает, что никакой боб не соответствует определенную комбинацию необходимого типа и требуемых спецификаторов и имеет право на инжекцию в определенный class. |
Аннотация Вводит Сводку | |
---|---|
Альтернатива | Определяет, что боб является альтернативой. |
Любой | Встроенный тип спецификатора. |
Значение по умолчанию | Тип спецификатора значения по умолчанию. |
Располагает | Идентифицирует склонный параметр метода устройства обработки отходов. |
Модель | Встроенный стереотип, предназначенный для использования с бобами, которые определяют уровень модели архитектуры веб-приложения MVC, такой как JSF. |
Новый | Встроенный тип спецификатора. |
Производит | Идентифицирует метод производителя или поле. |
Специализируется | Указывает, что боб непосредственно специализирует другой боб. |
Стереотип | Определяет, что тип аннотации является стереотипом. |
Введенный | Ограничивает бобовые типы боба. |
Аннотации, касающиеся боба и стереотипного определения, встроенных спецификаторов, и интерфейсов и классов, касающихся программируемого поиска.
Боб является источником контекстных объектов, которые определяют состояние приложения и/или логику. Эти объекты вызывают контекстными экземплярами боба. Контейнер создает и уничтожает эти экземпляры и связывает их с соответствующим контекстом. Контекстные экземпляры боба могут быть введены в другие объекты (включая другие бобовые экземпляры), которые выполняются в том же самом контексте, и могут использоваться в Объединенных ЭЛЬ выражениях, которые оцениваются в том же самом контексте.
Жизненным циклом контекстных экземпляров управляет контейнер согласно модели контекстов жизненного цикла. Аннотации определяют жизненный цикл боба и его взаимодействий с другими бобами.
Боб включает следующие атрибуты:
Бобовый тип является видимым клиентом типом боба. У боба могут быть многократные бобовые типы. У следующего боба есть бобовые типы BookShop, Business, Shop<Book> и Object
.
public class BookShop extends Business implements Shop<Book> { ... }
Почти любой тип Java может быть бобовым типом боба:
Переменная типа не является юридическим бобовым типом. Параметризованный тип, который содержит подстановочный параметр типа, не является юридическим бобовым типом.
Бобовые типы боба определяются автоматически. Однако, набор бобовых типов может быть resticted использование @Typed
аннотация.
Спецификатор представляет некоторых видимых клиентом семантический связанный с типом, который удовлетворяется некоторыми реализациями типа (а не другими). Спецификаторы применяются к инжекционным точкам, чтобы различить, какая реализация требуется клиентом.
@Inject @Synchronous PaymentProcessor paymentProcessor;
Тип спецификатора является аннотируемой аннотацией Java @Qualifier
. Спецификаторы боба объявляются, аннотируя боб class или метод производителя или поле с типами спецификатора.
@Synchronous @Reliable class SynchronousReliablePaymentProcessor implements PaymentProcessor { ... }
Если боб явно не объявляет спецификатор кроме @Named
, у боба есть спецификатор @Default
.
У всех бобов есть контекст. Контекст боба определяет жизненный цикл своих экземпляров, и какие экземпляры боба видимы к экземплярам других бобов.
Тип контекста является аннотируемой аннотацией Java @Scope
или @NormalScope
. Контекст боба определяется, аннотируя боб class или метод производителя или поле с типом контекста или со стереотипом, который объявляет контекст значения по умолчанию.
@ConversationScoped public class Order { ... }
Боб class или метод производителя или поле может определить самое большее одну аннотацию типа контекста.
Если боб явно не объявляет контекст или стереотип с контекстом значения по умолчанию, значениями по умолчанию контекста к @Dependent
.
У боба может быть боб ЭЛЬ имя. Боб с ЭЛЬ именем может быть упомянут его именем в Объединенных ЭЛЬ выражениях. Допустимый боб ЭЛЬ имя является разделенным от периода списком допустимых ЭЛЬ идентификаторов.
Определить ЭЛЬ имя боба, спецификатора @Named
применяется к бобу class или метод производителя или поле.
@Named("currentOrder") public class Order { ... }Если аннотация @Named не определяет
value
элемент, ЭЛЬ имя принимается значение по умолчанию. Перехватчики могут быть связаны с любым управляемым бобом, который не является самостоятельно перехватчиком или декоратором или к любому сеансу EJB или управляемому сообщением бобу. Перехватчик, который аннотируется @Interceptor
может быть идентифицирован его привязкой перехватчика.
@Transactional @Interceptor public class TransactionInterceptor { @AroundInvoke public Object manageTransaction(InvocationContext ctx) { ... } }
Тип привязки перехватчика является аннотируемой аннотацией Java @InterceptorBinding
. Привязка перехватчика боба может быть объявлена, аннотируя боб class, или метод боба class, с типом привязки перехватчика или со стереотипом, который объявляет привязку перехватчика.
В следующем примере TransactionInterceptor будет применен на уровне class, и поэтому применяется ко всем бизнес-методам class:
@Transactional public class ShoppingCart { ... }
В этом примере TransactionInterceptor будет применен на уровне метода:
public class ShoppingCart { @Transactional public void placeOrder() { ... } }
Если управляемый боб, class объявляется финалом, у него, возможно, нет никакой привязки перехватчика. Если у управляемого боба есть нестатический, нечастный, заключительный метод, у него, возможно, нет никакого class уровень привязка перехватчика, и у того метода, возможно, нет никакой привязки перехватчика на уровне метода.
Контейнер оказывает встроенную поддержку для инжекционного и контекстного управления жизненным циклом следующих видов боба:
Управляемый боб является бобом, который реализуется Java class. Основной жизненный цикл и семантика управляемых бобов определяются Управляемой Бобовой спецификацией.
Высокоуровневый class Java является управляемым бобом, если он определяется, чтобы быть управляемым бобом какой-либо другой спецификацией EE Java, или если он встречает все следующие условия:
@Decorator
.Extension
.@Inject
.Все классы Java, которые удовлетворяют этим условиям, являются управляемыми бобами, и таким образом никакое специальное объявление не обязано определять управляемый боб. Дополнительно, управляемый боб может быть аннотирован ManagedBean
.
Если у управляемого боба есть общедоступное поле, у него должен быть контекст @Dependent
.
Если управляемый боб, class является универсальным типом, у него должен быть контекст @Dependent
.
Основной жизненный цикл и семантика бобов сеанса EJB определяются спецификацией EJB.
@Dependent
псевдоконтекст.@ApplicationScoped
контекст или к @Dependent
псевдоконтекст.Если боб сеанса, class является универсальным типом, у него должен быть контекст @Dependent
.
Если боб сеанса является stateful бобом сеанса:
@Dependent
, приложение может вызвать любой EJB, удаляют метод контекстного экземпляра боба сеанса.Метод производителя или поле действуют как источник объектов, которые будут введены, где:
Метод производителя или поле являются методом или полем боба аннотируемый class @Produces
.
Общий образец в универсальном коде является методом производителя, который вводит InjectionPoint
объект.
Ресурс является бобом, который представляет ссылку на ресурс, контекст персистентности, модуль персистентности, удаленный EJB или веб-сервис в компонентной среде EE Java.
Ресурс может быть объявлен, определяя компонентную аннотацию инжекции среды EE Java как часть полевого объявления производителя.
Инжекционная аннотация определяет, что метаданные должны были получить ресурсы, менеджера по объекту, менеджера по объекту фабрика, отдалить экземпляр EJB или ссылку веб-сервиса от компонентной среды.
@Produces @WebServiceRef(lookup="java:app/service/PaymentService") PaymentService paymentService;
@Produces @EJB(ejbLink="../their.jar#PaymentService") PaymentService paymentService;
@Produces @Resource(lookup="java:global/env/jdbc/CustomerDatasource") @CustomerDatabase Datasource customerDatabase;
@Produces @PersistenceContext(unitName="CustomerDatabase") @CustomerDatabase EntityManager customerDatabasePersistenceContext;
@Produces @PersistenceUnit(unitName="CustomerDatabase") @CustomerDatabase EntityManagerFactory customerDatabasePersistenceUnit;
У ресурса, возможно, нет ЭЛЬ имени.
Боб, как говорят, включается если:
Иначе, боб, как говорят, отключается.
Бобы и их клиенты могут быть развернуты в модулях в архитектуре модуля, таких как среда EE Java. В архитектуре модуля определенные модули считают бобовыми архивами. В архитектуре модуля EE Java, любом модуле EE Java или библиотеке модуль. Модуль EE Java или библиотека являются бобовым архивом, если это содержит файл beans.xml в каталоге метаданных.
Боб доступен для инжекции в определенном модуле если:
Следующие виды инжекционной точки существуют:
@javax.inject.Inject
. Если боб, class явно не объявляет конструктора, использующего @Inject, конструктор, который не принимает параметров, является бобовым конструктором. У бобового конструктора может быть любое число параметров. Все параметры бобового конструктора являются инжекционными точками.@javax.inject.Inject
.@javax.inject.Inject
. У метода инициализатора может быть любое число параметров. Все параметры метода инициализатора являются инжекционными точками.Боб присваиваем данной инжекционной точке если:
java.lang
и типы массива, как полагают, соответствуют, только если их типы элемента идентичны.@Default
.Боб имеет право на инжекцию в данную инжекционную точку если:
Если больше чем один боб имеет право на инжекцию к инжекционной точке, контейнер пытается разрешить неоднозначность, устраняя все бобы, которые не являются альтернативами, за исключением методов производителя и полей бобов, которые являются альтернативами.
Определенные юридические бобовые типы не могут быть проксированы контейнером:
Инжекционная точка, чья объявленный типом не может быть проксирован контейнером, не должна решить к бобу с нормальным контекстом.
ЭЛЬ имена разрешаются когда Объединено оцениваются, ЭЛЬ выражения. ЭЛЬ имя решает к бобу если:
Если ЭЛЬ имя решает больше чем к одному бобу, контейнер пытается разрешить неоднозначность, устраняя все бобы, которые не являются альтернативами, за исключением методов производителя и полей бобов, которые являются альтернативами.
По умолчанию у бобового архива нет никаких включенных перехватчиков. Перехватчик должен быть явно включен, перечисляя его боб class под элементом <interceptors> файла beans.xml бобового архива. Порядок объявлений перехватчика определяет упорядочивание перехватчика. Перехватчики, которые происходят ранее в списке, вызывают сначала.
Перехватчик связывается с бобом если:
Экземпляр перехватчика является зависимым объектом объекта, который он прерывает.
javax.enterprise.context
, javax.inject
, javax.interceptor
, javax.decorator
, javax.enterprise.event
, Produces
, Alternative
|
|||||||||
ПРЕДЫДУЩИЙ ПАКЕТ ПАКЕТ NEXT | ФРЕЙМЫ НИКАКИЕ ФРЕЙМЫ |
Авторское право © 2009-2011, Oracle Corporation и/или его филиалы. Все права защищены. Использование подвергается
Сгенерированный на 10-February-2011 12:41