= Resources
:jbake-date: 2016-03-16
:jbake-type: page
:jbake-status: published
:jbake-tomeepdf:

In TomEE resources are mainly "singleton" (understood as defined once per server or application). Technically
it can be anything but you will probably meet more Datasources than other type of resources.


Most resources will be created automatically if there is no matching resources - by name and type -
when an injection will be found. To avoid that use `openejb.offline` property and set it to `true`.
See link:server.html[Server Configuration] for more detail.

=== Definition a resource: how does it work?

Before all let see how properties syntax is equivalent to XML one (system.properties and tomee.xml typically).

Properties syntax uses dot notation to represent setters/properties which are plain properties in XML syntax
and a URL syntax with query parameters to define the resource where it is directly the resource and tag attributes in XML.
Finally the id is an attribute in XML and the key of the resource definition in properties.

Let see it with a sample, both delcarations are the same:

[source,bash]
----
myDataSource = new://Resource?type=DataSource
myDataSource.JdbcUrl = jdbc:hsqldb:mem:site
myDataSource.UserName = sa
----

[source,xml]
----
<Resource id="myDataSource" type="DataSource">
  JdbcUrl = jdbc:hsqldb:mem:site
  UserName = sa
</Resource>
----

One started you can get injected any resource using `@Resource`:

[source,java]
----
@Resource(name = "myDataSource")
private DataSource dataSource;
----

=== Factory syntax

Here are the attributes of a resource:

[.table.table-bordered,options="header"]
|===
| Name | Optional |Description
| id | false | name of the resource, will match `openejb:Resource/id` in JNDI tree.
| provider | true | define a default resource definition using service-jar.xml
| class-name | true |specify which class to instantiate
| factory-name | true |specify which method to invoke on the class-name when specified to create the resource
| properties-provider | true |a class responsible to provide to tomee the properties to use, it can have a property `serviceId` to know which resource it is.
| classpath | true | a classpath to use to create the resource. Note: if not implementing an interface the resource will be isolated from the applications.
| aliases | true | other names for the resource, allows for instance to share the same pool for a datasource used with multiple names in applications.
| post-construct/pre-destroy | true | methods called when creating/destroying the resources.
| Lazy | true | for resources set them to be created when first accessed and not when deployed
|===

TomEE supports some implicit properties for resources but sometimes you just want to fully control the
resource and not use implicit properties which can be affected to a property which doesn't expect such a value (typically the case
if you create a custom Oracle datasource). For such case you can set `SkipImplicitAttributes` property to `true` and your resource
will ignore implicit properties.

Implicit properties are:

[.table.table-bordered,options="header"]
|===
| Name | Description
| transactionManager | The JTA transaction manager
| ServiceId | the "id" of the resource (its name)
|===

In the same spirit you can skip properties fallback using `SkipPropertiesFallback` and setting it to `true`. It typically avoids to
fallback all unset properties (no matching property found) to a `Properties` instance and set it if one matching property is found.
In Oracle case for instance it matches the connection properties which can have side effects.

===== Value ciphering

The propertie values support ciphering using the syntax `cipher:{algorithm}:{cipheredValue}`, for instance `cipher:Static3DES:xMH5uM1V9vQzVUv5LG7YLA==` will
be read as `Passw0rd`. Ciphers can be computed using `tomee.sh` script: `${tomee.home}/bin/tomee.sh cipher Passw0rd`.

=== Common Resources

==== DataSources

DataSources have defaults for all values and a default datasource can be provided automatically but if you want to
configure it here are the common properties:

You can set the boolean `JtaManaged` to false if you don't want your datasource to be using JTA - if you manage transactions yourself.

Then other configurations are linked the pool the datasource is using. By default TomEE uses https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html[tomcat-jdbc] but we also provide
https://commons.apache.org/proper/commons-dbcp/configuration.html[commons-dbcp] (2 for TomEE 7.x and 1 for TomEE 1.x).
The properties are then the related configurations with these particular
entries we try to keep in sync for both:

[.table.table-bordered,options="header"]
|===
| Name|Description
| JdbcDriver | the jdbc driver of the datasource
| JdbcUrl | the jdbc url of the datasource
| Username | the user to use
| Password | the password of the user
|===

===== Password and ciphering

DataSource were the first resource to support password ciphering. Originally it was another property which is still supported.
It is called `PasswordCipher`. Its value is the ciphering algorithm and it affects the password value. However `cipher:xxx`
is still supported on `Password` value. Default `PasswordCipher` being `PlainText` it behaves as no ciphering is in place by default.

Sample:

[source,bash]
----
ds = new://Resource?type=javax.sql.DataSource
# our password is "Passw0rd"
ds.Password = xMH5uM1V9vQzVUv5LG7YLA==
ds.PasswordCipher = Static3DES
----

===== Advanced DataSource configuration

TomEE also provides few utilities you can add in DataSource properties:

