blob: be43cd2671819447e77b81bca4b505f2667dc571 [file] [log] [blame]
= Application Configuration
:jbake-date: 2016-03-16
:jbake-type: page
:jbake-status: published
:jbake-tomeepdf:
=== `application.properties`
This file is located in `WEB-INF` for a war and `META-INF` for an ear.
==== `@Asynchronous` configuration
Default pool size for `@Asynchronous` is 5. It can be very small for some applications highly relying on
asynchronism or reactive patterns. Therefore it is possible to customize it adding these entries in `application.properties`:
[.table.table-bordered,options="header"]
|===
| Name | Default| Description
| AsynchronousPool.Size | 5 | Core size of the pool
| AsynchronousPool.CorePoolSize | 5 | Core size of the pool (inherit its default from .Size alias)
| AsynchronousPool.MaximumPoolSize | 5 | Maximum size of the pool
| AsynchronousPool.QueueSize | 5 | Maximum size of the pool
| AsynchronousPool.KeepAliveTime | 1 minute | Thread keep alive duration
| AsynchronousPool.AllowCoreThreadTimeOut | true | Should thread timeout
| AsynchronousPool.QueueType | LINKED (or SYNCHRONOUS if size == 0) | The type of queue of the pool in ARRAY, LINKED, PRIORITY or SYNCHRONOUS (same behavior as java implementations of the same name)
| AsynchronousPool.ShutdownWaitDuration | 1 minute | How many time to wait for the pool to shutdown when undeploying the application
| AsynchronousPool.RejectedExecutionHandlerClass | - | A fully qualified name of a `java.util.concurrent.RejectedExecutionHandler`
|===
==== TimerService and `@Scheduled`
`timerStore.class` allows to switch from the in memory (`org.apache.openejb.core.timer.MemoryTimerStore`) timer storage
for quartz tasks to a custom implementation (using a database or anything for instance). Constructor can take a `TransactionManager`
or nothing.
All quartz properties prefixed with `org.apache.openejb.quartz.` (instead of `org.quartz.`) are passthrough to quartz.
==== CDI
The boolean `openejb.cdi.skip-resource-validation` allows to not validate resources ie `@EJB` and `@Resource` usages in CDI beans.
All properties understood by OpenWebBeans will also be passthrough to OpenWebBeans from this location, see http://openwebbeans.apache.org/owbconfig.html[OWB config] for more details.
==== `@WebServiceRef`
[.table.table-bordered,options="header"]
|===
| Name | Description
| cxf.jaxws.client.wsFeatures | Allows to set WSFeature on the client injection. Values is a list (comma separated) of resource id in resources.xml or fully qualified names.
|===
==== `@Stateless`
[.table.table-bordered,options="header"]
|===
| Name | Description
| AccessTimeout or Timeout | container timeout
| CloseTimeout | container timeout
| BackgroundStartup | Don't create instances in parallel if minimum count is > 0, default to false
|===
=== `resources.xml`
`resources.xml` is a tomee.xml using application classloader.
As `tomee.xml` it supports filtering so you can use environment variables and system properties, for instance
to use a MySQL database on OpenShift you can do:
[source,xml]
----
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<Resource id="MySQL" aliases="myAppDataSourceName" type="DataSource">
JdbcDriver = com.mysql.jdbc.Driver
JdbcUrl = jdbc:mysql://${OPENSHIFT_MYSQL_DB_HOST}:${OPENSHIFT_MYSQL_DB_PORT}/rmannibucau?tcpKeepAlive=true
UserName = ${OPENSHIFT_MYSQL_DB_USERNAME}
Password = ${OPENSHIFT_MYSQL_DB_PASSWORD}
ValidationQuery = SELECT 1
ValidationInterval = 30000
NumTestsPerEvictionRun = 5
TimeBetweenEvictionRuns = 30 seconds
TestWhileIdle = true
MaxActive = 200
</Resource>
</resources>
----
`resources.xml` supports `Resource`, `Service` and `Container`.
==== `resources.xml` mecanism
`resources.xml` resources are still available globally like any `tomee.xml` resource.
The actual resource is bound in an application subtree called with the application name and a resource facade is bound
in the global naming tree to be able to route the requests depending the application.
Typically if your application is named `myapp` and your resource id is `myresource` then instead of being registered
as `myresource`, it will get registered as `myapp/myresource`.
If you get any ambiguity in resource name matching try to fully qualified your resource prefixing it with the application name.