<!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">
		<!-- Matomo -->
		var _paq = window._paq = window._paq || [];
		/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
		/* We explicitly disable cookie tracking to avoid privacy issues */
		_paq.push(['disableCookies']);
		_paq.push(['trackPageView']);
		_paq.push(['enableLinkTracking']);
		(function () {
			var u = "//matomo.privacy.apache.org/";
			_paq.push(['setTrackerUrl', u + 'matomo.php']);
			_paq.push(['setSiteId', '5']);
			var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0];
			g.async = true;
			g.src = u + 'matomo.js';
			s.parentNode.insertBefore(g, s);
		})();
		<!-- End Matomo Code -->
    </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="/" title="Apache TomEE">
				    <span>

				    
                        <img 
							src="../../../img/apache_tomee-logo.svg"
							onerror="this.src='../../../img/apache_tomee-logo.jpg'"
							height="50"
							>
                    

                    </span>
                </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 class="btn btn-accent accent-orange no-shadow" href="../../../download.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>Using EnvEntries</h1>
            </div>
          </div>
        </div>
        <div class="row">
            
            <div class="col-md-12">
                <div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>La anotación <code>@Resource</code> se puede usar para inyectar varias cosas,
incluyendo fuentes de datos, temas, colas, etc. La mayoría
objetos suministrados por el contenedor.</p>
</div>
<div class="paragraph">
<p>Sin embargo, es posible proporcionar sus propios valores para inyectarlos mediante una etiqueta
<code>&lt;env-entry&gt;</code> en su descriptor de implementación <code>ejb-jar.xml</code> o` web.xml`.
Los tipos <code>&lt;env-entry&gt;</code> compatibles con Java EE 6 están limitados a los siguientes:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>java.lang.String</p>
</li>
<li>
<p>java.lang.Integer</p>
</li>
<li>
<p>java.lang.Short</p>
</li>
<li>
<p>java.lang.Float</p>
</li>
<li>
<p>java.lang.Double</p>
</li>
<li>
<p>java.lang.Byte</p>
</li>
<li>
<p>java.lang.Character</p>
</li>
<li>
<p>java.lang.Boolean</p>
</li>
<li>
<p>java.lang.Class</p>
</li>
<li>
<p>java.lang.Enum (any enum)</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Consulte también el ejemplo <a href="../custom-injection">Custom Injection</a> para una
funcionalidad de TomEE y OpenEJB que le permitirá usar más que solo los anteriores
tipos, así como declarar elementos <code>&lt;env-entry&gt;</code> con un archivo de propiedades.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_usando_resource_para_propiedades_básicas">Usando @Resource para propiedades básicas</h2>
<div class="sectionbody">
<div class="paragraph">
<p>El uso de la anotación <code>@Resource</code> no se limita a los metodos establecedores (setters). Por
ejemplo, esta anotación podría haberse utilizado en el correspondiente <em>campo</em> así:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">@Resource
private int maxLineItems;</code></pre>
</div>
</div>
<div class="paragraph">
<p>Un ejemplo más completo podría verse así:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">package org.superbiz.injection.enventry;

import jakarta.annotation.Resource;
import jakarta.ejb.Singleton;
import java.util.Date;

@Singleton
public class Configuration {

    @Resource
    private String color;

    @Resource
    private Shape shape;

    @Resource
    private Class strategy;

    @Resource(name = "date")
    private long date;

    public String getColor() {
        return color;
    }

    public Shape getShape() {
        return shape;
    }

    public Class getStrategy() {
        return strategy;
    }

