Hola:
Usa un ServletContextListener para cargar el valor de la base de datos
http://www.mkyong.com/servlet/what-i...tener-example/ y para salvarlo cuando se termine le aplicación.
En el contextInitialized lee el contador de base de datos y guardalo en una propiedad "Application Scope". A partir de ahí puedes consultarla en cualquier momento e incrementarla en esa misma Application Scope.
En el contextDestroyed, lee el valor de esa propiedad Application Scope y guardala en base de datos.
Quizás esto te sea de interés para las propiedades Application Scope
http://chuwiki.chuidiang.org/index.p...lication_scope
Para evitar posibles colisiones si varios clientes acceden a la vez, haz la lectura de la propiedad application scope su incremento y el guardado de la misma incrementa en el application scope en un método synchronized.
En cualquier caso, si ese contador que pretendes usar es un id de base de datos, lo suyo es usar un autoincremente o sequence de base de datos y no encargarte tú de ello en tu código.
Se bueno.