When it comes to application configuration; there is no golden solution - it typically depends on your development and deployment environment. A Configuration JSR was proposed but it is not part of JavaEE yet - http://javaeeconfig.blogspot.nl/2014/05/java-ee-config-feature-details.html.
TIP: If you are using JBossAS/WildFly; then this post is a good starting point https://community.jboss.org/wiki/HowToPutAnExternalFileInTheClasspath
Following approaches are typically used for application specific configuration management.
Core Modules and property files
- https://community.jboss.org/wiki/HowToPutAnExternalFileInTheClasspath
- http://blog.jyore.com/?p=58
- http://blog.andyserver.com/2013/10/java-jboss-eap-61-power-to-the-properties/
- https://github.com/sabre1041/jboss-properties
Naming service (JNDI)
- http://blog.diabol.se/?p=312
System Properties
- http://blog.andyserver.com/2013/10/java-jboss-eap-61-power-to-the-properties/
- http://blog.chris-ritchie.com/2015/03/inject-external-properties-cdi-java-wildfly.html
Database configuration
CAUTION: As I said before; there is no golden rule. But storing configuration in database can be undesired especially if you are thinking about blue-green deployments.