CMS/CMF-проектов на Java достаточном много, в том числе и с открытым исходным кодом. В качестве примера можно привести как минимум
Hippo и
Liferay CE. Можно глянуть
эту статью на DZone, а так же
соответствующую страницу в англовикипедии.
Моё мнение - под указанный набор пожеланий лучше разрабатывать проект самостоятельно, так как ни одна CMS/CMF не удовлетворит потребностей на 100%. В данном случае напрашивается стек Spring. CMS хороши на начальном этапе, когда нет окончательного понимания, чего хочется от сайта, и какие задачи сайт будет решать, либо, когда задачи сильно примитивны (вроде простых блогов и сайтов-визиток). А решение выбрать CMS для решения каких-то серьёзных задач рано или поздно приведёт к ситуации, когда CMS не будет удовлетворять все потребности. И тут будут варианты: допиливать CMS под свои нужды (что усложнит разработку и поддержку), подставлять какие-то костыли вроде вашего решения (что тоже усложняет процесс разработки и поддержки), либо страдать и пользоваться тем, что есть.