Apache Lenya — необычная opensource CMS на Java. Cms на java


По пути Java, Linux и Open Source: Список CMS на Java

Давно хотел найти для себя какую-нибудь удобную CMS, а точнее WCMS, которая:
  1. Создана на стеке Java-технологий
  2. Open Source
  3. Легко разворачивается
  4. Имеет развитую и относительно простую систему шаблонов
  5. Более или менее легко интегрируется с другими веб-приложениями
  6. Проста в освоении для "нетехнических" людей, которые будут наполнять контент 
Понятное дело, что ничего идеального не бывает, поэтому просто хочется найти компромиссное решение. Это будет непросто, т.к. я никогда ни с какими CMS не общался достаточно тесно и знаю о них не особо много.

В качестве первого шага на пути к поиску наиболее подходящего кандидата, я поспрашивал у могучего Интернета, какие вообще есть открытые CMS, на Джаве писанные. Оказалось, что как и любых других CMS, решений на базе Java уже вагон и маленькая тележка, причем открытых. Этот список найденных CMS я тут и оставлю. В первую очередь это, конечно, для себя любимого, но может он будет полезен и ещё кому-нибудь.

Список я разделил на две части. В первом списке главные кандидаты. Это те CMS, с которыми я уже успел немного познакомиться: какие-то разворачивал и тыкал ранее, а какие-то просто внимательно изучал на официальных сайтах и они мне на первый взгляд понравились. Во втором списке системы, в которых я не особо уверен, потому что пока не уделил им достаточно внимания. Возможно, с течением времени эти списки будут пополняться или между ними будут происходить перестановки.

Также, вероятно, я буду периодически писать в блог различные заметки об опробованных CMS, а на этой странице повтыкаю ссылки на эти заметки.

Итак, списки.

Главные претенденты:

Запасной состав: Многие CMS из этих списков имеют версии Enterprise и Community, которые, соответственно, распространяются под разными лицензиями: закрытой и открытой. Также, некоторые кандидаты являются не только WCMS, а большими разухабистыми ECMS (как, например, Alfresco) с возможностями WCMS. А вот в запасной список наоборот могли закрасться те, которые вообще не умеют WCMS, а являются к примеру только DMS.

blog.eqlbin.ru

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, поэтому большая часть сравнений с ней):А также не самые обычные:Особенности: Данная концепция позволяет переиспользовать уже созданную структуру сайта (или структуру и данные одной публикации) для новой публикации. Различные публикации могут использовать общую структуру сайта, но содержать различную информацию. Например, есть публикация по умолчанию, default, которая уже содержит в себе шаблоны XSLT, данные о пользователя, группах пользователей и другую служебную информацию. Публикация production наследуется от default. Тогда публикация production имеет такой же внешний вид (благодаря общим XSLT), доступ ко всем пользователям и группам. Однако может переопределить некоторые права пользователей, рендеринг страниц или вообще всё целиком. В общем, достаточно удобная возможность, если надо поддерживать несколько похожих сайтов. Об это web-framework стоит поговорить отдельно чуть более подробно. Он является сердцем Apache Lenya.
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">

  <!-- define the Cocoon processing pipelines -->   <map:pipelines>     <map:pipeline>       <!-- respond to *.html requests with         our docs processed by doc2html.xsl -->       <map:match pattern="*.html">         <map:generate src="{1}.xml"/>         <map:transform src="doc2html.xsl"/>         <map:serialize type="html"/>       </map:match>

      <!-- 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. Как видно, в мэппинге есть три основных этапа создания страниц:
  1. Генерация
  2. Трансформация
  3. Сериализация
В фигурных скобках передаются параметры для генератора. Таким образом достигается гибкость и высокий уровень повторного использования компонентов: с помощью одного и того же генератора и разных трансформаций и сериализаций можно получать широкий спектр форматов выходных данных от банального html до pdf или csv.

Для реализации 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.

Список ресурсов

  1. Официальный сайт Apache Lenya http://lenya.apache.org/
  2. Официальный сайт Apache Cocoon http://cocoon.apache.org/
  3. Почтовый архив Apache Lenya http://mail-archives.apache.org/mod_mbox/lenya-user/
  4. GnuWin32 http://gnuwin32.sourceforge.net/packages/patch.htm
  5. Список CMS на Java в Википедии

habr.com

java - Open Source Java CMS

Во-первых, могу ли я утверждать, что это вполне разумный вопрос, учитывая важность веб-технологий CMS, на которых работает большая часть WWW, и по правде говоря, многие люди, знакомые с Java, поскольку есть серьезные проблемы с все из многих (все же популярных) основанных на PHP систем, таких как Drupal, Wordpress и Joomla, включая:

Существует очень хороший список 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.info

P.S. Как сейчас модно писать, Я не являюсь разработчиком этой CMS и не связан с ними. Просто использую хороший продукт.

habr.com

java - Java CMS GC Behaviors

вы не можете просто игнорировать пространства оставшихся в живых при использовании CMS. CMS не является компактирующим сборником, а это означает, что если вы (или JVM) ошибочно допустили порог владения, то вы будете постепенно рассеивать объекты, которые будут увеличивать скорость, с которой налагаются фрагменты, которые будут вызывать время, когда CMS принудительно, потому что имеет недостаточное смежное свободное пространство, доступное для обработки рекламных акций из оставшихся в живых помещений, которые будут заставлять полный цикл gc без предварительного предупреждения, и, следовательно, это полная вещь в одной паузе STW. Сколько времени это займет, будет зависеть от размера вашей кучи, но одна вещь весьма вероятна, она будет на порядки дольше, чем обычная коллекция eden.

Здесь есть еще несколько вещей:

В конечном счете вам нужно понять, какой сборщик приостанавливается, как часто, как долго и какие-либо аномальные причины этой паузы. Затем вам нужно сравнить это с размером каждого поколения, чтобы узнать, можете ли вы настроить параметры, чтобы свести к минимуму число (и/или продолжительность) пауз.

Помните, что это может произойти из-за необходимости проведения длительных тестов, чтобы увидеть, ухудшается ли оно с течением времени. Также без повторяемой автоматизированной рабочей нагрузки почти невозможно сделать какие-либо твердые выводы относительно того, действительно ли вы улучшили ситуацию.

Одним из хороших источников сводной информации о внутренних элементах является блог Джона Масамицу. Еще одна хорошая презентация: Настройка GC в виртуальной машине Java HotSpot.

qaru.site


Prostoy-Site | Все права защищены © 2018 | Карта сайта