<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title>Apache TomEE</title>
	<meta name="description"
		  content="Apache TomEE is a lightweight, yet powerful, JavaEE Application server with feature rich tooling." />
	<meta name="keywords" content="tomee,asf,apache,javaee,jee,shade,embedded,test,junit,applicationcomposer,maven,arquillian" />
	<meta name="author" content="Luka Cvetinovic for Codrops" />
	<link rel="icon" href="../../../favicon.ico">
	<link rel="icon"  type="image/png" href="../../../favicon.png">
	<meta name="msapplication-TileColor" content="#80287a">
	<meta name="theme-color" content="#80287a">
	<link rel="stylesheet" type="text/css" href="../../../css/normalize.css">
	<link rel="stylesheet" type="text/css" href="../../../css/bootstrap.css">
	<link rel="stylesheet" type="text/css" href="../../../css/owl.css">
	<link rel="stylesheet" type="text/css" href="../../../css/animate.css">
	<link rel="stylesheet" type="text/css" href="../../../fonts/font-awesome-4.1.0/css/font-awesome.min.css">
	<link rel="stylesheet" type="text/css" href="../../../fonts/eleganticons/et-icons.css">
	<link rel="stylesheet" type="text/css" href="../../../css/jqtree.css">
	<link rel="stylesheet" type="text/css" href="../../../css/idea.css">
	<link rel="stylesheet" type="text/css" href="../../../css/cardio.css">

	<script type="text/javascript">

      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-2717626-1']);
      _gaq.push(['_setDomainName', 'apache.org']);
      _gaq.push(['_trackPageview']);

      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();

    </script>
</head>

<body>
    <div class="preloader">
		<img src="../../../img/loader.gif" alt="Preloader image">
	</div>
	    <nav class="navbar">
		<div class="container">
		  <div class="row">          <div class="col-md-12">

			<!-- Brand and toggle get grouped for better mobile display -->
			<div class="navbar-header">
				<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
					<span class="sr-only">Toggle navigation</span>
					<span class="icon-bar"></span>
					<span class="icon-bar"></span>
					<span class="icon-bar"></span>
				</button>
				<a class="navbar-brand" href="/">
				    <span>

				    
                        <img src="../../../img/logo-active.png">
                    

                    </span>
				    Apache TomEE
                </a>
			</div>
			<!-- Collect the nav links, forms, and other content for toggling -->
			<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
				<ul class="nav navbar-nav navbar-right main-nav">
					<li><a href="../../../docs.html">Documentation</a></li>
					<li><a href="../../../community/index.html">Community</a></li>
					<li><a href="../../../security/security.html">Security</a></li>
					<li><a href="../../../download-ng.html">Downloads</a></li>
				</ul>
			</div>
			<!-- /.navbar-collapse -->
		   </div></div>
		</div>
		<!-- /.container-fluid -->
	</nav>


    <div id="main-block" class="container main-block">
        <div class="row title">
          <div class="col-md-12">
            <div class='page-header'>
              
              <h1>CDI Interceptors</h1>
            </div>
          </div>
        </div>
        <div class="row">
            
            <div class="col-md-12">
                <div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Vamos escrever uma aplicação simples que nos permite comprar entradas para um filme. Como toda aplicação, log é uma das questões transversais que nós temos.
