Fixes service configuration
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/c5a32858 Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/c5a32858 Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/c5a32858 Branch: refs/heads/tomee-1.7.x Commit: c5a328580bbc05a2e0dc1cb171e7a7b5d7364dd1 Parents: 978be21 Author: Otavio Santana <[email protected]> Authored: Thu Jul 6 09:35:15 2017 -0300 Committer: Otavio Santana <[email protected]> Committed: Thu Jul 6 09:35:15 2017 -0300 ---------------------------------------------------------------------- .../META-INF/org.apache.openejb/service-jar.xml | 2 +- .../openejb/core/mdb/MdbContainerTest.java | 1 + .../META-INF/org.apache.openejb/service-jar.txt | 53 - .../META-INF/org.apache.openejb/service-jar.xml | 1153 ++++++++++++++++++ 4 files changed, 1155 insertions(+), 54 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/c5a32858/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml b/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml index a1c7938..fa51c64 100644 --- a/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml +++ b/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml @@ -483,7 +483,7 @@ # log a warning if true or throw an exception if false is an activation spec can't be respected - FailOnUnknowActivationSpec = false + FailOnUnknowActivationSpec = true </ServiceProvider> http://git-wip-us.apache.org/repos/asf/tomee/blob/c5a32858/container/openejb-core/src/test/java/org/apache/openejb/core/mdb/MdbContainerTest.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/test/java/org/apache/openejb/core/mdb/MdbContainerTest.java b/container/openejb-core/src/test/java/org/apache/openejb/core/mdb/MdbContainerTest.java index 2511584..1a24549 100644 --- a/container/openejb-core/src/test/java/org/apache/openejb/core/mdb/MdbContainerTest.java +++ b/container/openejb-core/src/test/java/org/apache/openejb/core/mdb/MdbContainerTest.java @@ -66,6 +66,7 @@ public class MdbContainerTest { URL url = MdbContainerTest.class.getResource("/META-INF/org.apache.openejb/service-jar.txt"); File txtFile = new File(url.toURI()); File xmlFile = new File(txtFile.getParentFile(), "service-jar.xml"); + xmlFile.createNewFile(); Files.copy(txtFile, xmlFile); } http://git-wip-us.apache.org/repos/asf/tomee/blob/c5a32858/container/openejb-core/src/test/resources/META-INF/org.apache.openejb/service-jar.txt ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/test/resources/META-INF/org.apache.openejb/service-jar.txt b/container/openejb-core/src/test/resources/META-INF/org.apache.openejb/service-jar.txt deleted file mode 100644 index f391584..0000000 --- a/container/openejb-core/src/test/resources/META-INF/org.apache.openejb/service-jar.txt +++ /dev/null @@ -1,53 +0,0 @@ -<?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$ $Date$ --> - -<ServiceJar> - - - <ServiceProvider - id="Default MDB Container" - service="Container" - types="MESSAGE" - constructor="id, securityService, ResourceAdapter, MessageListenerInterface, ActivationSpecClass, InstanceLimit, FailOnUnknowActivationSpec" - 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 - - # log a warning if true or throw an exception if false is an activation spec can't be respected - - FailOnUnknowActivationSpec = false - - </ServiceProvider> -</ServiceJar> http://git-wip-us.apache.org/repos/asf/tomee/blob/c5a32858/container/openejb-core/src/test/resources/META-INF/org.apache.openejb/service-jar.xml ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/test/resources/META-INF/org.apache.openejb/service-jar.xml b/container/openejb-core/src/test/resources/META-INF/org.apache.openejb/service-jar.xml new file mode 100644 index 0000000..fa51c64 --- /dev/null +++ b/container/openejb-core/src/test/resources/META-INF/org.apache.openejb/service-jar.xml @@ -0,0 +1,1153 @@ +<?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$ $Date$ --> + +<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 = true + + # 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 < 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, FailOnUnknowActivationSpec" + 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 + + # log a warning if true or throw an exception if false is an activation spec can't be respected + + FailOnUnknowActivationSpec = true + + </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, OpenEJBResourceClasspath" + 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 + + OpenEJBResourceClasspath = 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, OpenEJBResourceClasspath" + 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 + + OpenEJBResourceClasspath = 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&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, javax.jms.Destination" + 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, javax.jms.Destination" + 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> + + <!-- + # ========================================================== + # Concurrency Utilities + # ========================================================== + --> + <ServiceProvider id="Default Executor Service" + service="Resource" + types="ManagedExecutorService, javax.enterprise.concurrent.ManagedExecutorService" + factory-name="create" + class-name="org.apache.openejb.concurrencyutilities.ee.factory.ManagedExecutorServiceImplFactory"> + Core = 5 + Max = 25 + KeepAlive = 5 s + Queue = 15 + WaitAtShutdown = 30 seconds + ThreadFactory = org.apache.openejb.concurrencyutilities.ee.impl.ManagedThreadFactoryImpl + </ServiceProvider> + <ServiceProvider id="Default Scheduled Executor Service" + service="Resource" + types="ManagedScheduledExecutorService, javax.enterprise.concurrent.ManagedScheduledExecutorService" + factory-name="create" + class-name="org.apache.openejb.concurrencyutilities.ee.factory.ManagedScheduledExecutorServiceImplFactory"> + Core = 5 + WaitAtShutdown = 30 seconds + ThreadFactory = org.apache.openejb.concurrencyutilities.ee.impl.ManagedThreadFactoryImpl + </ServiceProvider> + <ServiceProvider id="Default Managed Thread Factory" + service="Resource" + types="ManagedThreadFactory, javax.enterprise.concurrent.ManagedThreadFactory" + factory-name="create" + class-name="org.apache.openejb.concurrencyutilities.ee.factory.ManagedThreadFactoryImplFactory"> + Prefix = openejb-managed-thread- + </ServiceProvider> + <ServiceProvider id="Default Context Service" + service="Resource" + types="ContextService, javax.enterprise.concurrent.ContextService" + class-name="org.apache.openejb.concurrencyutilities.ee.impl.ContextServiceImpl"/> +</ServiceJar>
