<!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>Application Resources</h1>
            </div>
          </div>
        </div>
        <div class="row">
            
            <div class="col-md-12">
                <div class="sect1">
<h2 id="_resources">Resources</h2>
<div class="sectionbody">
<div class="paragraph">
<p>TomEE provides a simple but powerful way to define resources that can be
injected into managed components inside your application, or looked up
via JNDI. To use a resource, it needs to be defined in the <code>tomee.xml</code>
configuration file, a <code>resources.xml</code> file within an application, or as
a system property. Defining a resource in <code>tomee.xml</code> will make it
available server-wide, whereas defining the resource within a
<code>resources.xml</code> file makes it available to a specific application.</p>
</div>
<div class="paragraph">
<p>As a simple example, a JMS queue can be defined within <code>tomee.xml</code> with
the following configuration.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-xml" data-lang="xml">&lt;tomee&gt;
    &lt;Resource id="MyQueue" type="javax.jms.Queue"/&gt;
&lt;/tomee&gt;</code></pre>
</div>
</div>
<div class="paragraph">
<p>Once the resource has been defined, the server will create an instance
of the resource during startup, and it will be available to be injected
into managed components using the <code>@Resource</code> annotation, as shown
below. The <code>name</code> attribute on the <code>@Resource</code> annotation should match
the <code>id</code> attribute on the <code>Resource</code> tag.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">public class JmsClient {

    @Resource(name="MyQueue")
    private Queue queue;

    public void sendMessage() {
        // implementation here...
    }

}</code></pre>
</div>
</div>
<div class="paragraph">
<p>As an alternative to defining a resource in XML, resources can also be
defined using system properties:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-properties" data-lang="properties">MyQueue = new://Resource?type=javax.jms.Queue</code></pre>
</div>
</div>
<div class="paragraph">
<p>Resources, or attributes for resources specified using system properties
will override definitions specified in <code>tomee.xml</code>. Server-wide
resources can be looked up in JNDI under the following name:
openejb:Resources/resource id.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_defining_resources">Defining Resources</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The <code>&lt;Resource&gt;</code> tag has a number of attributes, and a resource may also
have a number of fields that can be configured by adding properties to
the body of the <code>Resource</code> tag.</p>
</div>
<div class="paragraph">
<p>For example, a DataSource resource needs a JDBC driver, URL, username
and password to be able to connect to a database. That would be
configured with the following syntax. Notice the key/value pair syntax
for the properties within the <code>&lt;Resource&gt;</code> tag.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-xml" data-lang="xml">&lt;Resource id="DB" type="DataSource"&gt;
  JdbcDriver  com.mysql.jdbc.Driver
  JdbcUrl     jdbc:mysql://localhost/test
  UserName    test
  Password    password
&lt;/Resource&gt;</code></pre>
</div>
</div>
<div class="paragraph">
<p>Specifying the key/value pairs specific to a Resource can also be done
when defining the resource via system properties. This is done be
specifying an additional property for each key/value pair, using the
resource ID as a prefix: <code>&lt;resourceId&gt;.&lt;propertyName&gt;=&lt;value&gt;</code>. The
system properties equivalent of the resource above is:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">p.setProperty("DB", "new://Resource?type=DataSource");
p.setProperty("DB.JdbcDriver", "com.mysql.jdbc.Driver");
p.setProperty("DB,JdbcUrl", "jdbc:mysql://localhost/test");
p.setProperty("DB.UserName", "test");
p.setProperty("DB.Password", "password");</code></pre>
</div>
</div>
<div class="paragraph">
<p>The <code>&lt;Resource&gt;</code> tag has a number of attributes which control the way
that the resource get created.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>type</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>A type that TomEE knows. The type is associated with a provider that
knows how to create that type, and also any default properties that the
resource should have if they are not specified in the resource
definition. See service-jar.xml for an example set of service providers
that come with TomEE.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>provider</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Explicitly specifies a provider to create the resource, using defaults
for any properties not specified.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>class-name</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The fully qualified class that creates the resource. This might the
resource class itself, which is created by calling the constructor, or a
factory class that provides a specific factory method to create the
resource.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>factory-name</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The name of the method to call to create the resource. If this is not
specified, the constructor for the class specified by class-name will be
used.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>constructor</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Specifies a comma separated list of constructor arguments. These can be
other services, or attributes on the resource itself.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_custom_resources">Custom resources</h2>
<div class="sectionbody">
<div class="paragraph">
<p>TomEE allows you to define resources using your own Java classes, and
these can also be injected into managed components in the same way as
known resource types are.</p>
</div>
<div class="paragraph">
<p>So the following simple resource</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">public class Configuration {

    private String url;
    private String username;
    private int poolSize;

    // getters and setters
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>Can be defined in <code>tomee.xml</code> using the following configuration (note
the <code>class-name</code> attribute):</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-xml" data-lang="xml">&lt;Resource id="config" class-name="org.superbiz.Configuration"&gt;
    url http://localhost
    username tomee
    poolSize 20
&lt;/Resource&gt;</code></pre>
</div>
</div>
<div class="paragraph">
<p>This resource must be available in TomEE&#8217;s system classpath - i.e. it
must be defined in a .jar within the <code>lib/</code> directory.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_field_and_properties">Field and properties</h2>
<div class="sectionbody">
<div class="paragraph">
<p>As shown above, a resource class can define a number of fields, and
TomEE will attempt to apply the values from the resource definition onto
those fields.</p>
</div>
<div class="paragraph">
<p>As an alternative to this, you can also add a properties field as shown
below, and this will have any used properties from the resource
configuration set added to it. So as an alternative to the above code,
you could do:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">public class Configuration {

    private Properties properties;

    public Properties getProperties() {
        return properties;
    }

    public void setProperties(final Properties properties) {
        this.properties = properties;
    }

}</code></pre>
</div>
</div>
<div class="paragraph">
<p>Using the same resource definition:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-xml" data-lang="xml">&lt;Resource id="config" class-name="org.superbiz.Configuration"&gt;
    url http://localhost
    username tomee
    poolSize 20