Alem disso, ha alguns métodos na nossa aplicação que só podem ser acessados no horário de trabalho. Se acessados fora do horário nos vamos lançar um <code>AccessDeniedException</code>.</p>
</div>
<div class="paragraph">
<p>Como podemos marcar quais métodos devem ser interceptados? Não seria conveniente anotar um método desta forma:</p>
</div>
<div class="literalblock">
<div class="content">
<pre>@Log
public void aMethod(){...}</pre>
</div>
</div>
<div class="paragraph">
<p>ou</p>
</div>
<div class="literalblock">
<div class="content">
<pre>@TimeRestricted
public void bMethod(){...}</pre>
</div>
</div>
<div class="paragraph">
<p>Vamos criar essas anotações que vão "marcar" um método para interceptação.</p>
</div>
<div class="literalblock">
<div class="content">
<pre>@InterceptorBinding
@Target({ TYPE, METHOD })
@Retention(RUNTIME)
public @interface Log {
}</pre>
</div>
</div>
<div class="paragraph">
<p>e</p>
</div>
<div class="literalblock">
<div class="content">
<pre>@InterceptorBinding
@Target({ TYPE, METHOD })
@Retention(RUNTIME)
public @interface TimeRestricted {
}</pre>
</div>
</div>
<div class="paragraph">
<p>Garanta que voce não esqueceu a anotação <code>@InterceptorBinding</code> acima! Agora nossas anotações personalizadas estão criadas, vamos anexa-las (ou vincula-las) aos interceptores.</p>
</div>
<div class="paragraph">
<p>Aqui esta nosso interceptor de log. Um método <code>@AroundInvoke</code> e estamos quase terminando.</p>
</div>
<div class="literalblock">
<div class="content">
<pre>@Interceptor
@Log  //Vinculando com o interceptador aqui. Agora todo método anotado com @Log ira ser interceptado pelo logMethodEntry
public class BookForAShowLoggingInterceptor implements Serializable {
    private static final long serialVersionUID = 8139854519874743530L;
    private Logger logger = Logger.getLogger("BookForAShowApplicationLogger");
    @AroundInvoke
    public Object logMethodEntry(InvocationContext ctx) throws Exception {
        logger.info("Before entering method:" + ctx.getMethod().getName());
        InterceptionOrderTracker.getMethodsInterceptedList().add(ctx.getMethod().getName());
        InterceptionOrderTracker.getInterceptedByList().add(this.getClass().getSimpleName());
        return ctx.proceed();
    }
}</pre>
</div>
</div>
<div class="paragraph">
<p>Agora a anotação <code>@Log</code> que nos criamos esta vinculada a esse interceptador. (Da mesma forma nos vinculamos <code>@TimeRestrict</code> para <code>TimeBasedRestrictingInterceptor</code>. Veja no código)</p>
</div>
<div class="paragraph">
<p>Tudo pronto, vamos anotar a nível de classe ou método e se divertir interceptando!</p>
</div>
<div class="literalblock">
<div class="content">
<pre>@Log
@Stateful
public class BookForAShowOneInterceptorApplied implements Serializable {
    private static final long serialVersionUID = 6350400892234496909L;
    public List&lt;String&gt; getMoviesList() {
        List&lt;String&gt; moviesAvailable = new ArrayList&lt;String&gt;();
        moviesAvailable.add("12 Angry Men");
        moviesAvailable.add("Kings speech");
        return moviesAvailable;
    }
    public Integer getDiscountedPrice(int ticketPrice) {
        return ticketPrice - 50;
    }
    // Suponha que existam mais métodos
}</pre>
</div>
</div>
<div class="paragraph">
<p>A anotação <code>@Log</code> aplicada em nível de classe denota que todos os métodos serão interceptados com <code>BookForAShowLoggingInterceptor</code>.</p>
</div>
<div class="paragraph">
<p>Antes de dizer-mos "tudo pronto" tem apenas uma coisa que precisamos fazer! Habilitar os interceptadores!</p>
</div>
<div class="paragraph">
<p>Vamos criar rapidamente um arquivo <code>beans.xml</code> no caminho <code>src/main/resources/META-INF/beans.xml</code>:</p>
</div>
<div class="literalblock">
<div class="content">
<pre>&lt;beans&gt;
  &lt;interceptors&gt;
    &lt;class&gt;org.superbiz.cdi.bookshow.interceptors.BookForAShowLoggingInterceptor
    &lt;/class&gt;
    &lt;class&gt;org.superbiz.cdi.bookshow.interceptors.TimeBasedRestrictingInterceptor
    &lt;/class&gt;
  &lt;/interceptors&gt;
