okay, good. that shows that I understood your blog/post, correctly, and add this to my app, accordingly. thanks!
On Sun, Nov 3, 2013 at 4:20 PM, Romain Manni-Bucau <rmannibu...@gmail.com>wrote: > Failover is a facase over normal resources. Only these resource can/should > be pooled > Le 3 nov. 2013 21:51, "Howard W. Smith, Jr." <smithh032...@gmail.com> a > écrit : > > > 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 > > > >> > >>> > > > > >> > >>> > > > >> > >> > > > >> > >> > > > >> > > > > > >> > > > > >> > > > > > >