[.table.table-bordered,options="header"]
|===
| Name | Description
| LogSql | Should SQL be logged (using TomEE logger)
| LogSqlPackages | if set the logging will show the matching packages (separated by comma) inline when logging the query, allows to know where a query comes from
| Flushable| if true the datasource can be casted as a Flushable to recreate the pool
| ResetOnError | if a `SQLException` happens the pool is automatically recreated. Configuration is either "true" to do it each time an exception occurs, `x` or `retry(x)` to do it and retry until maximum `x` times
| ResetOnErrorMethods | which methods are handled by ResetOnError
| TomEEProxyHandler | Custom `InvocationHandler` wrapping the datasource calls
| DataSourceCreator | which pool to use, `dbcp`, `tomcat`, `dbcp-alternative` (DBCP and TomEE proxying instead of DBCP JTA integration), `simple` (no pooling)
|===

===== DataSource and JTA

`JtaManaged` determines wether or not this data source should be JTA managed
or user managed.  If set to 'true' it will automatically be enrolled
in any ongoing transactions.  Calling begin/commit/rollback or setAutoCommit
on the datasource or connection will not be allowed.  If you need to perform
these functions yourself, set `JtaManaged` to `false`

===== DataSource and JPA

In terms of JPA persistence.xml:

- `JtaManaged=true` can be used as a 'jta-data-source'
- `JtaManaged=false` can be used as a 'non-jta-data-source'

=== ActiveMQResourceAdapter

Declarable in tomee.xml via