&lt;/beans&gt;</pre>
</div>
</div>
<div class="paragraph">
<p>Por padrão, um arquivo de bean não tem interceptadores habilitados; Um interceptador deve ser explicitamente habilitado para "escutar" sua classe no arquivo <code>beans.xml</code>.</p>
</div>
<div class="paragraph">
<p>A ordem da anotação que intercepta não importa.</p>
</div>
<div class="paragraph">
<p>Exemplo:</p>
</div>
<div class="literalblock">
<div class="content">
<pre>@TimeRestrict
@Log
void cMethod(){}</pre>
</div>
</div>
<div class="paragraph">
<p>Existe o elemento <code>interceptors</code> no <code>bean.xml</code> não apenas para "habilitar" os interceptadores, mas também define a "ordem de execução" deles. Nesse caso <code>BookForAShowLoggingInterceptor</code> vai ser aplicado primeiro e depois <code>TimeBasedRestrictingInterceptor</code></p>
</div>
<div class="paragraph">
<p>Agora você já sabe que a ordem somente é determinada pelo elemento <code>interceptors</code> no <code>beans.xml</code>. A regra é clara, interceptadores que aparecem antes na lista são chamados primeiro.</p>
</div>
<div class="paragraph">
<p>Perceba também que um método pode ser marcado para interceptação utilizando vários interceptors apenas adicionando a anotação acima.</p>
</div>
<div class="paragraph">
<p>Isso traz outra questão. No caso acima nós temos dois interceptadores aplicados juntos. Mas e se nos quisermos algo como 4 interceptadores? Isso vai ir longe&#8230;&#8203;. Ter tantas anotações não deixa meu código feio?</p>
</div>
<div class="paragraph">
<p>Não se preocupe! Apenas crie uma anotação que herda das outras</p>
</div>
<div class="literalblock">
<div class="content">
<pre>@Inherited
@InterceptorBinding
@Target({ TYPE, METHOD })
@Retention(RUNTIME)
@Log
@TimeRestricted
public @interface TimeRestrictAndLog {
}</pre>
</div>
</div>
<div class="paragraph">
<p>Este interceptador faz herança.</p>
</div>
<div class="paragraph">
<p>O código abaixo demonstra a maioria dos casos que nos discutimos.</p>
</div>
<div class="paragraph">
<p>Não esqueça que forma antiga de binding com <code>@Interceptors(WhicheverInterceptor.class)</code> também é suportada. De uma olhada em <code>BookForAShowOldStyleInterceptorBinding</code> onde os comentários explicam como a maneira mais nova (que conversamos acima) é melhor.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_o_código">O código</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_bookforashowoneinterceptorapplied">BookForAShowOneInterceptorApplied</h3>
<div class="paragraph">
<p><code>BookForAShowOneInterceptorApplied</code> mostra apenas um simples interceptador de <code>@Log</code> sendo aplicado.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">package org.superbiz.cdi.bookshow.beans;

import org.superbiz.cdi.bookshow.interceptorbinding.Log;

import jakarta.ejb.Stateful;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

@Log
@Stateful
public class BookForAShowOneInterceptorApplied implements Serializable {
    private static final long serialVersionUID = 6350400892234496909L;

    public List&lt;String&gt; getMoviesList() {
        List&lt;String&gt; moviesAvailable = new ArrayList&lt;String&gt;();
        moviesAvailable.add("12 Angry Men");
        moviesAvailable.add("Kings speech");
        return moviesAvailable;
    }

    public Integer getDiscountedPrice(int ticketPrice) {
        return ticketPrice - 50;
    }
}</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_bookforashowtwointerceptorsapplied">BookForAShowTwoInterceptorsApplied</h3>
<div class="paragraph">
<p><code>BookForAShowTwoInterceptorsApplied</code> mostra ambos <code>@Log</code> e <code>@TimeRestricted</code> sendo aplicados.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">package org.superbiz.cdi.bookshow.beans;

import org.superbiz.cdi.bookshow.interceptorbinding.Log;
import org.superbiz.cdi.bookshow.interceptorbinding.TimeRestricted;

import jakarta.ejb.Stateful;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

@Log
@Stateful
public class BookForAShowTwoInterceptorsApplied implements Serializable {
    private static final long serialVersionUID = 6350400892234496909L;

    public List&lt;String&gt; getMoviesList() {
        List&lt;String&gt; moviesAvailable = new ArrayList&lt;String&gt;();
        moviesAvailable.add("12 Angry Men");
        moviesAvailable.add("Kings speech");
        return moviesAvailable;
    }

    @TimeRestricted
    public Integer getDiscountedPrice(int ticketPrice) {
        return ticketPrice - 50;
    }
}</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_bookshowinterceptorbindinginheritanceexplored">BookShowInterceptorBindingInheritanceExplored</h3>
<div class="paragraph">
<p><code>BookShowInterceptorBindingInheritanceExplored</code> mostra como <code>@TimeRestrictAndLog</code> (interceptor-binding-inheritance) pode ser usado como uma alternativa em vez de anotar o método com muitas anotações explicitamente.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">package org.superbiz.cdi.bookshow.beans;

import org.superbiz.cdi.bookshow.interceptorbinding.TimeRestrictAndLog;

import jakarta.ejb.Stateful;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

@Stateful
public class BookShowInterceptorBindingInheritanceExplored implements Serializable {
    private static final long serialVersionUID = 6350400892234496909L;

    public List&lt;String&gt; getMoviesList() {
        List&lt;String&gt; moviesAvailable = new ArrayList&lt;String&gt;();
        moviesAvailable.add("12 Angry Men");
        moviesAvailable.add("Kings speech");
        return moviesAvailable;
    }

