For those of you who always wanted to get the name of the application or the module at runtime in a Java EE application, here is a solution:
@Resource(lookup="java:module/ModuleName") private String moduleName; @Resource(lookup="java:app/AppName") private String applicationName;
It's been there since Java EE 6 and it's easy and portable!
There is also the opportunity to get those names via JNDI lookup
String myModuleName = (String) initialContext.lookup("java:module/ModuleName"); String myApplicationName = (String) initialContext.lookup("java:app/AppName");
If you don't need the names in a field but just in a single method this is the way to go.
The default module name is the base name of an ejb-jar or WAR archive.
The default application name is the base name of an EAR archive.