blob: 62d52e4b7d66b5db128ecae0b089bf98141640c6 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- $Rev: 1377969 $ $Date: 2012-08-28 03:50:09 +0000 (Tue, 28 Aug 2012) $ -->
<ServiceJar>
<!--
#===================================================================#
# D E F A U L T O P E N E J B S E R V I C E S #
#===================================================================#
#
#
# This file defines all the default configurations of containers,
# factories, managers and services that come with OpenEJB.
#
# Can contain numerous configurations of the standard services
# making it easy for users to simply name the one they want in
# their configuration files.
#
# Over time this will be become a library of default
# configurations
-->
<!--
# ==========================================================
# Default Container-Managed Persistence EntityBean Container
# ==========================================================
-->
<ServiceProvider id="Default CMP Container"
service="Container"
types="CMP_ENTITY"
constructor="id, transactionManager, securityService, CmpEngineFactory"
class-name="org.apache.openejb.core.cmp.CmpContainer">
CmpEngineFactory org.apache.openejb.core.cmp.jpa.JpaCmpEngineFactory
</ServiceProvider>
<!--
# ==========================================================
# Default Bean-Managed Persistence EntityBean Container
# ==========================================================
-->
<ServiceProvider
id="Default BMP Container"
service="Container"
types="BMP_ENTITY"
constructor="id, securityService, PoolSize"
class-name="org.apache.openejb.core.entity.EntityContainer">
# Specifies the size of the bean pools for this
# bmp entity container.
PoolSize 10
</ServiceProvider>
<!--
# ==========================================================
# Default Stateless SessionBean Container
# ==========================================================
-->
<ServiceProvider
id="Default Stateless Container"
service="Container"
types="STATELESS"
factory-name="create"
class-name="org.apache.openejb.core.stateless.StatelessContainerFactory">
# Specifies the time an invokation should wait for an instance
# of the pool to become available.
#
# After the timeout is reached, if an instance in the pool cannot
# be obtained, the method invocation will fail.
#
# Usable time units: nanoseconds, microsecons, milliseconds,
# seconds, minutes, hours, days. Or any combination such as
# "1 hour and 27 minutes and 10 seconds"
#
# Any usage of the `javax.ejb.AccessTimeout` annotation will
# override this setting for the bean or method where the
# annotation is used.
AccessTimeout = 30 seconds
# Specifies the size of the bean pools for this stateless
# SessionBean container. If StrictPooling is not used, instances
# will still be created beyond this number if there is demand, but
# they will not be returned to the pool and instead will be
# immediately destroyed.
MaxSize = 10
# Specifies the minimum number of bean instances that should be in
# the pool for each bean. Pools are prefilled to the minimum on
# startup. Note this will create start order dependencies between
# other beans that also eagerly start, such as other `@Stateless`
# beans with a minimum or `@Singleton` beans using `@Startup`. The
# @DependsOn annotation can be used to appropriately influence
# start order.
#
# The minimum pool size is rigidly maintained. Instances in the
# minimum side of the pool are not eligible for `IdleTimeout` or
# `GarbageCollection`, but are subject to `MaxAge` and flushing.
#
# If the pool is flushed it is immediately refilled to the minimum
# size with `MaxAgeOffset` applied. If an instance from the minimum
# side of the pool reaches its `MaxAge`, it is also immediately
# replaced. Replacement is done in a background queue using the
# number of threads specified by `CallbackThreads`.
MinSize = 0
# StrictPooling tells the container what to do when the pool
# reaches it's maximum size and there are incoming requests that
# need instances.
#
# With strict pooling, requests will have to wait for instances to
# become available. The pool size will never grow beyond the the
# set `MaxSize` value. The maximum amount of time a request should
# wait is specified via the `AccessTimeout` setting.
#
# Without strict pooling, the container will create temporary
# instances to meet demand. The instances will last for just one
# method invocation and then are removed.
#
# Setting `StrictPooling` to `false` and `MaxSize` to `0` will result in
# no pooling. Instead instances will be created on demand and live
# for exactly one method call before being removed.
StrictPooling = false
# Specifies the maximum time that an instance should live before
# it should be retired and removed from use. This will happen
# gracefully. Useful for situations where bean instances are
# designed to hold potentially expensive resources such as memory
# or file handles and need to be periodically cleared out.
#
# Usable time units: nanoseconds, microsecons, milliseconds,
# seconds, minutes, hours, days. Or any combination such as
# `1 hour and 27 minutes and 10 seconds`
MaxAge = 0 hours
# When `ReplaceAged` is enabled, any instances in the pool that
# expire due to reaching their `MaxAge` will be replaced immediately
# so that the pool will remain at its current size. Replacement
# is done in a background queue so that incoming threads will not
# have to wait for instance creation.
#
# The aim of his option is to prevent user requests from paying
# the instance creation cost as `MaxAge` is enforced, potentially
# while under heavy load at peak hours.
#
# Instances from the minimum side of the pool are always replaced
# when they reach their `MaxAge`, this setting dictates the
# treatment of non-minimum instances.
ReplaceAged = true
# When `ReplaceFlushed` is enabled, any instances in the pool that
# are flushed will be replaced immediately so that the pool will
# remain at its current size. Replacement is done in a background
# queue so that incoming threads will not have to wait for
# instance creation.
#
# The aim of his option is to prevent user requests from paying
# the instance creation cost if a flush performed while under
# heavy load at peak hours.
#
# Instances from the minimum side of the pool are always replaced
# when they are flushed, this setting dictates the treatment of
# non-minimum instances.
#
# A bean may flush its pool by casting the `SessionContext` to
# `Flushable` and calling `flush()`. See `SweepInterval` for details on
# how flush is performed.
#
# import javax.annotation.Resource;
# import javax.ejb.SessionContext;
# import javax.ejb.Stateless;
# import java.io.Flushable;
# import java.io.IOException;
#
# @Stateless
# public class MyBean {
#
# @Resource
# private SessionContext sessionContext;
#
# public void flush() throws IOException {
#
# ((Flushable) sessionContext).flush();
# }
# }
ReplaceFlushed = false
# Applies to MaxAge usage and would rarely be changed, but is a
# nice feature to understand.
#
# When the container first starts and the pool is filled to the
# minimum size, all those "minimum" instances will have the same
# creation time and therefore all expire at the same time dictated
# by the `MaxAge` setting. To protect against this sudden drop
# scenario and provide a more gradual expiration from the start
# the container will spread out the age of the instances that fill
# the pool to the minimum using an offset.
#
# The `MaxAgeOffset` is not the final value of the offset, but
# rather it is used in creating the offset and allows the
# spreading to push the initial ages into the future or into the
# past. The pool is filled at startup as follows:
#
# for (int i = 0; i &lt; poolMin; i++) {
# long ageOffset = (maxAge / poolMin * i * maxAgeOffset) % maxAge;
# pool.add(new Bean(), ageOffset));
# }
#
# The default `MaxAgeOffset` is -1 which causes the initial
# instances in the pool to live a bit longer before expiring. As
# a concrete example, let's say the MinSize is 4 and the MaxAge is
# 100 years. The generated offsets for the four instances created
# at startup would be 0, -25, -50, -75. So the first instance
# would be "born" at age 0, die at 100, living 100 years. The
# second instance would be born at -25, die at 100, living a total
# of 125 years. The third would live 150 years. The fourth 175
# years.
#
# A `MaxAgeOffset` of 1 would cause instances to be "born" older
# and therefore die sooner. Using the same example `MinSize` of 4
# and `MaxAge` of `100 years`, the life spans of these initial four
# instances would be 100, 75, 50, and 25 years respectively.
#
# A `MaxAgeOffset` of 0 will cause no "spreading" of the age of the
# first instances used to fill the pool to the minimum and these
# instances will of course reach their MaxAge at the same time.
# It is possible to set to decimal values such as -0.5, 0.5, -1.2,
# or 1.2.
MaxAgeOffset = -1
# Specifies the maximum time that an instance should be allowed to
# sit idly in the pool without use before it should be retired and
# removed.
#
# Usable time units: nanoseconds, microsecons, milliseconds,
# seconds, minutes, hours, days. Or any combination such as
# "1 hour and 27 minutes and 10 seconds"
IdleTimeout = 0 minutes
# Allows Garbage Collection to be used as a mechanism for shrinking
# the pool. When set to true all instances in the pool, excluding
# the minimum, are eligible for garbage collection by the virtual
# machine as per the rules of `java.lang.ref.SoftReference` and can be
# claimed by the JVM to free memory. Instances garbage collected
# will have their `@PreDestroy` methods called during finalization.
#
# In the OpenJDK VM the `-XX:SoftRefLRUPolicyMSPerMB` flag can adjust
# how aggressively SoftReferences are collected. The default
# OpenJDK setting is 1000, resulting in inactive pooled instances
# living one second of lifetime per free megabyte in the heap, which
# is very aggressive. The setting should be increased to get the
# most out of the `GarbageCollection` feature of the pool. Much
# higher settings are safe. Even a setting as high as 3600000 (1
# hour per free MB in the heap) does not affect the ability for the
# VM to garbage collect SoftReferences in the event that memory is
# needed to avoid an `OutOfMemoryException`.
GarbageCollection = false
# The frequency in which the container will sweep the pool and
# evict expired instances. Eviction is how the `IdleTimeout`,
# `MaxAge`, and pool "flush" functionality is enforced. Higher
# intervals are better.
#
# Instances in use are excluded from sweeping. Should an instance
# expire while in use it will be evicted immediately upon return
# to the pool. Effectively `MaxAge` and flushes will be enforced as
# a part of normal activity or sweeping, while IdleTimeout is only
# enforcable via sweeping. This makes aggressive sweeping less
# important for a pool under moderate load.
#
# Usable time units: nanoseconds, microsecons, milliseconds,
# seconds, minutes, hours, days. Or any combination such as
# `1 hour and 27 minutes and 10 seconds`
SweepInterval = 5 minutes
# When sweeping the pool for expired instances a thread pool is
# used to process calling `@PreDestroy` on expired instances as well
# as creating new instances as might be required to fill the pool
# to the minimum after a Flush or `MaxAge` expiration. The
# `CallbackThreads` setting dictates the size of the thread pool and
# is shared by all beans deployed in the container.
CallbackThreads = 5
# PostConstruct methods are invoked on all instances in the pool
# when the bean is undeployed and its pool is closed. The
# `CloseTimeout` specifies the maximum time to wait for the pool to
# close and `PostConstruct` methods to be invoked.
#
# Usable time units: nanoseconds, microsecons, milliseconds,
# seconds, minutes, hours, days. Or any combination such as
# `1 hour and 27 minutes and 10 seconds`
CloseTimeout = 5 minutes
</ServiceProvider>
<!--
# ==========================================================
# Default Singleton SessionBean Container
# ==========================================================
-->
<ServiceProvider
id="Default Singleton Container"
service="Container"
types="SINGLETON"
constructor="id, securityService"
class-name="org.apache.openejb.core.singleton.SingletonContainer">
# Specifies the maximum time an invocation could wait for the
# `@Singleton` bean instance to become available before giving up.
#
# After the timeout is reached a `javax.ejb.ConcurrentAccessTimeoutException`
# will be thrown.
#
# Usable time units: nanoseconds, microsecons, milliseconds,
# seconds, minutes, hours, days. Or any combination such as
# `1 hour and 27 minutes and 10 seconds`
#
# Any usage of the `javax.ejb.AccessTimeout` annotation will
# override this setting for the bean or method where the
# annotation is used.
AccessTimeout = 30 seconds
</ServiceProvider>
<!--
# ==========================================================
# Default Stateful SessionBean Container
# ==========================================================
-->
<ServiceProvider
id="Default Stateful Container"
service="Container"
types="STATEFUL"
factory-name="create"
class-name="org.apache.openejb.core.stateful.StatefulContainerFactory">
# Specifies the maximum time an invocation could wait for the
# `@Stateful` bean instance to become available before giving up.
#
# After the timeout is reached a `javax.ejb.ConcurrentAccessTimeoutException`
# will be thrown.
#
# Usable time units: nanoseconds, microsecons, milliseconds,
# seconds, minutes, hours, days. Or any combination such as
# "1 hour and 27 minutes and 10 seconds"
#
# Any usage of the `javax.ejb.AccessTimeout` annotation will
# override this setting for the bean or method where the
# annotation is used.
AccessTimeout = 30 seconds
# The cache is responsible for managing stateful bean
# instances. The cache can page instances to disk as memory
# is filled and can destroy abandoned instances. A different
# cache implementation can be used by setting this property
# to the fully qualified class name of the Cache implementation.
Cache org.apache.openejb.core.stateful.SimpleCache
# The passivator is responsible for writing beans to disk
# at passivation time. Different passivators can be used
# by setting this property to the fully qualified class name
# of the `PassivationStrategy` implementation. The passivator
# is not responsible for invoking any callbacks or other
# processing, its only responsibly is to write the bean state
# to disk.
#
# Known implementations:
#
# - org.apache.openejb.core.stateful.RAFPassivater
# - org.apache.openejb.core.stateful.SimplePassivater
Passivator org.apache.openejb.core.stateful.SimplePassivater
# Specifies the time a bean can be idle before it is removed by the container.
#
# This value is measured in minutes. A value of 5 would
# result in a time-out of 5 minutes between invocations.
# A value of -1 would mean no timeout.
# A value of 0 would mean a bean can be immediately removed by the container.
#
# Any usage of the `javax.ejb.StatefulTimeout` annotation will
# override this setting for the bean where the annotation is used.
TimeOut 20
# Specifies the frequency (in seconds) at which the bean cache is checked for
# idle beans.
Frequency 60
# Specifies the size of the bean pools for this
# stateful SessionBean container.
Capacity 1000
# Property name that specifies the number of instances
# to passivate at one time when doing bulk passivation.
BulkPassivate 100
</ServiceProvider>
<!--
# ==========================================================
# Default Managed SessionBean Container
# ==========================================================
-->
<ServiceProvider
id="Default Managed Container"
service="Container"
types="MANAGED"
constructor="id, securityService"
class-name="org.apache.openejb.core.managed.ManagedContainer">
</ServiceProvider>
<!--
# ==========================================================
# Default Message Driven Container
# ==========================================================
-->
<ServiceProvider
id="Default MDB Container"
service="Container"
types="MESSAGE"
constructor="id, securityService, ResourceAdapter, MessageListenerInterface, ActivationSpecClass, InstanceLimit"
class-name="org.apache.openejb.core.mdb.MdbContainer">
# The resource adapter delivers messages to the container
ResourceAdapter Default JMS Resource Adapter
# Specifies the message listener interface handled by this container
MessageListenerInterface javax.jms.MessageListener
# Specifies the activation spec class
ActivationSpecClass org.apache.activemq.ra.ActiveMQActivationSpec
# Specifies the maximum number of bean instances that are
# allowed to exist for each MDB deployment.
InstanceLimit 10
</ServiceProvider>
<!--
# ================================================
# Default Proxy Factory implementation for JDK 1.3
# ================================================
-->
<ServiceProvider
id="Default JDK 1.3 ProxyFactory"
service="ProxyFactory"
types="ProxyFactory"
class-name="org.apache.openejb.util.proxy.Jdk13ProxyFactory"/>
<!--
# ================================================
# Default Security Service implementation
# ================================================
-->
<ServiceProvider
id="Default Security Service"
service="SecurityService"
types="SecurityService"
class-name="org.apache.openejb.core.security.SecurityServiceImpl">
DefaultUser guest
</ServiceProvider>
<ServiceProvider
id="PseudoSecurityService"
service="SecurityService"
types="SecurityService"
class-name="org.apache.openejb.ri.sp.PseudoSecurityService"/>
<!--
# ================================================
# Default Transaction Manager implementation
# ================================================
-->
<ServiceProvider
id="Default Transaction Manager"
service="TransactionManager"
types="TransactionManager"
factory-name="create"
constructor="defaultTransactionTimeoutSeconds, defaultTransactionTimeout, TxRecovery, tmId, bufferClassName, bufferSizeKb, checksumEnabled, adler32Checksum, flushSleepTimeMilliseconds, flushSleepTime, logFileDir, logFileExt, logFileName, maxBlocksPerFile, maxBuffers, maxLogFiles, minBuffers, threadsWaitingForceThreshold"
class-name="org.apache.openejb.resource.GeronimoTransactionManagerFactory">
defaultTransactionTimeout 10 minutes
# When set to true, Howl logging is enabled
TxRecovery false
# Requires TxRecovery
bufferSizeKb 32
# Requires TxRecovery
checksumEnabled true
# Requires TxRecovery
adler32Checksum true
# Requires TxRecovery
flushSleepTime 50 Milliseconds
# Requires TxRecovery
logFileDir txlog
# Requires TxRecovery
logFileExt log
# Requires TxRecovery
logFileName howl
# Requires TxRecovery
maxBlocksPerFile -1
# Requires TxRecovery
maxBuffers 0
# Requires TxRecovery
maxLogFiles 2
# Requires TxRecovery
minBuffers 4
# Requires TxRecovery
threadsWaitingForceThreshold -1
</ServiceProvider>
<!--
# ================================================
# Default JCA ManagedConnectionFactory for JDBC
# ================================================
-->
<ServiceProvider
id="Default JDBC Database"
service="Resource"
types="javax.sql.DataSource, DataSource"
factory-name="create"
constructor="ServiceId, JtaManaged, JdbcDriver, Definition, MaxWaitTime, TimeBetweenEvictionRuns, MinEvictableIdleTime"
class-name="org.apache.openejb.resource.jdbc.DataSourceFactory">
ServiceId
Definition
# 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`
#
# 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'
JtaManaged = true
# Driver class name
JdbcDriver org.hsqldb.jdbcDriver
# Url for creating connections
JdbcUrl jdbc:hsqldb:mem:hsqldb
# Default user name
UserName sa
# Default password
Password
PasswordCipher PlainText
# The connection properties that will be sent to the JDBC
# driver when establishing new connections
#
# Format of the string must be [propertyName=property;]*
#
# NOTE - The "user" and "password" properties will be passed
# explicitly, so they do not need to be included here.
ConnectionProperties
# The default auto-commit state of new connections
DefaultAutoCommit true
# The default read-only state of new connections
# If not set then the setReadOnly method will not be called.
# (Some drivers don't support read only mode, ex: Informix)
DefaultReadOnly
# The default TransactionIsolation state of new connections
# If not set then the `setTransactionIsolation` method will not
# be called. The allowed values for this property are:
#
# - `NONE`
# - `READ_COMMITTED`
# - `READ_UNCOMMITTED`
# - `REPEATABLE_READ`
# - `SERIALIZABLE`
#
# Note: Most JDBC drivers do not support all isolation levels
# DefaultTransactionIsolation
# The initial number of connections that are created when the
# pool is started
InitialSize 0
# The maximum number of active connections that can be
# allocated from this pool at the same time, or a negative
# number for no limit.
MaxActive 20
# The maximum number of connections that can remain idle in
# the pool, without extra ones being released, or a negative
# number for no limit.
MaxIdle 20
# The minimum number of connections that can remain idle in
# the pool, without extra ones being created, or zero to
# create none.
MinIdle 0
# The maximum number of milliseconds that the pool will wait
# (when there are no available connections) for a connection
# to be returned before throwing an exception, or -1 to wait
# indefinitely.
MaxWaitTime -1 millisecond
# The SQL query that will be used to validate connections from
# this pool before returning them to the caller. If specified,
# this query MUST be an SQL SELECT statement that returns at
# least one row.
ValidationQuery
# If true connections will be validated before being returned
# from the pool. If the validation fails, the connection is
# destroyed, and a new conection will be retrieved from the
# pool (and validated).
#
# NOTE - for a true value to have any effect, the
# ValidationQuery parameter must be set.
TestOnBorrow true
# If true connections will be validated before being returned
# to the pool. If the validation fails, the connection is
# destroyed instead of being returned to the pool.
#
# NOTE - for a true value to have any effect, the
# ValidationQuery parameter must be set.
TestOnReturn false
# If true connections will be validated by the idle connection
# evictor (if any). If the validation fails, the connection is
# destroyed and removed from the pool
#
# NOTE - for a true value to have any effect, the
# timeBetweenEvictionRunsMillis property must be a positive
# number and the ValidationQuery parameter must be set.
TestWhileIdle false
# The number of milliseconds to sleep between runs of the idle
# connection evictor thread. When set to a negative number, no
# idle connection evictor thread will be run.
TimeBetweenEvictionRuns -1 millisecond
# The number of connectionss to examine during each run of the
# idle connection evictor thread (if any).
NumTestsPerEvictionRun 3
# The minimum amount of time a connection may sit idle in the
# pool before it is eligable for eviction by the idle
# connection evictor (if any).
MinEvictableIdleTime 30 minutes
# If true, a statement pool is created for each Connection and
# PreparedStatements created by one of the following methods are
# pooled:
#
# public PreparedStatement prepareStatement(String sql);
# public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency)
PoolPreparedStatements false
# The maximum number of open statements that can be allocated
# from the statement pool at the same time, or zero for no
# limit.
#
# NOTE - Some drivers have limits on the number of open
# statements, so make sure there are some resources left
# for the other (non-prepared) statements.
MaxOpenPreparedStatements 0
# If true the raw physical connection to the database can be
# accessed using the following construct:
#
# Connection conn = ds.getConnection();
# Connection rawConn = ((DelegatingConnection) conn).getInnermostDelegate();
# ...
# conn.close()
#
# Default is false, because misbehaving programs can do harmfull
# things to the raw connection shuch as closing the raw
# connection or continuing to use the raw connection after it
# has been assigned to another logical connection. Be careful
# and only use when you need direct access to driver specific
# extensions.
#
# NOTE: Do NOT close the underlying connection, only the
# original logical connection wrapper.
AccessToUnderlyingConnectionAllowed false
# use only all set values in this config
# will need a lot of properties but allow to not set some values
IgnoreDefaultValues = false
</ServiceProvider>
<ServiceProvider
id="Default Unmanaged JDBC Database"
service="Resource"
types="javax.sql.DataSource, DataSource"
factory-name="create"
constructor="ServiceId, JtaManaged, JdbcDriver, Definition, MaxWaitTime, TimeBetweenEvictionRuns, MinEvictableIdleTime"
class-name="org.apache.openejb.resource.jdbc.DataSourceFactory">
ServiceId
Definition
JtaManaged = false
# Driver class name
JdbcDriver org.hsqldb.jdbcDriver
# Url for creating connections
JdbcUrl jdbc:hsqldb:mem:hsqldb
# Default user name
UserName sa
# Default password
Password
PasswordCipher PlainText
# The connection properties that will be sent to the JDBC
# driver when establishing new connections
#
# Format of the string must be [propertyName=property;]*
#
# NOTE - The "user" and "password" properties will be passed
# explicitly, so they do not need to be included here.
ConnectionProperties
# The default auto-commit state of new connections
DefaultAutoCommit true
# The default read-only state of new connections
# If not set then the setReadOnly method will not be called.
# (Some drivers don't support read only mode, ex: Informix)
DefaultReadOnly
# The default TransactionIsolation state of new connections
# If not set then the setTransactionIsolation method will not
# be called. The allowed values for this property are:
# NONE
# READ_COMMITTED
# READ_UNCOMMITTED
# REPEATABLE_READ
# SERIALIZABLE
#
# Note: Most JDBC drivers do not support all isolation levels
# DefaultTransactionIsolation
# The initial number of connections that are created when the
# pool is started
InitialSize 0
# The maximum number of active connections that can be
# allocated from this pool at the same time, or a negative
# number for no limit.
MaxActive 10
# The maximum number of connections that can remain idle in
# the pool, without extra ones being released, or a negative
# number for no limit.
MaxIdle 10
# The minimum number of connections that can remain idle in
# the pool, without extra ones being created, or zero to
# create none.
MinIdle 0
# The maximum number of milliseconds that the pool will wait
# (when there are no available connections) for a connection
# to be returned before throwing an exception, or -1 to wait
# indefinitely.
MaxWaitTime -1 millisecond
# The SQL query that will be used to validate connections from
# this pool before returning them to the caller. If specified,
# this query MUST be an SQL SELECT statement that returns at
# least one row.
ValidationQuery
# If true connections will be validated before being returned
# from the pool. If the validation fails, the connection is
# destroyed, and a new conection will be retrieved from the
# pool (and validated).
#
# NOTE - for a true value to have any effect, the
# ValidationQuery parameter must be set.
TestOnBorrow true
# If true connections will be validated before being returned
# to the pool. If the validation fails, the connection is
# destroyed instead of being returned to the pool.
#
# NOTE - for a true value to have any effect, the
# ValidationQuery parameter must be set.
TestOnReturn false
# If true connections will be validated by the idle connection
# evictor (if any). If the validation fails, the connection is
# destroyed and removed from the pool
#
# NOTE - for a true value to have any effect, the
# timeBetweenEvictionRunsMillis property must be a positive
# number and the ValidationQuery parameter must be set.
TestWhileIdle false
# The number of milliseconds to sleep between runs of the idle
# connection evictor thread. When set to a negative number, no
# idle connection evictor thread will be run.
TimeBetweenEvictionRuns -1 millisecond
# The number of connectionss to examine during each run of the
# idle connection evictor thread (if any).
NumTestsPerEvictionRun 3
# The minimum amount of time a connection may sit idle in the
# pool before it is eligable for eviction by the idle
# connection evictor (if any).
MinEvictableIdleTime 30 minutes
# If true, a statement pool is created for each Connection and
# PreparedStatements created by one of the following methods are
# pooled:
# public PreparedStatement prepareStatement(String sql);
# public PreparedStatement prepareStatement(String sql,
# int resultSetType,
# int resultSetConcurrency)
PoolPreparedStatements false
# The maximum number of open statements that can be allocated
# from the statement pool at the same time, or zero for no
# limit.
#
# NOTE - Some drivers have limits on the number of open
# statements, so make sure there are some resources left
# for the other (non-prepared) statements.
MaxOpenPreparedStatements 0
# If true the raw physical connection to the database can be
# accessed using the following construct:
# Connection conn = ds.getConnection();
# Connection rawConn = ((DelegatingConnection) conn).getInnermostDelegate();
# ...
# conn.close()
#
# Default is false, because misbehaving programs can do harmfull
# things to the raw connection shuch as closing the raw
# connection or continuing to use the raw connection after it
# has been assigned to another logical connection. Be carefull
# and only use when you need direct access to driver specific
# extentions.
#
# NOTE: Do NOT close the underlying connection, only the
# original logical connection wrapper.
AccessToUnderlyingConnectionAllowed false
</ServiceProvider>
<!--
# ================================================
# Default JMS
# ================================================
-->
<ServiceProvider
id="Default JMS Resource Adapter"
service="Resource"
types="ActiveMQResourceAdapter"
class-name="org.apache.openejb.resource.activemq.ActiveMQResourceAdapter">
# 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
BrokerXmlConfig broker:(tcp://localhost:61616)?useJmx=false
# Broker address
ServerUrl vm://localhost?waitForStart=20000&amp;async=true
# DataSource for persistence messages
DataSource Default Unmanaged JDBC Database
# How long to wait for broker startup
StartupTimeout 10 seconds
</ServiceProvider>
<ServiceProvider
id="Default JMS Connection Factory"
service="Resource"
types="javax.jms.ConnectionFactory, javax.jms.QueueConnectionFactory, javax.jms.TopicConnectionFactory, QueueConnectionFactory, TopicConnectionFactory"
class-name="org.apache.activemq.ra.ActiveMQManagedConnectionFactory">
ResourceAdapter Default JMS Resource Adapter
# Specifies if the connection is enrolled in global transaction
# allowed values: xa, local or none
TransactionSupport xa
# Maximum number of physical connection to the ActiveMQ broker
PoolMaxSize 10
# Minimum number of physical connection to the ActiveMQ broker
PoolMinSize 0
# Maximum amount of time to wait for a connection
ConnectionMaxWaitTime 5 seconds
# Maximum amount of time a connection can be idle before being reclaimed
ConnectionMaxIdleTime 15 Minutes
</ServiceProvider>
<ServiceProvider
id="Default Queue"
service="Resource"
types="javax.jms.Queue, Queue"
constructor="destination"
class-name="org.apache.activemq.command.ActiveMQQueue">
# Specifies the name of the queue
destination
</ServiceProvider>
<ServiceProvider
id="Default Topic"
service="Resource"
types="javax.jms.Topic, Topic"
constructor="destination"
class-name="org.apache.activemq.command.ActiveMQTopic">
# Specifies the name of the topic
destination
</ServiceProvider>
<!--
# ================================================
# Default ORB
# ================================================
-->
<ServiceProvider
id="Default ORB"
service="Resource"
types="org.omg.CORBA.ORB, ORB"
factory-name="create"
class-name="org.apache.openejb.core.OrbFactory">
</ServiceProvider>
<!--
# ================================================
# Default JavaMail
# ================================================
-->
<ServiceProvider
id="Default Mail Session"
service="Resource"
types="javax.mail.Session"
factory-name="create"
class-name="org.apache.openejb.core.MailSessionFactory">
</ServiceProvider>
<!--
# ================================================
# Default JndiProvider
# ================================================
-->
<ServiceProvider
id="Default Remote Jndi Provider"
service="JndiProvider"
types="javax.naming.InitialContext"
class-name="org.apache.openejb.core.NoProvider">
# This provider allows the configuration of InitialContext
# objects for the lookup of resources outside this server
#
# The properties specified here go directly to the properties
# object passed into the constructor of the InitialContext
#
# Example properties might look like the following:
#
# java.naming.factory.initial = org.apache.openejb.client.RemoteInitialContextFactory
# java.naming.provider.url = ejbd://localhost:4201
#
</ServiceProvider>
<!--
# dynamic routing datasource
-->
<ServiceProvider
id="RoutedDataSource"
service="Resource" types="DataSource"
class-name="org.apache.openejb.resource.jdbc.RoutedDataSource">
Router
</ServiceProvider>
</ServiceJar>