You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@tomee.apache.org by bu...@apache.org on 2019/09/07 20:36:39 UTC

svn commit: r1049790 - in /websites/staging/tomee/trunk: cgi-bin/ content/ content/tomee-8.0/es/examples/

Author: buildbot
Date: Sat Sep  7 20:36:39 2019
New Revision: 1049790

Log:
Staging update by buildbot for tomee

Added:
    websites/staging/tomee/trunk/content/tomee-8.0/es/examples/async-methods.html
    websites/staging/tomee/trunk/content/tomee-8.0/es/examples/cdi-application-scope.html
    websites/staging/tomee/trunk/content/tomee-8.0/es/examples/javamail.html
    websites/staging/tomee/trunk/content/tomee-8.0/es/examples/mp-custom-healthcheck.html
Modified:
    websites/staging/tomee/trunk/cgi-bin/   (props changed)
    websites/staging/tomee/trunk/content/   (props changed)
    websites/staging/tomee/trunk/content/tomee-8.0/es/examples/index.html
    websites/staging/tomee/trunk/content/tomee-8.0/es/examples/mp-config-example.html

Propchange: websites/staging/tomee/trunk/cgi-bin/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Sat Sep  7 20:36:39 2019
@@ -1 +1 @@
-1866567
+1866568

Propchange: websites/staging/tomee/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Sat Sep  7 20:36:39 2019
@@ -1 +1 @@
-1866567
+1866568

