| = 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. |