    @TimeRestrictAndLog
    public Integer getDiscountedPrice(int ticketPrice) {
        return ticketPrice - 50;
    }
}</code></pre>
</div>
</div>
</div>
</div>
</div>
            </div>
            
        </div>
    </div>
<footer>
		<div class="container">
			<div class="row">
				<div class="col-sm-6 text-center-mobile">
					<h3 class="white">Be simple.  Be certified. Be Tomcat.</h3>
					<h5 class="light regular light-white">"A good application in a good server"</h5>
					<ul class="social-footer">
						<li><a href="https://www.facebook.com/ApacheTomEE/"><i class="fa fa-facebook"></i></a></li>
						<li><a href="https://twitter.com/apachetomee"><i class="fa fa-twitter"></i></a></li>
						<li><a href="https://plus.google.com/communities/105208241852045684449"><i class="fa fa-google-plus"></i></a></li>
					</ul>
				</div>
				<div class="col-sm-6 text-center-mobile">
					<div class="row opening-hours">
						<div class="col-sm-3 text-center-mobile">
							<h5><a href="../../../latest/docs/" class="white">Documentation</a></h5>
							<ul class="list-unstyled">
								<li><a href="../../../latest/docs/admin/configuration/index.html" class="regular light-white">How to configure</a></li>
								<li><a href="../../../latest/docs/admin/file-layout.html" class="regular light-white">Dir. Structure</a></li>
								<li><a href="../../../latest/docs/developer/testing/index.html" class="regular light-white">Testing</a></li>
								<li><a href="../../../latest/docs/admin/cluster/index.html" class="regular light-white">Clustering</a></li>
							</ul>
						</div>
						<div class="col-sm-3 text-center-mobile">
							<h5><a href="../../../latest/examples/" class="white">Examples</a></h5>
							<ul class="list-unstyled">
								<li><a href="../../../latest/examples/simple-cdi-interceptor.html" class="regular light-white">CDI Interceptor</a></li>
								<li><a href="../../../latest/examples/rest-cdi.html" class="regular light-white">REST with CDI</a></li>
								<li><a href="../../../latest/examples/ejb-examples.html" class="regular light-white">EJB</a></li>
								<li><a href="../../../latest/examples/jsf-managedBean-and-ejb.html" class="regular light-white">JSF</a></li>
							</ul>
						</div>
						<div class="col-sm-3 text-center-mobile">
							<h5><a href="../../../community/index.html" class="white">Community</a></h5>
							<ul class="list-unstyled">
								<li><a href="../../../community/contributors.html" class="regular light-white">Contributors</a></li>
								<li><a href="../../../community/social.html" class="regular light-white">Social</a></li>
								<li><a href="../../../community/sources.html" class="regular light-white">Sources</a></li>
							</ul>
						</div>
						<div class="col-sm-3 text-center-mobile">
							<h5><a href="../../../security/index.html" class="white">Security</a></h5>
							<ul class="list-unstyled">
								<li><a href="http://apache.org/security" target="_blank" class="regular light-white">Apache Security</a></li>
								<li><a href="http://apache.org/security/projects.html" target="_blank" class="regular light-white">Security Projects</a></li>
								<li><a href="http://cve.mitre.org" target="_blank" class="regular light-white">CVE</a></li>
							</ul>
						</div>
					</div>
				</div>
			</div>
			<div class="row bottom-footer text-center-mobile">
				<div class="col-sm-12 light-white">
					<p>Copyright &copy; 1999-2016 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache TomEE, TomEE, Apache, the Apache feather logo, and the Apache TomEE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
				</div>
			</div>
		</div>
	</footer>
	<!-- Holder for mobile navigation -->
	<div class="mobile-nav">
        <ul>
          <li><a hef="../../../latest/docs/admin/index.html">Administrators</a>
          <li><a hef="../../../latest/docs/developer/index.html">Developers</a>
          <li><a hef="../../../latest/docs/advanced/index.html">Advanced</a>
          <li><a hef="../../../community/index.html">Community</a>
        </ul>
		<a href="#" class="close-link"><i class="arrow_up"></i></a>
	</div>
	<!-- Scripts -->
	<script src="../../../js/jquery-1.11.1.min.js"></script>
	<script src="../../../js/owl.carousel.min.js"></script>
	<script src="../../../js/bootstrap.min.js"></script>
	<script src="../../../js/wow.min.js"></script>
	<script src="../../../js/typewriter.js"></script>
	<script src="../../../js/jquery.onepagenav.js"></script>
	<script src="../../../js/tree.jquery.js"></script>
	<script src="../../../js/highlight.pack.js"></script>
    <script src="../../../js/main.js"></script>
		</body>

</html>