Added: websites/staging/tomee/trunk/content/tomee-8.0/es/examples/async-methods.html
==============================================================================
--- websites/staging/tomee/trunk/content/tomee-8.0/es/examples/async-methods.html (added)
+++ websites/staging/tomee/trunk/content/tomee-8.0/es/examples/async-methods.html Sat Sep  7 20:36:39 2019
@@ -0,0 +1,417 @@
+<!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>Métodos @Asynchronous</h1>
+            </div>
+          </div>
+        </div>
+        <div class="row">
+            
+            <div class="col-md-12">
+                <div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>La annotación @Asynchronous fue introducida en EJB 3.1 como una manera simple
+de crear procesamiento asíncrono.</p>
+</div>
+<div class="paragraph">
+<p>Cada vez que un método anotado con <code>@Asynchronous</code> es invocado por cualquiera
+retornará inmediatamentesin importar cuanto tarda en realidad el método. Cada
+invocación retorna un objeto
+<a href="http://download.oracle.com/javase/6/docs/api/java/util/concurrent/Future.html">Future</a>
+que esencialmente inicia <em>vacío</em> y luego se llenará con su valor por el
+contenedor cuando la llamada al metodo relacionado se ejecute en realidad.
+Retornar un objeto <code>Future</code> no es requerido y un método <code>@Asynchronous</code> puede
+por supuesto retornar <code>void</code>.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_ejemplo">Ejemplo</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Aquí, en <code>JobProcessorTest</code>,</p>
+</div>
+<div class="paragraph">
+<p><code>final Future&lt;String&gt; red = processor.addJob("red");</code> procede a la siguiente sentencia,</p>
+</div>
+<div class="paragraph">
+<p><code>final Future&lt;String&gt; orange = processor.addJob("orange");</code></p>
+</div>
+<div class="paragraph">
+<p>sin esperar por a que método <code>addJob()</code> se complete. Y luego podríamos
+preguntar por el resultado usando el método <code>Future&lt;?&gt;.get()</code> como sigue</p>
+</div>
+<div class="paragraph">
+<p><code>assertEquals("blue", blue.get());</code></p>
+</div>
+<div class="paragraph">
+<p>Espera a que el procesamiento de complete (si no se a completado aún) y
+obtiene el resultado. Si no te importa el resultado, podrías simplemente tener tu método asíncrono como un método <code>void</code>.</p>
+</div>
+<div class="paragraph">
+<p>Desde la documentación del Objeto <a href="http://download.oracle.com/javase/6/docs/api/java/util/concurrent/Future.html">Future</a>,</p>
+</div>
+<div class="quoteblock">
+<blockquote>
+<div class="paragraph">
+<p>Un Future representa el resultado de un cómputo asíncrono. Se proporcionan métodos para chequear si el cómputo está completo, esperar por que se complete,
+y para obtener el resultado del cómputo. El resultado solo puede ser obtenido
+usando el método get cuando el cómputo se ha completado, bloqueando si es
+necesario hasta que está listo. La cancelación es ejecutada por el método
+cancel. Métodos adicionales son proporcionados para determinarsi la tarea se
+completó normalmente o fue cancelada. Una vez que un cómputo se ha completado,
+el cómputo no puede ser cancelado. Si quieres usar un Future solo por que se
+puede cancelar pero sin proveer un resultado usable, puedes declarar tipos de
+la forma Future&lt;?&gt; y retornar null como un resultado de la tarea subyacente</p>
+</div>
+</blockquote>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_el_código">El código</h2>
+<div class="sectionbody">
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-java" data-lang="java">@Singleton
+public class JobProcessor {
+@Asynchronous
+@Lock(READ)
+@AccessTimeout(-1)
+public Future&lt;String&gt; addJob(String jobName) {
+
+    // Pretendamos que esta tarea tarda un tiempo
+    doSomeHeavyLifting();
+
+    // Retorna nuestro resultado
+    return new AsyncResult&lt;String&gt;(jobName);
+}
+
+private void doSomeHeavyLifting() {
+    try {
+        Thread.sleep(SECONDS.toMillis(10));
+    } catch (InterruptedException e) {
+        Thread.interrupted();
+        throw new IllegalStateException(e);
+    }
+  }
+}</code></pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_prueba">Prueba</h2>
+<div class="sectionbody">
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-java" data-lang="java">public class JobProcessorTest extends TestCase {
+
+public void test() throws Exception {
+
+    final Context context = EJBContainer.createEJBContainer().getContext();
+
+    final JobProcessor processor = (JobProcessor) context.lookup("java:global/async-methods/JobProcessor");
+
+    final long start = System.nanoTime();
+
+    // Encola mucho trabajo
+    final Future&lt;String&gt; red = processor.addJob("red");
+    final Future&lt;String&gt; orange = processor.addJob("orange");
+    final Future&lt;String&gt; yellow = processor.addJob("yellow");
+    final Future&lt;String&gt; green = processor.addJob("green");
+    final Future&lt;String&gt; blue = processor.addJob("blue");
+    final Future&lt;String&gt; violet = processor.addJob("violet");
+
+    // Espera por el resultado -- 1 minuto de trabajo
+    assertEquals("blue", blue.get());
+    assertEquals("orange", orange.get());
+    assertEquals("green", green.get());
+    assertEquals("red", red.get());
+    assertEquals("yellow", yellow.get());
+    assertEquals("violet", violet.get());
+
+    // Cuanto tiempo tardó?
+    final long total = TimeUnit.NANOSECONDS.toSeconds(System.nanoTime() - start);
+
+    // Una ejecución debería tardar entre 9 y 21 seconds
+    // El tiempo de ejecución dependen en el número de threads disponibles para la ejecucion asíncrona.
+    // En el mejor de los casos son 10s mas un tiempo mínimo
+    assertTrue("Expected &gt; 9 but was: " + total, total &gt; 9);
+    assertTrue("Expected &lt; 21 but was: " + total, total &lt; 21);
+
+  }
+}</code></pre>
+</div>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-java" data-lang="java">-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.async.JobProcessorTest
+INFO - ********************************************************************************
+INFO - OpenEJB http://tomee.apache.org/
+INFO - Startup: Wed Feb 27 12:46:11 BRT 2019
+INFO - Copyright 1999-2018 (C) Apache OpenEJB Project, All Rights Reserved.
+INFO - Version: 8.0.0-SNAPSHOT
+INFO - Build date: 20190227
+INFO - Build time: 04:12
+INFO - ********************************************************************************
+INFO - openejb.home = /home/soro/git/apache/tomee/examples/async-methods
+INFO - openejb.base = /home/soro/git/apache/tomee/examples/async-methods
+INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@22f71333
+INFO - Succeeded in installing singleton service
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Creating TransactionManager(id=Default Transaction Manager)
+INFO - Creating SecurityService(id=Default Security Service)
+INFO - Found EjbModule in classpath: /home/soro/git/apache/tomee/examples/async-methods/target/classes
+INFO - Beginning load: /home/soro/git/apache/tomee/examples/async-methods/target/classes
+INFO - Configuring enterprise application: /home/soro/git/apache/tomee/examples/async-methods
+INFO - Auto-deploying ejb JobProcessor: EjbDeployment(deployment-id=JobProcessor)
+INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)
+INFO - Auto-creating a container for bean JobProcessor: Container(type=SINGLETON, id=Default Singleton Container)
+INFO - Creating Container(id=Default Singleton Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.async.JobProcessorTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Creating Container(id=Default Managed Container)
+INFO - Using directory /tmp for stateful session passivation
+INFO - Enterprise application "/home/soro/git/apache/tomee/examples/async-methods" loaded.
+INFO - Assembling app: /home/soro/git/apache/tomee/examples/async-methods
+INFO - Jndi(name="java:global/async-methods/JobProcessor!org.superbiz.async.JobProcessor")
+INFO - Jndi(name="java:global/async-methods/JobProcessor")
+INFO - Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@22f71333
+INFO - Some Principal APIs could not be loaded: org.eclipse.microprofile.jwt.JsonWebToken out of org.eclipse.microprofile.jwt.JsonWebToken not found
+INFO - OpenWebBeans Container is starting...
+INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
+INFO - All injection points were validated successfully.
+INFO - OpenWebBeans Container has started, it took 316 ms.
+INFO - Created Ejb(deployment-id=JobProcessor, ejb-name=JobProcessor, container=Default Singleton Container)
+INFO - Started Ejb(deployment-id=JobProcessor, ejb-name=JobProcessor, container=Default Singleton Container)
+INFO - Deployed Application(path=/home/soro/git/apache/tomee/examples/async-methods)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 23.491 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0</code></pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_como_funciona_esto_detrás_de_escena">Como funciona esto detrás de escena</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Lo que lo hace trabajar detrás de escena es:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>El <code>JobProcessor</code> quien es el llamador ve que no es de hecho una instancia de <code>JobProcessor</code>. Por el contrario es una subclase o proxy que tiene todos los métodos sobrescritos. Métodos que deben ser asíncronos son tratados distinto.</p>
+</li>
+<li>
+<p>Llamadas a un método asíncrono simplemente retornan un <code>Runnable</code> siendo creado que envuelve el método y parámetros que tu pasaste. Este runnable es pasado a un
+<a href="http://download.oracle.com/javase/6/docs/api/java/util/concurrent/Executor.html">Executor</a> quien es simplemente una cola de trabajo adjuntada al conjunto de hilos (thread pool).</p>
+</li>
+<li>
+<p>Después de añadir el trabajo a la cola, la versión proxeada del método retorna una implementation de <code>Future</code> que es enlazada a el <code>Runnable</code> quien está ahora esperando en la cola.</p>
+</li>
+<li>
+<p>Cuando el <code>Runnable</code> finalmente ejecuta el método sobre la instancia <em>real</em> del <code>JobProcessor</code>, tomará el valor de retorno y lo asignará dentro del <code>Future</code> haciendolo disponible a el que llama.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Importante notar que el objeto <code>AsyncResult</code> que <code>JobProcessor</code> retorna no es el mismo objeto <code>Future</code> que el que llama contiene. Sería genial si el <code>JobProcessor</code> real pudiera retornar <code>String</code> y que el que la versión de <code>JobProcessor</code> del que llama pudiera retornar <code>Future&lt;String&gt;</code>, pero no encontramos una manera de hacer eso sin añadir mas complejidad. Entonces el <code>AsyncResult</code> es un simple objeto envoltorio. El contenedor sacará el <code>String</code>, descartará el <code>AsyncResult</code>, entonces pondrá el <code>String</code> en el <code>Future</code> <em>real</em> que el llamador contiene.</p>
+</div>
+<div class="paragraph">
+<p>Para obtener status del proceso, simplemente pasa un objeto thread-safe como <a href="http://download.oracle.com/javase/6/docs/api/java/util/concurrent/atomic/AtomicInteger.html">AtomicInteger</a> a el método <code>@Asynchronous</code> y has que el código lo actualice periodicamente con el porcentaje completado.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_ejemplos_relacionados">Ejemplos Relacionados</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Para procesamiento asíncrono complejo, la respuesta de JavaEE’s es <code>@MessageDrivenBean</code>. Échale una mirada al ejemplo
+<a href="../simple-mdb/README.html">simple-mdb</a></p>
+</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/documentation.html" 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>
+

Added: websites/staging/tomee/trunk/content/tomee-8.0/es/examples/cdi-application-scope.html
==============================================================================
--- websites/staging/tomee/trunk/content/tomee-8.0/es/examples/cdi-application-scope.html (added)
+++ websites/staging/tomee/trunk/content/tomee-8.0/es/examples/cdi-application-scope.html Sat Sep  7 20:36:39 2019
@@ -0,0 +1,355 @@
+<!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 @ApplicationScoped</h1>
+            </div>
+          </div>
+        </div>
+        <div class="row">
+            
+            <div class="col-md-12">
+                <div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>Este ejemplo muestra el uso de la anotacioón <code>@ApplicationScoped</code> para inyección de objetos.
+Un objeto deberia ser definido como <code>@ApplicationScoped</code> y se crea una vez durante la ejecución de la aplicación.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_ejemplo">Ejemplo</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Este ejemplo muestra un escenario similar a cdi-request-scope.</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>Un huésped del restaurante ordena una sopa al camarero.
+El camarero luego le devuelve la sopa al huésped.
+Otro huésped puede pedir la misma sopa que ordenó el cliente anterior.</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Aquí es donde se utiliza el alcance de la aplicación.</p>
+</div>
+<div class="sect2">
+<h3 id="_camarero">Camarero</h3>
+<div class="paragraph">
+<p>El bean de sesión <code>Waiter</code> recibe una solicitud de la clase de ejemplo a través del método <code>orderSoup()</code> y establece el nombre para el campo <code>soup</code>.</p>
+</div>
+<div class="paragraph">
+<p>El método <code>orderWhatTheOtherGuyHad()</code> devuelve el nombre del campo <code>soup</code>.</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>@Stateless
+public class Waiter {
+
+    @Inject
+    public Soup soup;
+
+    public String orderSoup(String name){
+        soup.setName(name);
+        return soup.getName();
+    }
+
+    public String orderWhatTheOtherGuyHad() {
+        String name = soup.getName();
+        return name;
+    }
+}</pre>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_sopa">Sopa</h3>
+<div class="paragraph">
+<p>La clase <code>Soup</code> es un POJO inyectable, definido como <code>@ApplicationScoped</code>.
+Esto significa que una instancia se creará solo una vez durante toda la aplicación.
+Ahora intente cambiar la anotación <code>@ApplicationScoped</code> a <code>@RequestScoped</code> y vea qué sucede.</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>@ApplicationScoped
+public class Soup {
+
+    private String name = "Soup of the day";
+
+    @PostConstruct
+    public void afterCreate() {
+        System.out.println("Soup created");
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name){
+        this.name = name;
+    }
+}</pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_caso_de_prueba">Caso de prueba</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Esta es la clase de entrada para este ejemplo.
+Primero se ordena una sopa a través del método <code>orderSoup()</code>.
+Esto inicia el campo <code>soup</code>.
+A continuación, el método <code>orderWhatTheOtherGuyHad()</code> devuelve la sopa del contexto de la aplicación.</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>public class RestaurantTest {
+
+    private static String TOMATO_SOUP = "Tomato Soup";
+    private EJBContainer container;
+
+    @EJB
+    private Waiter joe;
+
+    @Before
+    public void startContainer() throws Exception {
+        container = EJBContainer.createEJBContainer();
+        container.getContext().bind("inject", this);
+    }
+
+    @Test
+    public void orderSoup(){
+        String someSoup = joe.orderSoup(TOMATO_SOUP);
+        assertEquals(TOMATO_SOUP, someSoup);
+
+        String sameSoup = joe.orderWhatTheOtherGuyHad();
+        assertEquals(TOMATO_SOUP, sameSoup);
+    }
+
+    @After
+    public void closeContainer() throws Exception {
+        container.close();
+    }
+}</pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_ejecución">Ejecución</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>En el resultado de la ejecución puede ver que solo se creó una instancia de <code>Soup</code>, una para toda la aplicación.</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.cdi.applicationscope.RestaurantTest
+Apache OpenEJB 7.0.0-SNAPSHOT    build: 20111224-11:09
+http://tomee.apache.org/
+INFO - openejb.home = C:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-application-scope
+INFO - openejb.base = C:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-application-scope
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: c:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-application-scope\target\classes
+INFO - Beginning load: c:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-application-scope\target\classes
+INFO - Configuring enterprise application: c:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-application-scope
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean cdi-application-scope.Comp: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean Waiter: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Enterprise application "c:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-application-scope" loaded.
+INFO - Assembling app: c:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-application-scope
+INFO - Jndi(name="java:global/cdi-application-scope/Waiter!org.superbiz.cdi.applicationscope.Waiter")
+INFO - Jndi(name="java:global/cdi-application-scope/Waiter")
+INFO - Created Ejb(deployment-id=Waiter, ejb-name=Waiter, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=Waiter, ejb-name=Waiter, container=Default Stateless Container)
+INFO - Deployed Application(path=c:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-application-scope)
+Soup created
+INFO - Undeploying app: c:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-application-scope
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.42 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0</pre>
+</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/documentation.html" 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>
+

Modified: websites/staging/tomee/trunk/content/tomee-8.0/es/examples/index.html
==============================================================================
--- websites/staging/tomee/trunk/content/tomee-8.0/es/examples/index.html (original)
+++ websites/staging/tomee/trunk/content/tomee-8.0/es/examples/index.html Sat Sep  7 20:36:39 2019
@@ -96,36 +96,42 @@
             <div class="group-title">MicroProfile</div>
             <ul class="group">
               <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="mp-config-example.html">MicroProfile Config</a></li>
+              <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="mp-custom-healthcheck.html">MicroProfile Custom Health Check</a></li>
               <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="mp-faulttolerance-fallback.html">MicroProfile Fault Tolerance - Fallback</a></li>
             </ul>
           </div>
           <div class="col-md-4">
-            <div class="group-title">Testing Techniques</div>
+            <div class="group-title">EJB</div>
             <ul class="group">
-              <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="alternate-descriptors.html">Descriptores alternos</a></li>
+              <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="access-timeout.html">@AccessTimeout Annotation</a></li>
+              <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="async-methods.html">Métodos @Asynchronous</a></li>
             </ul>
           </div>
           <div class="col-md-4">
-            <div class="group-title">Unknown</div>
+            <div class="group-title">Testing Techniques</div>
             <ul class="group">
-              <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="index.html">index</a></li>
+              <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="alternate-descriptors.html">Descriptores alternos</a></li>
             </ul>
           </div>
         </div>
         <div class="row">
           <div class="col-md-4">
-            <div class="group-title">Meta-Annotations</div>
+            <div class="group-title">Unrevised</div>
             <ul class="group">
-              <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="access-timeout-meta.html">@AccessTimeout la forma  Meta-Annotation</a></li>
+              <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="javamail.html">Javamail API</a></li>
             </ul>
           </div>
           <div class="col-md-4">
-            <div class="group-title">EJB</div>
+            <div class="group-title">CDI</div>
             <ul class="group">
-              <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="access-timeout.html">@AccessTimeout Annotation</a></li>
+              <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="cdi-application-scope.html">CDI @ApplicationScoped</a></li>
             </ul>
           </div>
           <div class="col-md-4">
+            <div class="group-title">Meta-Annotations</div>
+            <ul class="group">
+              <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="access-timeout-meta.html">@AccessTimeout la forma  Meta-Annotation</a></li>
+            </ul>
           </div>
         </div>
 

Added: websites/staging/tomee/trunk/content/tomee-8.0/es/examples/javamail.html
==============================================================================
--- websites/staging/tomee/trunk/content/tomee-8.0/es/examples/javamail.html (added)
+++ websites/staging/tomee/trunk/content/tomee-8.0/es/examples/javamail.html Sat Sep  7 20:36:39 2019
@@ -0,0 +1,402 @@
+<!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>Javamail API</h1>
+            </div>
+          </div>
+        </div>
+        <div class="row">
+            
+            <div class="col-md-12">
+                <div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>Este es un ejemplo simple para demostrar un uso muy básico de la API Javamail.
+Debería ser suficiente para iniciarse en el uso de los paquetes que maneja java para correo.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_un_servicio_rest_simple_usando_la_api_javamail">Un servicio REST simple usando la API Javamail</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Aquí vemos un endpoint RESTful muy simple que puede ser llamado para enviar un correo. No debería ser complicado modificar la aplicación
+para generar otras opciones de configuración adicionales.</p>
+</div>
+<div class="paragraph">
+<p>Este ejemplo no enviará ningún correo, pero si se cambian los parámetros para que coincidan con
+su servidor de correo; entonces sí se enviará un mensaje.</p>
+</div>
+<div class="paragraph">
+<p>Puede encontrar información más detallada en:
+<a href="https://java.net/projects/javamail/pages/Home#Samples">Javamail API</a></p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>package org.superbiz.rest;
+
+import javax.mail.Authenticator;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.PasswordAuthentication;
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import java.util.Date;
+import java.util.Properties;
+
+@Path("/email")
+public class EmailService {
+
+    @POST
+    public String lowerCase(final String message) {
+
+        try {
+
+            //Create some properties and get the default Session
+            final Properties props = new Properties();
+            props.put("mail.smtp.host", "your.mailserver.host");
+            props.put("mail.debug", "true");
+
+            final Session session = Session.getInstance(props, new Authenticator() {
+                @Override
+                protected PasswordAuthentication getPasswordAuthentication() {
+                    return new PasswordAuthentication("MyUsername", "MyPassword");
+                }
+            });
+
+            //Set this just to see some internal logging
+            session.setDebug(true);
+
+            //Create a message
+            final MimeMessage msg = new MimeMessage(session);
+            msg.setFrom(new InternetAddress("your@email.address"));
+            final InternetAddress[] address = {new InternetAddress("general@email.com")};
+            msg.setRecipients(Message.RecipientType.TO, address);
+            msg.setSubject("JavaMail API test");
+            msg.setSentDate(new Date());
+            msg.setText(message, "UTF-8");
+
+
+            Transport.send(msg);
+        } catch (MessagingException e) {
+            return "Failed to send message: " + e.getMessage();
+        }
+
+        return "Sent";
+    }
+}</pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_pruebas">Pruebas</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_pruebas_del_servicio_jaxrs">Pruebas del servicio JAXRS</h3>
+<div class="paragraph">
+<p>La prueba usa el ApplicationComposer de OpenEJB por facilidad.</p>
+</div>
+<div class="paragraph">
+<p>La idea es primero activar los servicios jaxrs. Esto se hace utilizando la anotación @EnableServices.</p>
+</div>
+<div class="paragraph">
+<p>Luego creamos la aplicación simplemente retornando un objeto que representa el web.xml. Aquí, simplemente se usa para definir
+la raíz del contexto, pero puede usarse para definir la aplicación REST también. Para completar la definición de la aplicación
+se puede añadir la anotación @Classes, para definir el conjunto de clases a utilizar en la aplicación.</p>
+</div>
+<div class="paragraph">
+<p>Finalmente, para hacer pruebas usamos una API cliente cxf para llamar el método post() del servicio REST.</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>package org.superbiz.rest;
+
+import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.openejb.jee.WebApp;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.testing.Classes;
+import org.apache.openejb.testing.EnableServices;
+import org.apache.openejb.testing.Module;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+@EnableServices(value = "jaxrs")
+@RunWith(ApplicationComposer.class)
+public class EmailServiceTest {
+
+    @Module
+    @Classes(EmailService.class)
+    public WebApp app() {
+        return new WebApp().contextRoot("test");
+    }
+
+    @Test
+    public void post() throws IOException {
+        final String message = WebClient.create("http://localhost:4204").path("/test/email/").post("Hello General", String.class);
+        assertEquals("Failed to send message: Unknown SMTP host: your.mailserver.host", message);
+    }
+}</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>#Ejecución</p>
+</div>
+<div class="paragraph">
+<p>Correr el ejemplo es bastante simple.  En el directorio "javamail-api" ejecute:</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>$ mvn clean install</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Lo cual debería crear una salida como la siguiente:</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Creating TransactionManager(id=Default Transaction Manager)
+INFO - Creating SecurityService(id=Default Security Service)
+INFO - Initializing network services
+INFO - Creating ServerService(id=cxf-rs)
+INFO - Creating ServerService(id=httpejbd)
+INFO - Created ServicePool 'httpejbd' with (10) core threads, limited to (200) threads with a queue of (9)
+INFO - Initializing network services
+INFO -   ** Bound Services **
+INFO -   NAME                 IP              PORT
+INFO -   httpejbd             127.0.0.1       4204
+INFO - -------
+INFO - Ready!
+INFO - Configuring enterprise application: D:\github\tomee\examples\javamail\EmailServiceTest
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.rest.EmailServiceTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Creating Container(id=Default Managed Container)
+INFO - Using directory D:\windows\tmp for stateful session passivation
+INFO - Configuring Service(id=comp/DefaultManagedExecutorService, type=Resource, provider-id=Default Executor Service)
+INFO - Auto-creating a Resource with id 'comp/DefaultManagedExecutorService' of type 'javax.enterprise.concurrent.ManagedExecutorService for 'test'.
+INFO - Configuring Service(id=comp/DefaultManagedScheduledExecutorService, type=Resource, provider-id=Default Scheduled Executor Service)
+INFO - Auto-creating a Resource with id 'comp/DefaultManagedScheduledExecutorService' of type 'javax.enterprise.concurrent.ManagedScheduledExecutorService for 'test'.
+INFO - Configuring Service(id=comp/DefaultManagedThreadFactory, type=Resource, provider-id=Default Managed Thread Factory)
+INFO - Auto-creating a Resource with id 'comp/DefaultManagedThreadFactory' of type 'javax.enterprise.concurrent.ManagedThreadFactory for 'test'.
+INFO - Enterprise application "D:\github\tomee\examples\javamail\EmailServiceTest" loaded.
+INFO - Creating dedicated application classloader for EmailServiceTest
+INFO - Assembling app: D:\github\tomee\examples\javamail\EmailServiceTest
+INFO - Using providers:
+INFO -      org.apache.johnzon.jaxrs.JohnzonProvider@2687f956
+INFO -      org.apache.cxf.jaxrs.provider.JAXBElementProvider@1ded7b14
+INFO -      org.apache.johnzon.jaxrs.JsrProvider@29be7749
+INFO -      org.apache.johnzon.jaxrs.WadlDocumentMessageBodyWriter@5f84abe8
+INFO -      org.apache.openejb.server.cxf.rs.EJBAccessExceptionMapper@4650a407
+INFO -      org.apache.cxf.jaxrs.validation.ValidationExceptionMapper@30135202
+INFO - REST Application: http://127.0.0.1:4204/test/       -&gt; org.apache.openejb.server.rest.InternalApplication
+INFO -      Service URI: http://127.0.0.1:4204/test/email  -&gt; Pojo org.superbiz.rest.EmailService
+INFO -              POST http://127.0.0.1:4204/test/email/ -&gt;      String lowerCase(String)
+INFO - Deployed Application(path=D:\github\tomee\examples\javamail\EmailServiceTest)
+DEBUG: JavaMail version 1.4ea
+DEBUG: java.io.FileNotFoundException: D:\java\jdk8\jre\lib\javamail.providers (The system cannot find the file specified)
+DEBUG: !anyLoaded
+DEBUG: not loading resource: /META-INF/javamail.providers
+DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
+DEBUG: Tables of loaded providers
+DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]}
+DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]}
+DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
+DEBUG: !anyLoaded
+DEBUG: not loading resource: /META-INF/javamail.address.map
+DEBUG: java.io.FileNotFoundException: D:\java\jdk8\jre\lib\javamail.address.map (The system cannot find the file specified)
+DEBUG: setDebug: JavaMail version 1.4ea
+DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
+DEBUG SMTP: useEhlo true, useAuth false
+DEBUG SMTP: trying to connect to host "your.mailserver.host", port 25, isSSL false
+INFO - Undeploying app: D:\github\tomee\examples\javamail\EmailServiceTest
+INFO - Stopping network services
+INFO - Stopping server services</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/documentation.html" 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>
+