    public Date getDate() {
        return new Date(date);
    }
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>Aquí tenemos un bean <code>@Singleton</code> llamado <code>Configuration</code> que tiene la
siguientes propiedades (elementos <code>&lt;env-entry&gt;</code>)</p>
</div>
<div class="ulist">
<ul>
<li>
<p>String color</p>
</li>
<li>
<p>Shape shape</p>
</li>
<li>
<p>Class strategy</p>
</li>
<li>
<p>long date</p>
</li>
</ul>
</div>
<div class="sect2">
<h3 id="_suministro_de_valores_de_resource_para_elementos_en_ejb_jar_xml">Suministro de valores de @Resource para elementos en ejb-jar.xml</h3>
<div class="paragraph">
<p>Los valores de nuestras propiedades de color, forma, estrategia y fecha
se suministran a través de elementos <code>&lt;env-entry&gt;</code> en el archivo <code>ejb-jar.xml</code> o
Archivo <code>web.xml</code> así:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-xml" data-lang="xml">&lt;ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" version="3.0" metadata-complete="false"&gt;
  &lt;enterprise-beans&gt;
    &lt;session&gt;
      &lt;ejb-name&gt;Configuration&lt;/ejb-name&gt;
      &lt;env-entry&gt;
        &lt;env-entry-name&gt;org.superbiz.injection.enventry.Configuration/color&lt;/env-entry-name&gt;
        &lt;env-entry-type&gt;java.lang.String&lt;/env-entry-type&gt;
        &lt;env-entry-value&gt;orange&lt;/env-entry-value&gt;
      &lt;/env-entry&gt;
      &lt;env-entry&gt;
        &lt;env-entry-name&gt;org.superbiz.injection.enventry.Configuration/shape&lt;/env-entry-name&gt;
        &lt;env-entry-type&gt;org.superbiz.injection.enventry.Shape&lt;/env-entry-type&gt;
        &lt;env-entry-value&gt;TRIANGLE&lt;/env-entry-value&gt;
      &lt;/env-entry&gt;
      &lt;env-entry&gt;
        &lt;env-entry-name&gt;org.superbiz.injection.enventry.Configuration/strategy&lt;/env-entry-name&gt;
        &lt;env-entry-type&gt;java.lang.Class&lt;/env-entry-type&gt;
        &lt;env-entry-value&gt;org.superbiz.injection.enventry.Widget&lt;/env-entry-value&gt;
      &lt;/env-entry&gt;
      &lt;env-entry&gt;
        &lt;description&gt;The name was explicitly set in the annotation so the classname prefix isn't required&lt;/description&gt;
        &lt;env-entry-name&gt;date&lt;/env-entry-name&gt;
        &lt;env-entry-type&gt;java.lang.Long&lt;/env-entry-type&gt;
        &lt;env-entry-value&gt;123456789&lt;/env-entry-value&gt;
      &lt;/env-entry&gt;
    &lt;/session&gt;
  &lt;/enterprise-beans&gt;
&lt;/ejb-jar&gt;</code></pre>
</div>
</div>
<div class="sect3">
<h4 id="_usando_el_atributo_resource_name">Usando el atributo @Resource <code>name</code></h4>
<div class="paragraph">
<p>Tenga en cuenta que  <code>date</code> fue referenciada por <code>nombre</code> como:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">@Resource(name = "date")
private long date;</code></pre>
</div>
</div>
<div class="paragraph">
<p>Cuando se utiliza el <code>@Resource(name)</code>, no es necesario especificar el
nombre de clase del bean y puede hacerlo brevemente así:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">  &lt;env-entry&gt;
    &lt;description&gt;The name was explicitly set in the annotation so the classname prefix is not required&lt;/description&gt;
    &lt;env-entry-name&gt;date&lt;/env-entry-name&gt;
    &lt;env-entry-type&gt;java.lang.Long&lt;/env-entry-type&gt;
    &lt;env-entry-value&gt;123456789&lt;/env-entry-value&gt;
  &lt;/env-entry&gt;</code></pre>
</div>
</div>
<div class="paragraph">
<p>Por el contrario, <code>color</code> no fue referenciado por <code>nombre</code></p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">@Resource
private String color;</code></pre>
</div>
</div>
<div class="paragraph">
<p>Cuando algo no está referenciado por <code>nombre</code> en la anotación <code>@Resource</code>
se crea un nombre predeterminado. El formato es esencialmente este:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">bean.getClass() + "/" + field.getName()</code></pre>
</div>
</div>
<div class="paragraph">
<p>Entonces, el <code>nombre</code> predeterminado de la propiedad <code>color</code> anterior termina siendo
<code>org.superbiz.injection.enventry.Configuration/color</code>. Este es el nombre que
debemos usar cuando intentamos decalre un valor para él en xml.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">  &lt;env-entry&gt;
    &lt;env-entry-name&gt;org.superbiz.injection.enventry.Configuration/color&lt;/env-entry-name&gt;
    &lt;env-entry-type&gt;java.lang.String&lt;/env-entry-type&gt;
    &lt;env-entry-value&gt;orange&lt;/env-entry-value&gt;
  &lt;/env-entry&gt;</code></pre>
</div>
</div>
</div>
<div class="sect3">
<h4 id="_resource_y_enum_enumeraciones">@Resource y Enum (enumeraciones)</h4>
<div class="paragraph">
<p>El campo <code>shape</code> es en realidad un tipo Java Enum personalizado</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">package org.superbiz.injection.enventry;

public enum Shape {