[source,xml]
----
<Resource id="Foo" type="ActiveMQResourceAdapter">
    BrokerXmlConfig = broker:(tcp://localhost:61616)?useJmx=false
    ServerUrl = vm://localhost?waitForStart=20000&async=true
    DataSource = Default Unmanaged JDBC Database
    StartupTimeout = 10 seconds
</Resource>
----

Declarable in properties via

[source,bash]
----
Foo = new://Resource?type=ActiveMQResourceAdapter
Foo.BrokerXmlConfig = broker:(tcp://localhost:61616)?useJmx=false
Foo.ServerUrl = vm://localhost?waitForStart=20000&async=true
Foo.DataSource = Default Unmanaged JDBC Database
Foo.StartupTimeout = 10 seconds
----

==== Configuration

===== BrokerXmlConfig

Broker configuration URI as defined by ActiveMQ
see http://activemq.apache.org/broker-configuration-uri.html
BrokerXmlConfig xbean:file:conf/activemq.xml - Requires xbean-spring.jar and dependencies

===== ServerUrl

Broker address

===== DataSource

DataSource for persistence messages

===== StartupTimeout

How long to wait for broker startup


=== javax.jms.ConnectionFactory

An ActiveMQ (JMS) connection factory.

Declarable in tomee.xml via

[source,xml]
----
<Resource id="Foo" type="javax.jms.ConnectionFactory">
    ResourceAdapter = Default JMS Resource Adapter
    TransactionSupport = xa
    PoolMaxSize = 10
    PoolMinSize = 0
    ConnectionMaxWaitTime = 5 seconds
    ConnectionMaxIdleTime = 15 Minutes
</Resource>
----

Declarable in properties via

[source,bash]
----
Foo = new://Resource?type=javax.jms.ConnectionFactory
Foo.ResourceAdapter = Default JMS Resource Adapter
Foo.TransactionSupport = xa
Foo.PoolMaxSize = 10
Foo.PoolMinSize = 0
Foo.ConnectionMaxWaitTime = 5 seconds
Foo.ConnectionMaxIdleTime = 15 Minutes
----

==== Configuration

===== ResourceAdapter

An ActiveMQ (JMS) resource adapter.

===== TransactionSupport

Specifies if the connection is enrolled in global transaction
allowed values: `xa`, `local` or `none`. Default to `xa`.

===== PoolMaxSize

Maximum number of physical connection to the ActiveMQ broker.

===== PoolMinSize

Minimum number of physical connection to the ActiveMQ broker.

===== ConnectionMaxWaitTime

Maximum amount of time to wait for a connection.

===== ConnectionMaxIdleTime

Maximum amount of time a connection can be idle before being reclaimed.


=== javax.jms.Queue

An ActiveMQ (JMS) queue.

Declarable in tomee.xml via

[source,xml]
----
<Resource id="Foo" type="javax.jms.Queue">
    # not set means id
    destination =
</Resource>
----

Declarable in properties via

[source,bash]
----
Foo = new://Resource?type=javax.jms.Queue
# not set means id
Foo.destination =
----

==== Configuration

===== destination

Specifies the name of the queue


=== javax.jms.Topic

An ActiveMQ (JMS) topic.

Declarable in tomee.xml via

[source,xml]
----
<Resource id="Foo" type="javax.jms.Topic">
    # not set means id
    destination =
</Resource>
----

Declarable in properties via

[source,bash]
----
Foo = new://Resource?type=javax.jms.Topic
# not set means id
Foo.destination =
----

==== Configuration

===== destination

Specifies the name of the topic


=== org.omg.CORBA.ORB

NOTE: to use it you need to add an implementation of corba.

Declarable in tomee.xml via

[source,xml]
----
<Resource id="Foo" type="org.omg.CORBA.ORB" />
----

Declarable in properties via

[source,bash]
----
Foo = new://Resource?type=org.omg.CORBA.ORB
----


=== javax.mail.Session

A mail session.

Declarable in tomee.xml via

[source,xml]
----
<Resource id="mail/mysession" type="javax.mail.Session">
  mail.transport.protocol = smtp
  mail.smtp.host = smtp.provider.com
  mail.smtp.auth = true
  mail.smtp.starttls.enable = true
  mail.smtp.port = 587
  mail.smtp.user = user@provider.com
  password = abcdefghij
</Resource>
----

Declarable in properties via

[source,bash]
----
mail/mysession = new://Resource?type=javax.mail.Session
mail/mysession.mail.transport.protocol = smtp
mail/mysession.mail.smtp.host = smtp.provider.com
mail/mysession.mail.smtp.auth = true
mail/mysession.mail.smtp.starttls.enable = true
mail/mysession.mail.smtp.port = 587
mail/mysession.mail.smtp.user = user@provider.com
mail/mysession.password = abcdefghij
----

The properties are `javax.mail.Session` ones with the addition of `useDefault` which specifies if `getDefaultInstance()`
or `getInstance` is used to create the session. `getDefaultInstance()` will ensure that several calls are done with the
same configuration and return the same instance. For tomee it is likely better to rely on `getInstance()`(ie keep `useDefault` to false)
and use `aliases` option of the resource to define an alias if you need to share the same instance accross multiple names.


=== ManagedExecutorService

A concurrency utility for EE executor service.

Declarable in tomee.xml via

[source,xml]
----
<Resource id="Foo" type="ManagedExecutorService">
    Core = 5
    Max = 25
    KeepAlive = 5 s
    Queue = 15
    ThreadFactory = org.apache.openejb.threads.impl.ManagedThreadFactoryImpl
    Lazy = true
</Resource>
----

Declarable in properties via

[source,bash]
----
Foo = new://Resource?type=ManagedExecutorService
Foo.Core = 5
Foo.Max = 25
Foo.KeepAlive = 5 s
Foo.Queue = 15
Foo.ThreadFactory = org.apache.openejb.threads.impl.ManagedThreadFactoryImpl
Foo.Lazy = true
----

==== Configuration

===== Core

The pool core size.

===== Max

The pool max size.

===== KeepAlive

The thread keep alive time (in duration format)

===== Queue

The queue type size.

===== ThreadFactory

The thread factory implementation class.

===== Lazy

If set to true the pool is created when first accessed otherwise it is created at startup.


=== ManagedScheduledExecutorService

Inherit from `ManagedExecutorService` and adds scheduling abilities.

Declarable in tomee.xml via

[source,xml]
----
<Resource id="Foo" type="ManagedScheduledExecutorService">
    Core = 5
    ThreadFactory = org.apache.openejb.threads.impl.ManagedThreadFactoryImpl
    Lazy = true
</Resource>
----

Declarable in properties via

[source,bash]
----
Foo = new://Resource?type=ManagedScheduledExecutorService
Foo.Core = 5
Foo.ThreadFactory = org.apache.openejb.threads.impl.ManagedThreadFactoryImpl
Foo.Lazy = true
----

==== Configuration

See `ManagedExecutorService`.


=== ManagedThreadFactory

A thread factory for a `ManagedExecutorService`.

Declarable in tomee.xml via

[source,xml]
----
<Resource id="Foo" type="ManagedThreadFactory">
    Prefix = openejb-managed-thread-
    Lazy = true
</Resource>
----

Declarable in properties via

[source,bash]
----
Foo = new://Resource?type=ManagedThreadFactory
Foo.Prefix = openejb-managed-thread-
Foo.Lazy = true
----

==== Configuration

===== Prefix

The thread prefix (suffixed with thread id).



=== ContextService

A concurrency utilities for JavaEE context service. It allows to create
contextual proxies (inheriting from security, classloader...contexts).

Declarable in tomee.xml via

[source,xml]
----
<Resource id="Foo" type="ContextService" />
----

Declarable in properties via

[source,bash]
----
Foo = new://Resource?type=ContextService
----


=== JndiProvider: inject remote clients

A thread factory for a `ManagedExecutorService`.
Default implementation is `org.apache.openejb.threads.impl.ManagedThreadFactoryImpl`.

Declarable in tomee.xml via

[source,xml]
----
<Resource id="Foo" type="ManagedThreadFactory">
    Prefix = openejb-managed-thread-
    Lazy = true
</Resource>
----

Declarable in properties via

[source,bash]
----
Foo = new://Resource?type=ManagedThreadFactory
Foo.Prefix = openejb-managed-thread-
Foo.Lazy = true
----

==== Configuration

===== Prefix

The thread prefix (suffixed with thread id).



=== ContextService

A concurrency utilities for JavaEE context service. It allows to create
contextual proxies (inheriting from security, classloader...contexts).

Declarable in tomee.xml via

[source,xml]
----
<Resource id="Foo" type="ContextService" />
----

Declarable in properties via

[source,bash]
----
Foo = new://Resource?type=ContextService
----


