VisualVM does everything JConcole does, and much more, so the latter is not much of an option. The first drawback is that it requires the JMX ports to be open, which may or may not be an issue for you. The bigger drawback is that it's a GUI tool, so it requires someone to spend time using it. Don't get me wrong, it's a great tool, but for continuous monitoring you need something automated.
https://github.com/psi-probe/psi-probe is another tool I like for monitoring
servlet containers (and which I use in production).
For automation you could create background jobs that use JMX to gather relevant data, and which trigger emails, SMS and/or other alerts as warranted.
BTW, J2EE is a VERY outdated name, it's been called JEE since version 5 came out in 2006 - 12 years ago!