interesting. I can definitely use this as a reference if (ever) necessary, thanks.
which brings me to my next question, // // take care next strategies can break multiple calls on the facade // it is only intended to be used for connection selection // I recognized that in the code. I know I make many calls to @Stateless @EJB facade objects to read/write data from/to database, and I also configured tomcat jdbc pool to allow for many connections...in/via tomee.xml <Resource .../>. so, my question... what is the rule of thumb when configuring jdbc pool and tomee/openejb failover via dynamic datasources? on my development/test server, I have the following: <Resource id="jdbc/main" type="javax.sql.DataSource"> JdbcDriver org.apache.derby.jdbc.EmbeddedDriver JdbcUrl jdbc:derby:C:/javadb/databases/mcmsdev;create=true UserName .... Password .... JtaManaged true jmxEnabled true LogSql false InitialSize 10 MaxActive 100 MaxIdle 30 MaxWait 10000 minIdle 10 suspectTimeout 60 removeAbandoned true removeAbandonedTimeout 180 timeBetweenEvictionRunsMillis 30000 jdbcInterceptors=StatementCache(max=128) </Resource> <Resource id="jdbc/fallback" type="javax.sql.DataSource"> JdbcDriver org.apache.derby.jdbc.EmbeddedDriver JdbcUrl jdbc:derby:C:/javadb/databases/mcms;create=true UserName .... Password .... JtaManaged true jmxEnabled true LogSql false InitialSize 10 MaxActive 100 MaxIdle 30 MaxWait 10000 minIdle 10 suspectTimeout 60 removeAbandoned true removeAbandonedTimeout 180 timeBetweenEvictionRunsMillis 30000 jdbcInterceptors=StatementCache(max=128) </Resource> <Resource id="failover-router" class-name="org.apache.openejb.resource.jdbc.router.FailOverRouter"> datasourceNames = jdbc/main,jdbc/fallback </Resource> <Resource id="jdbc/mcmsJta" type="DataSource" provider="RoutedDataSource"> router = failover-router </Resource> should I be configuring tomcat jdbc pooling on the dynamic datasources, or on the routed datasource? also, I recognized something in the log file, since RoutedDataSource has no URL, the following shows up in the log when starting TomEE: INFO: Creating Resource(id=jdbc/mcmsJta) Nov 03, 2013 9:19:04 AM org.apache.openejb.assembler.classic.Assembler createResource INFO: can't find url for jdbc/mcmsJta will not monitor it On Sun, Nov 3, 2013 at 10:52 AM, Romain Manni-Bucau <rmannibu...@gmail.com>wrote: > lookhttp:// > svn.apache.org/repos/asf/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/router/FailOverRouter.java > last method > > it can still be enhanced a lot > Romain Manni-Bucau > Twitter: @rmannibucau > Blog: http://rmannibucau.wordpress.com/ > LinkedIn: http://fr.linkedin.com/in/rmannibucau > Github: https://github.com/rmannibucau > > > > 2013/11/3 Howard W. Smith, Jr. <smithh032...@gmail.com>: > > okay, and one last question, is there a bit more documentation on the > > following, so we can know what to expect, and the implementation is quite > > sound, working as designed and no known issues with the following? > > > > <ul> > > <li>default: the first is used while possible and others datasources are > > just backup, this is typically the failover case</li> > > <li>random: any datasource of the list is used</li> > > <li>reverse: between two call to a method the list is reversed</li> > > <li>round-robin[%N]: round robin between datasources, you can specify how > > many step you browse between two calls using N (default is 1)</li> > > </ul> > > > > i saw the limitations on the referenced pages (dynamic datasources), but > I > > didn't see any known issues in your/Romain's post/blog. > > > > please excuse my ignorance, if I have not heard or seen much chatter > about > > this on the mail list. I usually try to pay attention to almost all tomee > > emails, especially those that interest me the most. :) > > > > > > > > > > On Sun, Nov 3, 2013 at 10:22 AM, Romain Manni-Bucau > > <rmannibu...@gmail.com>wrote: > > > >> If you dont use it then thats ok. We close the pool then, not > connections > >> Le 3 nov. 2013 16:19, "Howard W. Smith, Jr." <smithh032...@gmail.com> a > >> écrit : > >> > >> > FYI, I just stopped my local tomee, and recognized that my > @Application > >> > @PreDestroy has my code that stops Apache Derby prior to main and > >> fallback > >> > datasources are closed. > >> > > >> > is this okay? > >> > > >> > Nov 03, 2013 10:12:48 AM org.apache.catalina.core.StandardServer await > >> > INFO: A valid shutdown command was received via the shutdown port. > >> Stopping > >> > the Server instance. > >> > Nov 03, 2013 10:12:48 AM org.apache.coyote.AbstractProtocol pause > >> > INFO: Pausing ProtocolHandler ["http-nio-8080"] > >> > Nov 03, 2013 10:12:48 AM org.apache.coyote.AbstractProtocol pause > >> > INFO: Pausing ProtocolHandler ["ajp-bio-8009"] > >> > Nov 03, 2013 10:12:48 AM org.apache.catalina.core.StandardService > >> > stopInternal > >> > INFO: Stopping service Catalina > >> > Nov 03, 2013 10:12:48 AM pf.LoginFilter destroy > >> > INFO: ... > >> > Nov 03, 2013 10:12:48 AM > org.apache.openejb.assembler.classic.Assembler > >> > destroyApplication > >> > INFO: Undeploying app: > >> C:\apache-tomee-plus-1.6.0-SNAPSHOT\webapps\mcmsweb > >> > Nov 03, 2013 10:12:48 AM pf.ApplicationScopeBean destroy > >> > INFO: BEGIN > >> > Nov 03, 2013 10:12:48 AM utils.database.DerbyUtil shutdown > >> > INFO: DerbyUtil.java: shutdown() invoked > >> > Nov 03, 2013 10:12:48 AM utils.database.DerbyUtil loadDriver > >> > INFO: DerbyUtil.java: loadDriver(): Loaded driver > >> > (org.apache.derby.jdbc.EmbeddedDriver) successfully > >> > Nov 03, 2013 10:12:48 AM utils.database.DerbyUtil shutdown > >> > INFO: DerbyUtil.java: shutdown(): Derby shut down normally > >> > Nov 03, 2013 10:12:48 AM pf.ApplicationScopeBean destroy > >> > INFO: gCalUtil.shutdown() completed > >> > Nov 03, 2013 10:12:48 AM pf.ApplicationScopeBean destroy > >> > INFO: jodConverter.shutdown() completed > >> > Nov 03, 2013 10:12:48 AM mdb.ApplicationMessageBean shutdown > >> > INFO: ApplicationMessageBean.shutdown() BEGIN > >> > Nov 03, 2013 10:12:48 AM mdb.ApplicationMessageBean shutdown > >> > INFO: ApplicationMessageBean.shutdown() END > >> > Nov 03, 2013 10:12:48 AM pf.ApplicationScopeBean destroy > >> > INFO: applicationMessageBean.shutdown() completed > >> > Nov 03, 2013 10:12:48 AM pf.ThreadLocalImmolater immolate > >> > INFO: immolated 305 values in ThreadLocals > >> > Nov 03, 2013 10:12:48 AM pf.ApplicationScopeBean destroy > >> > INFO: END > >> > Nov 03, 2013 10:12:48 AM org.apache.activemq.ra.ActiveMQEndpointWorker > >> stop > >> > INFO: Stopping > >> > Nov 03, 2013 10:12:48 AM org.apache.activemq.ra.ActiveMQEndpointWorker > >> stop > >> > INFO: Stopping > >> > [EL Info]: 2013-11-03 > >> > > >> > > >> > 10:12:48.682--ServerSession(1206174612)--file:/C:/apache-tomee-plus-1.6.0-SNAPSHOT/webapps/mcmsweb/WEB-INF/classes/_mcmsPU > >> > logout successful > >> > Nov 03, 2013 10:12:49 AM org.apache.catalina.loader.WebappClassLoader > >> > clearReferencesThreads > >> > SEVERE: The web application [/mcmsweb] appears to have started a > thread > >> > named [PoolIdleReleaseTimer] but has failed to stop it. This is very > >> likely > >> > to create a memory leak. > >> > Nov 03, 2013 10:12:49 AM org.apache.catalina.loader.WebappClassLoader > >> > clearReferencesThreads > >> > SEVERE: The web application [/mcmsweb] appears to have started a > thread > >> > named [ActiveMQ VMTransport: vm://localhost#5-5] but has failed to > stop > >> it. > >> > This is very likely to create a memory leak. > >> > Nov 03, 2013 10:12:49 AM org.apache.catalina.loader.WebappClassLoader > >> > clearReferencesThreads > >> > SEVERE: The web application [/mcmsweb] appears to have started a > thread > >> > named [ActiveMQ VMTransport: vm://localhost#5-6] but has failed to > stop > >> it. > >> > This is very likely to create a memory leak. > >> > Nov 03, 2013 10:12:49 AM org.apache.catalina.loader.WebappClassLoader > >> > clearReferencesThreads > >> > SEVERE: The web application [/mcmsweb] appears to have started a > thread > >> > named [ActiveMQ VMTransport: vm://localhost#4-4] but has failed to > stop > >> it. > >> > This is very likely to create a memory leak. > >> > Nov 03, 2013 10:12:57 AM org.apache.coyote.AbstractProtocol stop > >> > INFO: Stopping ProtocolHandler ["http-nio-8080"] > >> > Nov 03, 2013 10:12:57 AM org.apache.coyote.AbstractProtocol stop > >> > INFO: Stopping ProtocolHandler ["ajp-bio-8009"] > >> > Nov 03, 2013 10:12:57 AM > org.apache.openejb.server.SimpleServiceManager > >> > stop > >> > INFO: Stopping server services > >> > Nov 03, 2013 10:12:57 AM org.quartz.core.QuartzScheduler shutdown > >> > INFO: Scheduler OpenEJB-TimerService-Scheduler_$_OpenEJB shutting > down. > >> > Nov 03, 2013 10:12:57 AM org.quartz.core.QuartzScheduler standby > >> > INFO: Scheduler OpenEJB-TimerService-Scheduler_$_OpenEJB paused. > >> > Nov 03, 2013 10:12:57 AM org.quartz.core.QuartzScheduler unregisterJMX > >> > INFO: Scheduler unregistered from name > >> > > >> > > >> > 'quartz:type=QuartzScheduler,name=OpenEJB-TimerService-Scheduler,instance=OpenEJB' > >> > in the local MBeanServer. > >> > Nov 03, 2013 10:12:57 AM org.quartz.core.QuartzScheduler shutdown > >> > INFO: Scheduler OpenEJB-TimerService-Scheduler_$_OpenEJB shutdown > >> complete. > >> > Nov 03, 2013 10:12:57 AM > org.apache.openejb.assembler.classic.Assembler > >> > destroyApplication > >> > INFO: Undeploying app: openejb > >> > Nov 03, 2013 10:12:57 AM > org.apache.openejb.assembler.classic.Assembler > >> > destroyResource > >> > INFO: Closing DataSource: main > >> > Nov 03, 2013 10:12:57 AM > org.apache.openejb.assembler.classic.Assembler > >> > destroyResource > >> > INFO: Closing DataSource: fallback > >> > Nov 03, 2013 10:12:57 AM > org.apache.openejb.assembler.classic.Assembler > >> > destroyResource > >> > INFO: Stopping ResourceAdapter: Default JMS Resource Adapter > >> > Nov 03, 2013 10:12:57 AM > >> > org.apache.openejb.resource.activemq.ActiveMQResourceAdapter stop > >> > INFO: Stopping ActiveMQ > >> > Nov 03, 2013 10:12:58 AM > >> > org.apache.openejb.resource.activemq.ActiveMQResourceAdapter stopImpl > >> > INFO: Stopped ActiveMQ broker > >> > Nov 03, 2013 10:12:58 AM > org.apache.openejb.assembler.classic.Assembler > >> > destroyResource > >> > INFO: Closing DataSource: Default Unmanaged JDBC Database > >> > Nov 03, 2013 10:12:58 AM org.apache.coyote.AbstractProtocol destroy > >> > INFO: Destroying ProtocolHandler ["http-nio-8080"] > >> > Nov 03, 2013 10:12:58 AM org.apache.coyote.AbstractProtocol destroy > >> > INFO: Destroying ProtocolHandler ["ajp-bio-8009"] > >> > > >> > > >> > > >> > On Sun, Nov 3, 2013 at 9:55 AM, Howard W. Smith, Jr. < > >> > smithh032...@gmail.com > >> > > wrote: > >> > > >> > > okay, i set it up as your post demonstrated, I tested already, and I > >> see > >> > > no issues. it's time to test this in production. :) > >> > > > >> > > thanks romain! like i said in the other thread, I wish I knew about > >> this > >> > > earlier. > >> > > > >> > > > >> > > > >> > > On Sun, Nov 3, 2013 at 9:16 AM, Howard W. Smith, Jr. < > >> > > smithh032...@gmail.com> wrote: > >> > > > >> > >> So, the following replaces service-jar.xml (as per your post)? > >> > >> > >> > >> <Resource id="jdbc/ds" type="DataSource" > provider="RoutedDataSource"> > >> > >> router = failover-router > >> > >> </Resource> > >> > >> > >> > >> and if I wanted to use the 'strategy' parameter, I would add to > >> Resource > >> > >> as demonstrated below? > >> > >> > >> > >> <Resource id="jdbc/ds" type="DataSource" > provider="RoutedDataSource"> > >> > >> router = failover-router > >> > >> strategy = random > >> > >> </Resource> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> On Sun, Nov 3, 2013 at 8:58 AM, Romain Manni-Bucau < > >> > rmannibu...@gmail.com > >> > >> > wrote: > >> > >> > >> > >>> Hi > >> > >>> > >> > >>> Failover is native but to customiee the algo you can code anything > >> you > >> > >>> want > >> > >>> > >> > >>> Tomee.xml is openejb.xml > >> > >>> > >> > >>> Service-jar.xml is today useless (see my post) > >> > >>> Le 3 nov. 2013 14:55, "Howard W. Smith, Jr." < > smithh032...@gmail.com > >> > > >> > a > >> > >>> écrit : > >> > >>> > >> > >>> > First of all, thanks Romain for recommending the following, and > for > >> > >>> that I > >> > >>> > will gladly start a new thread. :) > >> > >>> > > >> > >>> > TomEE/OpenEJB and failover of datasources[1] > >> > >>> > > >> > >>> > which references > >> > >>> > > >> > >>> > [OpenEJB] Dynamic Datasource[2] > >> > >>> > > >> > >>> > but I found the following TomEE example: > >> > >>> > > >> > >>> > [TomEE] Dynamic Datasource Routing[3] > >> > >>> > > >> > >>> > So, before I begin, my questions are as follows: > >> > >>> > > >> > >>> > 1. I recognized that failover[1] says that the idea is to > 'reuse' > >> > >>> dynamic > >> > >>> > datasource. Does this mean that we should code openejb[2] or > >> tomee[3] > >> > >>> > dynamic datasource, first, and then reference accordingly via > >> > >>> failover[1]? > >> > >>> > > >> > >>> > 2. or failover[1] requires no coding on our part? only developer > >> > needs > >> > >>> to > >> > >>> > setup the failover 'config'? > >> > >>> > > >> > >>> > 3. also, tomee[3] dynamic datasource routing recommends > openejb.xml > >> > >>> > (instead of tomee.xml). can openejb.xml cofiguration be placed > in > >> > >>> > tomee.xml, too, or not? > >> > >>> > > >> > >>> > 4. okay, never mind, I was abouto ask for some clarification > about > >> > >>> > META-INF/org.router/service-jar.xml, but I 'found' > service-jar.xml > >> on > >> > >>> > trunk[4]. :) > >> > >>> > > >> > >>> > > >> > >>> > > >> > >>> > [1] > >> > >>> > > >> > >>> > > >> > >>> > >> > > >> > http://rmannibucau.wordpress.com/2013/04/26/tomeeopenejb-and-failover-of-datasources/ > >> > >>> > > >> > >>> > [2] http://tomee.apache.org/dynamic-datasource.html > >> > >>> > > >> > >>> > [3] > >> > >>> > > >> > >>> > > >> > >>> > >> > > >> > http://tomee.apache.org/examples-trunk/dynamic-datasource-routing/README.html > >> > >>> > > >> > >>> > [4] > >> > >>> > > >> > >>> > > >> > >>> > >> > > >> > http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/dynamic-datasource-routing/src/main/resources/META-INF/org.router/service-jar.xml > >> > >>> > > >> > >>> > >> > >> > >> > >> > >> > > > >> > > >> >