my response below...

On Fri, Jun 28, 2013 at 11:45 AM, James Green <[email protected]>wrote:

>
> On boot our application attempts to read data through a JPA EntityManager.
> If the database connection fails at this point the entire application is
> effectively dead.
>

Is there an assumption or history that has informed you that database was
not available at boot/startup of the 'app'?


>
> Is there a way to essentially ask the database layer to retry until the
> connection springs to life?
>

I really don't see the need for this. I would assume that you can do all
you need to do with/in a CDI @ApplicationScoped @PostConstruct; this works
for me, in my app, but I don't have a need to keep trying to test my
database connection or retrieve data from my database connection on startup
(before any users begin connecting to the app).

However, I do have the following @Schedule 'timer' implementation, which
checks an email acct every 2 minutes 'after' the app starts, and there is
code in there that will use JPA to perform SELECT and INSERT operations
against the database... and the assumption is that the database connection
is always valid...after a valid 'start' (which is usually, stop tomee,
deploy WAR, start tomee). When I have power outages, database always starts
successfully when tomee starts via Windows Service when server boots back
up. using apache derby instead of mysql.

/**
 *
 * @author Administrator
 *
 * http://tomee.apache.org/examples-trunk/access-timeout/README.html
 * http://tomee.apache.org/examples-trunk/access-timeout-meta/
 * http://docs.oracle.com/cd/E19798-01/821-1841/gipsz/index.html
 */
@Singleton
@Lock(LockType.WRITE)
@AccessTimeout(value = 2, unit = TimeUnit.MINUTES)
public class EmailRequestBean {

    @Schedule(hour="*", minute="*/2", second="0", persistent=false)
    public void downloadEmailRequests() {

Reply via email to