Search code examples
javajakarta-ee

Detect if running in servlet container or standalone


I have a simple problem: I want to configure an object differently based on whether the object is instantiated within a servlet container, or whether it is instantiated in a stand alone app.

The object is a database connection, and I care about setting query timeouts.

The first solution that I can come up with is:

if (insideServletContainer(this.getClass().getClassLoader()) { 
  /// do some servlet specific config
}
else {
 /// do some standalone config
}

The question is, of course, can I write a reliable method of telling whether the class was loaded within a servlet container. It feels like a hack at best.

The second option is to assume that the default case is a stand alone instantiation, set defaults based on stand-alone configuration, and override them within the servlet context.

So, to sum up my question is: Do you know of a good/reliable mechanism if the class was loaded from within a servlet container? If not, I will have to take the second route.

Nick


Solution

  • This seems like a really bad idea. Instead, why don't you allow the class to take parameters, then let the container or app configure it appropriately?