    CIRCLE,
    TRIANGLE,
    SQUARE
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>A partir de Java EE 6, los tipos java.lang.Enum están permitidos como elementos <code>&lt;env-entry&gt;</code>.
La declaración de uno en xml se realiza utilizando el nombre de clase de la enumeración real
al igual que:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">      &lt;env-entry&gt;
        &lt;env-entry-name&gt;org.superbiz.injection.enventry.Configuration/shape&lt;/env-entry-name&gt;
        &lt;env-entry-type&gt;org.superbiz.injection.enventry.Shape&lt;/env-entry-type&gt;
        &lt;env-entry-value&gt;TRIANGLE&lt;/env-entry-value&gt;
      &lt;/env-entry&gt;</code></pre>
</div>
</div>
<div class="paragraph">
<p>¡No use <code>&lt;env-entry-type&gt; java.lang.Enum &lt;/env-entry-type&gt;</code> o no funcionará!</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_configurationtest">ConfigurationTest</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">package org.superbiz.injection.enventry;

import junit.framework.TestCase;

import jakarta.ejb.embeddable.EJBContainer;
import javax.naming.Context;
import java.util.Date;

public class ConfigurationTest extends TestCase {


    public void test() throws Exception {
        final Context context = EJBContainer.createEJBContainer().getContext();

        final Configuration configuration = (Configuration) context.lookup("java:global/injection-of-env-entry/Configuration");

        assertEquals("orange", configuration.getColor());

        assertEquals(Shape.TRIANGLE, configuration.getShape());

        assertEquals(Widget.class, configuration.getStrategy());

        assertEquals(new Date(123456789), configuration.getDate());
    }
}</code></pre>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_ejecución">Ejecución</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-console" data-lang="console">-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.superbiz.injection.enventry.ConfigurationTest
Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
http://tomee.apache.org/
INFO - openejb.home = /Users/dblevins/examples/injection-of-env-entry
INFO - openejb.base = /Users/dblevins/examples/injection-of-env-entry
INFO - Using 'jakarta.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: /Users/dblevins/examples/injection-of-env-entry/target/classes
INFO - Beginning load: /Users/dblevins/examples/injection-of-env-entry/target/classes
INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-env-entry
WARN - Method 'lookup' is not available for 'jakarta.annotation.Resource'. Probably using an older Runtime.
INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)
INFO - Auto-creating a container for bean Configuration: Container(type=SINGLETON, 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.injection.enventry.ConfigurationTest: Container(type=MANAGED, id=Default Managed Container)
INFO - Enterprise application "/Users/dblevins/examples/injection-of-env-entry" loaded.
INFO - Assembling app: /Users/dblevins/examples/injection-of-env-entry
INFO - Jndi(name="java:global/injection-of-env-entry/Configuration!org.superbiz.injection.enventry.Configuration")
INFO - Jndi(name="java:global/injection-of-env-entry/Configuration")
INFO - Jndi(name="java:global/EjbModule1355224018/org.superbiz.injection.enventry.ConfigurationTest!org.superbiz.injection.enventry.ConfigurationTest")
INFO - Jndi(name="java:global/EjbModule1355224018/org.superbiz.injection.enventry.ConfigurationTest")
INFO - Created Ejb(deployment-id=org.superbiz.injection.enventry.ConfigurationTest, ejb-name=org.superbiz.injection.enventry.ConfigurationTest, container=Default Managed Container)
INFO - Created Ejb(deployment-id=Configuration, ejb-name=Configuration, container=Default Singleton Container)
INFO - Started Ejb(deployment-id=org.superbiz.injection.enventry.ConfigurationTest, ejb-name=org.superbiz.injection.enventry.ConfigurationTest, container=Default Managed Container)
INFO - Started Ejb(deployment-id=Configuration, ejb-name=Configuration, container=Default Singleton Container)
INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-env-entry)
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.664 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_apis_used">APIs Used</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p><a href="../../../jakartaee-9.0/javadoc/jakarta/annotation/Resource.html">jakarta.annotation.Resource</a></p>
</li>
<li>
<p><a href="../../../jakartaee-9.0/javadoc/jakarta/ejb/Singleton.html">jakarta.ejb.Singleton</a></p>
</li>
<li>
<p><a href="../../../jakartaee-9.0/javadoc/jakarta/ejb/embeddable/EJBContainer.html">jakarta.ejb.embeddable.EJBContainer</a></p>
</li>
</ul>
</div>
</div>
</div>
            </div>
            
        </div>
    </div>
<div style="margin-bottom: 30px;"></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>
					</ul>
					<h5 class="light regular light-white">
						<a href="../../../privacy-policy.html" class="white">Privacy Policy</a>
					</h5>
				</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="https://apache.org/security" target="_blank" class="regular light-white">Apache Security</a></li>
								<li><a href="https://apache.org/security/projects.html" target="_blank" class="regular light-white">Security Projects</a></li>
								<li><a href="https://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-2022 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>