Modified: websites/staging/tomee/trunk/content/tomee-8.0/es/examples/mp-config-example.html
==============================================================================
--- websites/staging/tomee/trunk/content/tomee-8.0/es/examples/mp-config-example.html (original)
+++ websites/staging/tomee/trunk/content/tomee-8.0/es/examples/mp-config-example.html Sat Sep  7 20:36:39 2019
@@ -113,6 +113,14 @@
 </div>
 </div>
 <div class="sect1">
+<h2 id="_microprofile_config_properties">microprofile-config.properties</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Este es el archivo que contiene los valores a ser interpretados por MP Config.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
 <h2 id="_api">API</h2>
 <div class="sectionbody">
 <div class="paragraph">

Added: websites/staging/tomee/trunk/content/tomee-8.0/es/examples/mp-custom-healthcheck.html
==============================================================================
--- websites/staging/tomee/trunk/content/tomee-8.0/es/examples/mp-custom-healthcheck.html (added)
+++ websites/staging/tomee/trunk/content/tomee-8.0/es/examples/mp-custom-healthcheck.html Sat Sep  7 20:36:39 2019
@@ -0,0 +1,342 @@
+<!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>MicroProfile Custom Health Check</h1>
+            </div>
+          </div>
+        </div>
+        <div class="row">
+            
+            <div class="col-md-12">
+                <div class="paragraph">
+<p>Este es un ejemplo sobre cómo usar el MicroProfile Custom Health Check en TomEE.</p>
+</div>
+<h4 id="_health_feature" class="discrete">Health Feature</h4>
+<div class="paragraph">
+<p>Los Enlaces de Estado (Health checks) se usan para probar el estado de los servicios y los recursos de los que una aplicación depende, incluso para exponer su estado. Por ejemplo, en un ambiente de clúster, donde un nodo inestable requiere ser descartado y eventualmente ser remplazado por una instancia estable.</p>
+</div>
+<div class="paragraph">
+<p>Por defecto, <a href="https://github.com/eclipse/microprofile-health">microprofile-health-api</a> proporciona la salida de un nodo, simplemente accediendo el end point <a href="http://host:port/health" class="bare">http://host:port/health</a>.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-json" data-lang="json">{"checks":[],"outcome":"UP","status":"UP"}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Para proporcionar una salida a la medida , por ejemplo, si tenemos una aplicación que usa un API de clima, y el servicio se cae, podemos reportar que el servicio esta caído (DOWN).</p>
+</div>
+<div class="paragraph">
+<p>Es necesario implementar la interface  <a href="https://github.com/eclipse/microprofile-health/blob/master/api/src/main/java/org/eclipse/microprofile/health/HealthCheck.java">HealthCheck</a>, en una clase con la anotación <code>@ApplicationScoped</code> y la anotación`@Health` para proporcionar la salida a la medida.</p>
+</div>
+<div class="paragraph">
+<p>Se pueden ver más detalles aquí: <a href="https://github.com/apache/geronimo-health/blob/master/geronimo-health/src/main/java/org/apache/geronimo/microprofile/impl/health/cdi/GeronimoHealthExtension.java">GeronimoHealthExtension.java</a></p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-java" data-lang="java">@Health
+@ApplicationScoped
+public class WeatherServiceHealthCheck implements HealthCheck {
+
+    @Inject WeatherGateway weatherGateway;
+
+    @Override
+    public HealthCheckResponse call() {
+        HealthCheckResponseBuilder responseBuilder = HealthCheckResponse.named("OpenWeatherMap");
+        try {
+            WeatherApiStatus status = weatherGateway.getApiStatus();
+            return responseBuilder.withData("weatherServiceApiUrl", status.getUrl())
+                    .withData("weatherServiceApiVersion", status.getVersion())
+                    .withData("weatherServiceMessage", status.getMessage())
+                    .up().build();
+        } catch (WeatherException e) {
+            return responseBuilder.withData("weatherServiceErrorMessage", e.getMessage()).down().build();
+        }
+    }
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>En el anterior ejemplo, el enlace de estado es: <a href="https://openweathermap.org/appid">OpenWeatherMap</a> (<em>solamente ilustrativo</em>) que proporciona una suscripción al plan para acceder los servicios y si el limite de llamadas a la API se excede no estará disponible hasta que se renueve las suscripción.</p>
+</div>
+<h3 id="_ejemplos" class="discrete">Ejemplos</h3>
+<div class="listingblock">
+<div class="title">Ejecutando la aplicación</div>
+<div class="content">
+<pre>    mvn clean install tomee:run</pre>
+</div>
+</div>
+<h4 id="_ejemplo_1" class="discrete">Ejemplo 1</h4>
+<div class="paragraph">
+<p>Cuando se accede al enlace /health , OpenWeatherMap nos dice que nuestras llamadas disponibles se están acabando y que deberíamos tomar acción antes de que se agoten.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>curl http://localhost:8080/mp-custom-healthcheck/health</pre>
+</div>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-json" data-lang="json">{
+   "checks":[
+      {
+         "data":{
+            "weatherServiceApiVersion":"2.5",
+            "weatherServiceMessage":"Your account will become unavailable soon due to limitation of your
+                                    subscription type. Remaining API calls are 1",
+            "weatherServiceApiUrl":"http://api.openweathermap.org/data/2.5/"
+         },
+         "name":"OpenWeatherMap",
+         "state":"UP"
+      }
+   ],
+   "outcome":"UP",
+   "status":"UP"
+}</code></pre>
+</div>
+</div>
+<h4 id="_ejemplo_2" class="discrete">Ejemplo 2</h4>
+<div class="paragraph">
+<p>La API del clima continua funcionando bien.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>curl http://localhost:8080/mp-custom-healthcheck/weather/day/status</pre>
+</div>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-text" data-lang="text">Hi, today is a sunny day!</code></pre>
+</div>
+</div>
+<h4 id="_ejemplo_3" class="discrete">Ejemplo 3</h4>
+<div class="paragraph">
+<p>Si accedemos una vez más al enlace /health, OpenWeatherMap nos dice que nuestra cuenta se encuentra temporalmente  bloqueada y el servicio se reporta como caído (DOWN).</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>curl http://localhost:8080/mp-custom-healthcheck/health</pre>
+</div>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-json" data-lang="json">{
+   "checks":[
+      {
+         "data":{
+            "weatherServiceErrorMessage":"Your account is temporary blocked due to exceeding of
+            requests limitation of your subscription type. Please choose the proper subscription
+            http://openweathermap.org/price"
+         },
+         "name":"weatherservice",
+         "state":"DOWN"
+      }
+   ],
+   "outcome":"DOWN",
+   "status":"DOWN"
+}</code></pre>
+</div>
+</div>
+<h4 id="_ejemplo_4" class="discrete">Ejemplo 4</h4>
+<div class="paragraph">
+<p>La API del clima se ha detenido.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>curl http://localhost:8080/mp-custom-healthcheck/weather/day/status</pre>
+</div>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-text" data-lang="text">Weather Service is unavailable at moment, retry later.</code></pre>
+</div>
+</div>
+<h5 id="_ejecutando_los_tests" class="discrete">Ejecutando los tests</h5>
+<div class="paragraph">
+<p>Se puede probar usando el enlace <a href="src/test/java/org/superbiz/rest/WeatherServiceTest.java">WeatherServiceTest.java</a> disponible en el proyecto.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>mvn clean test</pre>
+</div>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>[INFO] Results:
+[INFO]
+[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped:</pre>
+</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/documentation.html" 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>
+