&lt;/Resource&gt;</code></pre>
</div>
</div>
<div class="paragraph">
<p>the url, username and poolSize values will now be available in the
properties field, so for example, the username property could be
accessed via properties.getProperty("username");</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_application_resources">Application resources</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Resources can also be defined within an application, and optionally use
classes from the application&#8217;s classpath. To define resources in a .war
file, include a <code>WEB-INF/resources.xml</code>. For an ejb-jar module, use
<code>META-INF/resources.xml</code>.</p>
</div>
<div class="paragraph">
<p>The format of <code>resources.xml</code> uses the same <code>&lt;Resource&gt;</code> tag as
<code>tomee.xml</code>. One key difference is the root element of the XML is
<code>&lt;resources&gt;</code> and not <code>&lt;tomee&gt;</code>.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-xml" data-lang="xml">&lt;resources&gt;
    &lt;Resource id="config" class-name="org.superbiz.Configuration"&gt;
        url http://localhost
        username tomee
        poolSize 20
    &lt;/Resource&gt;
&lt;/resources&gt;</code></pre>
</div>
</div>
<div class="paragraph">
<p>This mechanism allows you to package your custom resources within your
application, alongside your application code, rather than requiring a
.jar file in the <code>lib/</code> directory.</p>
</div>
<div class="paragraph">
<p>Application resources are bound in JNDI under
openejb:Resource/appname/resource id.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_additional_resource_properties">Additional resource properties</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Resources are typically discovered, created, and bound to JNDI very
early on in the deployment process, as other components depend on them.
This may lead to problems where the final classpath for the application
has not yet been determined, and therefore TomEE is unable to load your
custom resource.</p>
</div>
<div class="paragraph">
<p>The following properties can be used to change this behavior.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Lazy</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>This is a boolean value, which when true, creates a proxy that defers
the actual instantiation of the resource until the first time it is
looked up from JNDI. This can be useful if the resource&#8217;s classpath
until the application is started (see below), or to improve startup time
by not fully initializing resources that might not be used.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>UseAppClassLoader</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>This boolean value forces a lazily instantiated resource to use the
application classloader, instead of the classloader available when the
resources were first processed.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>InitializeAfterDeployment</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>This boolean setting forces a resource created with the Lazy property to
be instantiated once the application has started, as opposed to waiting
for it to be looked up. Use this flag if you require the resource to be
loaded, irrespective of whether it is injected into a managed component
or manually looked up.</p>
</div>
<div class="paragraph">
<p>By default, all of these settings are <code>false</code>, unless TomEE encounters a
custom application resource that cannot be instantiated until the
application has started. In this case, it will set these three flags to
<code>true</code>, unless the <code>Lazy</code> flag has been explicitly set.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_initializing_resources">Initializing resources</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_constructor">constructor</h3>
<div class="paragraph">
<p>By default, if no factory-name attribute and no constructor attribute is
specified on the <code>Resource</code>, TomEE will instantiate the resource using
its no-arg constructor. If you wish to pass constructor arguments,
specify the arguments as a comma separated list:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-xml" data-lang="xml">&lt;Resource id="config" class-name="org.superbiz.Configuration" constructor="id, poolSize"&gt;
    url http://localhost
    username tomee
    poolSize 20
&lt;/Resource&gt;</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_factory_name_method">factory-name method</h3>
<div class="paragraph">
<p>In some circumstances, it may be desirable to add some additional logic
to the creation process, or to use a factory pattern to create
resources. TomEE also provides this facility via the <code>factory-name</code>
method. The <code>factory-name</code> attribute on the resource can reference any
no argument method that returns an object on the class specified in the
<code>class-name</code> attribute.</p>
</div>
<div class="paragraph">
<p>For example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">public class Factory {

    private Properties properties;

    public Object create() {

         MyResource resource = new MyResource();
         // some custom logic here, maybe using this.properties

         return resource;
    }

    public Properties getProperties() {
        return properties;
    }

    public void setProperties(final Properties properties) {
        this.properties = properties;
    }

}

&lt;resources&gt;
    &lt;Resource id="MyResource" class-name="org.superbiz.Factory" factory-name="create"&gt;
        UserName tomee
    &lt;/Resource&gt;
&lt;/resources&gt;</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_postconstruct_predestroy">@PostConstruct / @PreDestroy</h3>
<div class="paragraph">
<p>As an alternative to using a factory method or a constructor, you can
use <code>@PostConstruct</code> and <code>@PreDestroy</code> methods within your resource class
(note that you cannot use this within a different factory class) to
manage any additional creation or cleanup activities. TomEE will
automatically call these methods when the application is started and
destroyed. Using <code>@PostConstruct</code> will effectively force a lazily loaded
resource to be instantiated when the application is starting - in the
same way that the <code>InitializeAfterDeployment</code> property does.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">public class MyClass {

    private Properties properties;

    public Properties getProperties() {
        return properties;
    }

    public void setProperties(final Properties properties) {
        this.properties = properties;
    }

    @PostConstruct
        public void postConstruct() throws MBeanRegistrationException {
            // some custom initialization
        }
    }

}</code></pre>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">Examples</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The following examples demonstrate including custom resources within
your application:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>resources-jmx-example</p>
</li>
<li>
<p>resources-declared-in-webapp</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>

