blob: 565945ac6ebaf80b3724592504ec45442f82baba [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>Observes</title>
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
<link rel="shortcut icon" href="/img/jakarta-favicon.ico">
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="Observes";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../jakarta/enterprise/event/ObserverException.html" title="class in jakarta.enterprise.event"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../jakarta/enterprise/event/ObservesAsync.html" title="annotation in jakarta.enterprise.event"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?jakarta/enterprise/event/Observes.html" target="_top">Frames</a></li>
<li><a href="Observes.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Required&nbsp;|&nbsp;</li>
<li><a href="#annotation.type.optional.element.summary">Optional</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#annotation.type.element.detail">Element</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">jakarta.enterprise.event</div>
<h2 title="Annotation Type Observes" class="title">Annotation Type Observes</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>@Target(value=PARAMETER)
@Retention(value=RUNTIME)
@Documented
public @interface <span class="memberNameLabel">Observes</span></pre>
<div class="block"><p>
Identifies the event parameter of an observer method. May be applied to a parameter of a method of a bean class or
<a href="../../../jakarta/enterprise/inject/spi/Extension.html" title="interface in jakarta.enterprise.inject.spi">extension</a>.
</p>
<pre>
public void afterLogin(&#064;Observes LoggedInEvent event) { ... }
</pre>
<p>
An observer method is a non-abstract method of a managed bean class or session bean class (or of an extension). An observer
method may be either static or non-static. If the bean is a session bean, the observer method must be either a business
method of the EJB or a static method of the bean class.
</p>
<p>
Each observer method must have exactly one event parameter, of the same type as the event type it observes. Event qualifiers
may be declared by annotating the event parameter. When searching for observer methods for an event, the container considers
the type and qualifiers of the event parameter.
</p>
<p>
If the event parameter does not explicitly declare any qualifier, the observer method observes events with no qualifier.
</p>
<p>
The event parameter type may contain a type variable or wildcard.
</p>
<p>
In addition to the event parameter, observer methods may declare additional parameters, which may declare qualifiers. These
additional parameters are injection points.
</p>
<pre>
public void afterLogin(&#064;Observes LoggedInEvent event, &#064;Manager User user, Logger log) { ... }
</pre>
<p>
A bean (or extension) may declare multiple observer methods.
</p>
<p>
Observer methods are inherited by bean subclasses.
</p>
<p>
Interceptors and decorators may not declare observer methods.
</p></div>
<dl>
<dt><span class="simpleTagLabel">Examples (en):</span></dt>
<dd><a href="../../../../../../tomee-9.0/examples/websocket-jms.html">websocket-jms</a>, <a href="../../../../../../tomee-9.0/examples/schedule-events.html">schedule-events</a>, <a href="../../../../../../tomee-9.0/examples/mp-config-source-database.html">mp-config-source-database</a>, <a href="../../../../../../tomee-9.0/examples/cdi-events.html">cdi-events</a></dd>
<dt><span class="simpleTagLabel">Examples (es):</span></dt>
<dd><a href="../../../../../../tomee-9.0/es/examples/mp-config-source-database.html">mp-config-source-database</a></dd>
<dt><span class="simpleTagLabel">Examples (pt):</span></dt>
<dd><a href="../../../../../../tomee-9.0/pt/examples/schedule-events.html">schedule-events</a>, <a href="../../../../../../tomee-9.0/pt/examples/mp-config-source-database.html">mp-config-source-database</a>, <a href="../../../../../../tomee-9.0/pt/examples/cdi-events.html">cdi-events</a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== ANNOTATION TYPE OPTIONAL MEMBER SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="annotation.type.optional.element.summary">
<!-- -->
</a>
<h3>Optional Element Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Optional Element Summary table, listing optional elements, and an explanation">
<caption><span>Optional Elements</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Optional Element and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../jakarta/enterprise/event/TransactionPhase.html" title="enum in jakarta.enterprise.event">TransactionPhase</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/enterprise/event/Observes.html#during--">during</a></span></code>
<div class="block">
Specifies <a href="../../../jakarta/enterprise/event/Reception.html" title="enum in jakarta.enterprise.event">at what time the observer method is notified</a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../jakarta/enterprise/event/Reception.html" title="enum in jakarta.enterprise.event">Reception</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/enterprise/event/Observes.html#notifyObserver--">notifyObserver</a></span></code>
<div class="block">
Specifies <a href="../../../jakarta/enterprise/event/Reception.html" title="enum in jakarta.enterprise.event">under what conditions the observer method is notified</a>.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ ANNOTATION TYPE MEMBER DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="annotation.type.element.detail">
<!-- -->
</a>
<h3>Element Detail</h3>
<a name="notifyObserver--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notifyObserver</h4>
<pre>public abstract&nbsp;<a href="../../../jakarta/enterprise/event/Reception.html" title="enum in jakarta.enterprise.event">Reception</a>&nbsp;notifyObserver</pre>
<div class="block"><p>
Specifies <a href="../../../jakarta/enterprise/event/Reception.html" title="enum in jakarta.enterprise.event">under what conditions the observer method is notified</a>.
</p>
<p>
By default, the observer method is notified even if no instance of the bean that defines the observer method already
exists in the current context.
</p></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>conditional observer type</dd>
</dl>
<dl>
<dt>Default:</dt>
<dd>jakarta.enterprise.event.Reception.ALWAYS</dd>
</dl>
</li>
</ul>
</li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="during--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>during</h4>
<pre>public abstract&nbsp;<a href="../../../jakarta/enterprise/event/TransactionPhase.html" title="enum in jakarta.enterprise.event">TransactionPhase</a>&nbsp;during</pre>
<div class="block"><p>
Specifies <a href="../../../jakarta/enterprise/event/Reception.html" title="enum in jakarta.enterprise.event">at what time the observer method is notified</a>.
</p>
<p>
By default, the observer method is notified when the event is fired.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>phase of the transaction
</p></dd>
</dl>
<dl>
<dt>Default:</dt>
<dd>jakarta.enterprise.event.TransactionPhase.IN_PROGRESS</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../jakarta/enterprise/event/ObserverException.html" title="class in jakarta.enterprise.event"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../jakarta/enterprise/event/ObservesAsync.html" title="annotation in jakarta.enterprise.event"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?jakarta/enterprise/event/Observes.html" target="_top">Frames</a></li>
<li><a href="Observes.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Required&nbsp;|&nbsp;</li>
<li><a href="#annotation.type.optional.element.summary">Optional</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#annotation.type.element.detail">Element</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>