In my experience, this is not often. In all the places where I worked, several domains are used (for each application and for each environment), and this gives you finer control:
- Different applications use different resources.
- APP1 may need a JMS server while APP2 does not
- You can configure domains in different ways.
- APP1 may not have the same needs as APP2
- Applications are isolated
- A heavy request for APP1 will not affect APP2
- The inclusion of APP1 in production will never affect APP2
- If I need to restart APP1 cluster, APP2 service will not be interrupted
- Troubleshooting, log analysis easier
- etc.
The only single-domain approach I can think of is simplified maintenance. For non-critical applications, this may work. But I would not be happy with that.