Apache Lenya — необычная opensource CMS на Java. Cms на java
По пути Java, Linux и Open Source: Список CMS на Java
- Создана на стеке Java-технологий
- Open Source
- Легко разворачивается
- Имеет развитую и относительно простую систему шаблонов
- Более или менее легко интегрируется с другими веб-приложениями
- Проста в освоении для "нетехнических" людей, которые будут наполнять контент
В качестве первого шага на пути к поиску наиболее подходящего кандидата, я поспрашивал у могучего Интернета, какие вообще есть открытые CMS, на Джаве писанные. Оказалось, что как и любых других CMS, решений на базе Java уже вагон и маленькая тележка, причем открытых. Этот список найденных CMS я тут и оставлю. В первую очередь это, конечно, для себя любимого, но может он будет полезен и ещё кому-нибудь.
Список я разделил на две части. В первом списке главные кандидаты. Это те CMS, с которыми я уже успел немного познакомиться: какие-то разворачивал и тыкал ранее, а какие-то просто внимательно изучал на официальных сайтах и они мне на первый взгляд понравились. Во втором списке системы, в которых я не особо уверен, потому что пока не уделил им достаточно внимания. Возможно, с течением времени эти списки будут пополняться или между ними будут происходить перестановки.
Также, вероятно, я буду периодически писать в блог различные заметки об опробованных CMS, а на этой странице повтыкаю ссылки на эти заметки.
Итак, списки.
Главные претенденты:
Запасной состав: Многие CMS из этих списков имеют версии Enterprise и Community, которые, соответственно, распространяются под разными лицензиями: закрытой и открытой. Также, некоторые кандидаты являются не только WCMS, а большими разухабистыми ECMS (как, например, Alfresco) с возможностями WCMS. А вот в запасной список наоборот могли закрасться те, которые вообще не умеют WCMS, а являются к примеру только DMS.Apache Lenya — необычная opensource CMS на Java / Хабр
В комментариях к топику Spring в действии — пробуем opensource CMS на Java я обмолвился об Apache Lenya, одной из opensource CMS на Java, и меня попросили написать о ней подробнее.Почему Apache Lenya
«Почему CMS на Java?» — первый вопрос, который у меня возник, когда поступили требования от заказчика. Ответ оказался простым: заказчик, крупная корпорация, имел опыт разработки проектов на Java, поэтому доверял ей больше всего. «Java EE» звучит для уха бизнесмена серьёзнее и надёжнее, чем, скажем, PHP. Как обстоят дела с надёжностью и серьёзностью на самом деле не суть важно, но всё же стоит учитывать, что крупные корпорации доверяют продуктам других крупных корпораций. Итак, мы в компании стали искать CMS Java. Оказалось, что их существует не так уж и мало, как платных, так и свободно-распространяемых. Подробнее можно посмотреть здесь в Википедии После анализа лицензий, а нам нужно было серьёзно «допиливать» CMS под нужды заказчика, выбор остановился на нескольких кандидатах: Nuxeo EP, Daisy, Hippo CMS, Alfresco и собственно Apache Lenya. Все были опробованы. После анализа исходных кодов и оценки сложности доработки мы решили остановится на Apache Lenya. Эта CMS предоставляла самые широкие возможности по изменению исходного кода, которые были легко доступны. Благо лицензия Apache License позволяла менять код и использовать потом продукт в коммерческих целях. Возникшие по началу проблемы были решены с помощью небольшого, но достаточно активного комьюнити.Возможности Apache Lenya
Apache Lenya предоставляет стандартные для CMS возможности (у меня есть опыт работы только Joomla, поэтому большая часть сравнений с ней):- WYSIWYG-редактор содержимого. Даже 2: Kupu и BXE. Легко добавляется более привычный FCKEditor.
- Редактор форм для случаев, когда обычный WYSIWYG-редактор не справляется
- Блокировка редактируемых страниц для предотвращения ситуаций, когда одна и та же страница редактируется несколькими пользователями
- Интернационализация
- Задание расписания на публикацию содержимого
- Перемещение, копирование, архивация, удаление как отдельных страниц, так отдельных частей сайта
- XHTML+CSS для разделения самого содержимого и внешнего вида
- Возможность перенести страницы в архив
- Разграничение прав доступа пользователей и групп пользователей к различным страницам или частям сайта
- Интегрированный поиск по сайт (Apache Lucene)
- Контроль версий. Любую отредактированную страницу можно откатить на несколько ревизий назад
- Редактируемый жизненный цикл страниц. Одно- и двухэтапный цикл «Черновики-Опубликованные» включены в поставку
- Разделение сайта на секции: Разработка, Опубликованное и Вспомогательное (Staging)
- Все операции записываются в журнал операций
- Конфигурационные данные хранятся в файлах. При желании можно подменить классы, обеспечивающие чтение/запись данных, на классы, работающие с базой данных
- Идентификация пользователей по LDAP
- Концепция «Публикаций»
- Собирается с помощью Apache Ant
- Apache Cocoon
Apache Cocoon
Apache Cocoon (оф. сайт) — фреймворк для веб-разработки. Имеет общие черты со Spring Framework, когда тот был ещё версии 2 или ещё моложе. Помимо всего прочего, стоит отметить, на мой взгляд, две главные особенности Кокона: наличие IoC контейнера и концепцию «каналов» (pipelines). У него есть много других примечательных особенностей, но именно эти две мне понадобились при доработке Apache Lenya. Что такое Inversion of Control, думаю, описывать не стоит, а вот про «каналы» стоит сказать пару слов. «Каналы» — это своеобразная имплементация MVC паттерна. XML-rонфигурация выглядит примерно так:<?xml version="1.0" encoding="iso-8859-1"?><map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0"><!-- later, respond to *.pdf requests with our docs processed by doc2pdf.xsl --> <map:match pattern="*.pdf"> <map:generate src="{1}.xml"/> <map:transform src="doc2pdf.xsl"/> <map:serialize type="fo2pdf"/> </map:match> </map:pipeline> </map:pipelines></map:sitemap>
* This source code was highlighted with Source Code Highlighter. Как видно, в мэппинге есть три основных этапа создания страниц:- Генерация
- Трансформация
- Сериализация
Для реализации IoC-контейнера Apache Cocoon использует уже закрытый на данный момент фреймворк Apache Avalon. Вся конфигурация находится в файле cocoon.xconf. Здесь собрано почти всё: компоненты, источники данных, объявление модулей (Cocoon имеет гибкую систему подключаемых модулей) и прочее. Документации по всему это в Интернете не так много, поэтому чуть более подробно о компонентах. Концепция компонентов выглядит примерно так: несколько компонентов (component) объединяются по признаку роли (role), объявляется имплементация роли по умолчанию, а в Java-классе уже можно использовать роль и конкретную её имплементацию. Роли являются интерфейсами, а компоненты — это конкретные классы. Конкретные листинги файлов приводить не буду, они очень большие. Детали работы Apache Cocoon и Avalon требуют отдельной статьи.
Установка Apache Lenya
После скачивания apache-lenya-2.0.3-src.zip и его распаковки, которая может занять продолжительное время из-за большего числа файлов, его необходимо скомпилировать. Тут начинаются самые большие «танцы с бубном». Версию 2.0.2 мне удалось сбилдить, исполнив в корне:>build build-cocoon>build build-cocoon>build Это не описка, первую команду надо выполнить два раза. Для версии 2.0.3 всё оказалось намного сложнее. Во-первых, в директории externals\cocoon_2_1_x\lib\optional надо обновить xalan-2.7.1.jar, чтобы он содержал package org.apache.xpath, и добавить serializer.jar из дистрибутива xalan-j_2_7_1-bin.zip. Кстати, после обновления xalan-2.7.1.jar могут возникнуть ошибки при компиляции, тогда надо искать другой xalan-2.7.1.jar. Я брал его из репозитория maven, а сериалайзер из дистрибутива Xalan. Далее пытаемся сбилдить Cocoon. Для этого выполняем в корне:build.bat build-cocoon -lib externals/cocoon_2_1_x/lib/optional Раза с 3-го или даже с 4-го билд должен пройти успешно. Параметр -lib externals/cocoon_2_1_x/lib/optional обязателен, потому что некоторые библиотеки с ant tasks лежат там, а некоторые библиотеки необходимы для компиляции. Затем для пользователей Windows необходимо поставить GnuWin32 (можно взять отсюда), добавить в PATH из переменных окружения директорию, куда установился GnuWin32. Это необходимо, чтобы по ходу сборки была выполнена команда patch В итоге, командаbuild -lib externals/cocoon_2_1_x/lib/optional должна закончиться волшебным сообщением BUILD SUCCESSFUL. Если что-то не получилось, то можно дополнительно спросить меня или поискать ответы в почтовом архиве
Запуск Apache Lenya
Запуск у меня тоже не прошёл плавно. Сначала мне пришлось скопировать jms.jar (javax.jms package) и jta-1.1.jar (javax.transaction package) в build\lenya\webapp\WEB-INF\lib\ (надо это будет поправить в основной ant'овской сборке), и только после этого Apache Lenya успешно стартовал:Запускается Lenya с помощью файла lenya.bat или lenya.sh По умолчанию используется контейнер сервлетов Jetty. Также возможен запуск под Tomcat (лично протестировано). Более подробно об этом можно прочитать на официальном сайте. Apache Lenya частично переведён на русский язык. Не локализованные надписи можно перевести, дописав нужные данные в файлах интернационализации: $LENYA_HOME$\src\webapp\lenya\resources\i18n
Создание новой публикации Apache Lenya
Для создания своей публикации необходимо выполнить следующее. На главной странице нажимаем 'Create publication', вводим идентификатор (будущий контекст) и имя публикации:После создания нажимаем на ссылку на публикацию и попадаем на страницу со свойствами публикации:
Выбираем 'Login for authoring' (позволяет редактировать содержимое сайта и конфигурацию сайта) Логинимся как lenya (пароль levi) Выбираем что сделать: экспортировать страницы по умолчанию или не создавать никаких страниц:
Дальше пользователем lenya можно создавать страницы, их редактировать и отправлять на утверждение. В меню «Редактировать» можно создавать страницы, а в меню «Техпроцесс» управлять состоянием страниц:
Пользователь alice (пароль levi) имеет роль рецензиста и имеет права на публикацию страниц. После публикации страницы появляеются на Live View (или закладка «Опубликовано») К справке, данные о пользователях, группах и ролях хранятся в \build\lenya\webapp\lenya\pubs\default\config\access-control\passwd\ Конечно же, их можно менять через веб-интерфейс, закладка 'Admin'.
Выводы
Apache Lenya — гибкая CMS на Java, имеющая в основе Apache Cocoon, а следовательно и все его возможности, и распространяемая под лицензией Apache License. Данная CMS обладает широкими возможностями, как говорится, «прямо из коробки», а функциональность может быть легко расширена написанием дополнительных модулей. Документации и руководств в Интернете немного, но есть небольшое активное сообщество. При определённых условиях Lenya можно рекомендовать к использованию. В данной статье рассмотрены лишь основы и часть возможностей Apache Lenya. Если у кого-то будет интерес к этой теме, я могу продолжить описание этой необычной CMS.Список ресурсов
- Официальный сайт Apache Lenya http://lenya.apache.org/
- Официальный сайт Apache Cocoon http://cocoon.apache.org/
- Почтовый архив Apache Lenya http://mail-archives.apache.org/mod_mbox/lenya-user/
- GnuWin32 http://gnuwin32.sourceforge.net/packages/patch.htm
- Список CMS на Java в Википедии
habr.com
java - Open Source Java CMS
Во-первых, могу ли я утверждать, что это вполне разумный вопрос, учитывая важность веб-технологий CMS, на которых работает большая часть WWW, и по правде говоря, многие люди, знакомые с Java, поскольку есть серьезные проблемы с все из многих (все же популярных) основанных на PHP систем, таких как Drupal, Wordpress и Joomla, включая:
-
невозможность хорошо интегрироваться с графическим дизайном унифицированного моделирования (UML)
-
массовое использование строк фристайла в качестве ключей массива хэшей (а не как общесистемные, общие, предварительно определенные строковые константы) в их стиле программирования, похороны структуры данных как жесткие соглашения в хэш-картах и повсеместно нарушая фундаментальный принцип "Не повторяй себя" (DRY), вместо использования многоразовой инкапсуляции с объектной ориентацией
-
следовательно, более низкая интеграция с IDE и подсказкой IDE, чем Java CMS API, позволит.
Существует очень хороший список Java CMS:
http://en.wikipedia.org/wiki/List_of_content_management_systems#Java
Сайт dotCMS сравнивает свою популярность со своими основными конкурентами Java CMS: Magnolia, Hippo, Jahia.
http://www.dotcms.com/images/carousel/banner/graph.png
Интересно, что OpenCMS не делает этот список: http://www.opencms.org/
Имеется инструмент сравнения CMS: http://www.cmsmatrix.org/
CMSmatrix позволяет легко сравнивать функции в более чем 1200 контенте продуктов системы управления.
Тот факт, что есть 1200, указывает на то, что спрашивать других о советах или отзывах о своем опыте с вариациями Java CMS справедливо, так как трудно проверить все варианты.
Насколько я могу судить, dotCMS - это самый быстрорастущий и лучший вариант в зависимости от ваших требований.
Наконец, позвольте мне в своем ответе предложить наблюдение за вопросом о Java и CMS для PHP. Мой основной язык - это Java, всегда, по крайней мере, до некоторой степени, в соответствии с графической машиной, основанной на модели UML (хотя бы иногда с помощью обратного инженерного мониторинга), но я много лет работал с PHP и Drupal на PHP в течение многих лет, один из "большая тройка" вместе с Joomla и Wordpress.
Насколько я могу судить, ни один из вариантов Java CMS не приближается к набору функций Drupal, когда рассматривается массивный набор модулей, или (как только вы с ним знакомы) легкость настройки простые или очень сложные корпоративные сайты CMS с Drupal. В частности, модуль Views в сочетании с простотой создания настраиваемых типов контента очень упрощает создание очень богатых показов страниц со структурированными данными, отношениями и богатыми отчетами о просмотре запросов. Я не знаю ни одной Java CMS, у которой есть что-то, что может даже приблизиться к совпадению интерфейса администратора Drupal Views для создания отчетов о представлении пользовательских запросов. Я благодарен, что Drupal существует, и время от времени он помогал мне прокормить себя и моего ребенка, и я даже использую его для отслеживания моих проектов разработки программного обеспечения для Enterprise Java, и я использую его по иронии судьбы для образовательных веб-сайтов, пропагандирующих унифицированный язык моделирования (UML ) и UML-управляемой Java.
Кроме того, аспекты CMS моих собственных веб-приложений Java намеренно имитируют Drupal.
Я нисколько не скрываю того факта, что я абсолютно не выдерживаю основную модель программирования Drupal, API-интерфейсы предоставленных модулей и то, что я считаю ужасающим недостатком объектной ориентации в ней, и стиль программирования, который включает почти каждый отдельный грех, который я хотел бы, чтобы преподаватель не поощрял ни одного 101 курса программирования. Мне не нравится кодировать модули, связанные с его API, и система крючков Drupal совершенно не нужна и не имеет преимуществ перед простыми шаблонами регистрации интерфейса, которые знал бы любой программист Java, и позволял бы компилятору OO.
Я плачу каждый рабочий день за отсутствие хорошо продуманной Java-CMS, которая в противном случае может соответствовать Drupal (всегда оставаясь благодарной за то, что можно сделать с Drupal).
С помощью технологий горячей перезагрузки для Java, таких как JRebel, теперь должно быть возможно, что CMS на Java, которую так же легко развить против CMS с помощью PHP, но с достойным и правильно объектно-ориентированным API, и я надеюсь, что один Java CMS наконец-то действительно взлетит и развивается как активное сообщество разработчиков, так как на PHP-основе, такие как Drupal, есть.
qaru.site
Бесплатная open-source CMS под Google App Engine for Java / Хабр
Здравствуй HabraUser. Сегодня я хочу рассказать о бесплатной open-source CMS написанной специально под Google App Engine for Java Vosao CMS ™О проекте
Сайт проекта www.vosao.org Исходники можно скачать на code.google.com/p/vosao/Vosao CMS включает в себя все необходимые атрибуты современных CMS, таких как: visual (WYSIWYG) editing, MediaWiki syntax support, friendly URLs, internationalization, parent/child page system, nested and programmable templates, commenting (with moderation), site import/export, content versioning, security and group management, resource management, reCaptcha, Google Analytics, plugins, input forms
Так же вы можите сами написать необходимый вам плугин
Радует что CMS использует jquery.
Приятно то, что проект развивается людьми с Российскими корнями.
И так приступим к установке Vosao CMS на GAE
1. Скачаем и установим GAE Java SDK code.google.com/appengine/downloads.html (надеюсь у вас на компьютере уже стоит java машина версии 6) 2. Скачаем и распакуем Vosao CMS WAR файл. 3. Поменяем в файле WEB-INF/appengine-web.xml application name на имя вашего приложения на GAE 4. Зальём CMS на GAE: (Linux) $ {SDK bin directory}appcfg.sh update {укажите директорию с распакованной CMS} (Windows) > {SDK bin directory}appcfg.cmd update {укажите директорию с распакованной CMS}
После установки глянул в панель управления облаком:
Number of Instances Average QPS Average Latency Average Memory 3 total 0.006 40.0 ms 52.8 MBytes
Очень обрадовало, что на бесплатном аккаунте гугл выделил мне целых 3 инстанса!!!
Настройка Vosao CMS
Демо версию можно пощупать онлайн. Заходим на страницу логина Вводим username: [email protected] and password: admin Выбираем Русский язык и наслаждаемся =)Посмотрим конфигурацию CMS
Очень хорошая функция экспорта импорта сайта, очень полезно при обновлении и переезде на другой хостинг.
В дефолтной поставке идут всего 2 плугина Формы и Ссылки SEO. Остальные плугины придётся устанавливать самому, благо процесс очень простой.
Так же можно использовать Picasa для хранения медиа контента.
Список сайтов использующих Vasao CMS
www.velor.bizwww.portalteam.netwww.vosao.orgwww.veltema.jpwww.unabo.comelexhome.appspot.comwww.galichanka.infowww.androidsoft.orgwww.ebstrada.comwww.formreturn.comwww.taksee.netwww.mecatran.comwww.caveallamiantonograzie.infoP.S. Как сейчас модно писать, Я не являюсь разработчиком этой CMS и не связан с ними. Просто использую хороший продукт.
habr.com
java - Java CMS GC Behaviors
вы не можете просто игнорировать пространства оставшихся в живых при использовании CMS. CMS не является компактирующим сборником, а это означает, что если вы (или JVM) ошибочно допустили порог владения, то вы будете постепенно рассеивать объекты, которые будут увеличивать скорость, с которой налагаются фрагменты, которые будут вызывать время, когда CMS принудительно, потому что имеет недостаточное смежное свободное пространство, доступное для обработки рекламных акций из оставшихся в живых помещений, которые будут заставлять полный цикл gc без предварительного предупреждения, и, следовательно, это полная вещь в одной паузе STW. Сколько времени это займет, будет зависеть от размера вашей кучи, но одна вещь весьма вероятна, она будет на порядки дольше, чем обычная коллекция eden.
Здесь есть еще несколько вещей:
- STW-паузы происходят не только от CMS, но и от коллекционера молодых людей.
- CMS имеет 2 фазы STW (отметка и примечание) и 3-4 параллельные фазы, 1-я фаза STW (отметка) строго односторонняя, что может вызвать проблемы (пример обсуждения этого здесь)
- Вы можете контролировать отсутствие потоков, обрабатывающих параллельные фазы.
- Вам нужно понять, как долго длится объект, это может означать использование -XX:+PrintTenuringDistribution, или вы можете просто смотреть его с помощью visualgc, как вы это делали.
- Затем вы можете настроить это с помощью -XX:SurvivorRatio, чтобы контролировать размер оставшихся в живых объектов относительно eden и -XX:MaxTenuringThreshold, чтобы контролировать, как часто объект может пережить молодую коллекцию до того, как она будет нанята.
- -XX:CMSInitiatingOccupancyFraction может использоваться для управления CMS в отношении того, насколько полно он должен быть до того, как он запустит фазу CMS (получите это неправильно, и вы сильно перепутаете)
В конечном счете вам нужно понять, какой сборщик приостанавливается, как часто, как долго и какие-либо аномальные причины этой паузы. Затем вам нужно сравнить это с размером каждого поколения, чтобы узнать, можете ли вы настроить параметры, чтобы свести к минимуму число (и/или продолжительность) пауз.
Помните, что это может произойти из-за необходимости проведения длительных тестов, чтобы увидеть, ухудшается ли оно с течением времени. Также без повторяемой автоматизированной рабочей нагрузки почти невозможно сделать какие-либо твердые выводы относительно того, действительно ли вы улучшили ситуацию.
Одним из хороших источников сводной информации о внутренних элементах является блог Джона Масамицу. Еще одна хорошая презентация: Настройка GC в виртуальной машине Java HotSpot.
qaru.site