Hi,
with EJB3.1 I would use a SingletonStatelessSessionBean with a @Startup annotation [1] to cache the parsed XML.
The XML should be placed in a DB as CLOB or VARCHAR, this will be also better if you cluster the application.
Refreshing might be done by calling the SLSB or you store a checksum/version/date with the XML and let the SLSB check this by using @Schedule
[1] http://java.sun.com/developer/technicalArticles/JavaEE/JavaEE6Overview_Part3.html