Знаете ли вы пошаговое руководство об установке кластера Liferay в Glassfish?Liferay Cluster
ответ
Google нашел меня это поподробнее под названием how-to-install-and-configure-a-liferay-cluster
Наслаждайтесь!
Liferay, являющийся приложением Spring/Hibernate, должно быть агрегированным сервером, большая часть вашей конфигурации кластеризации должна быть секциями кластеризации вашего файла портала (-ext) .properties: конфигурации Hibernate, EHCache и JGroup. Единственная конфигурация сервера приложения должна быть переходом на сеанс, как в любом развертываемом веб-приложении.
Я работаю над той же проблемой или очень похожей - развертывание файла WAR Liferay в кластер из стеклянной рыбы с двумя узлами. Я еще не настроил его правильно, но у меня его успешно развернуто. Возможно, это тоже поможет вам, и мы можем сравнивать заметки.
Вот что я должен был сделать.
Во-первых, земля. GlassFish немного странно для меня в том, как он развертывает WAR. Насколько я понимаю, файлы WAR взорваны где-то агентом-узлом, но вы не получаете доступ к файлам в файлах после их развертывания. Это означает, что при настройке ваших файлов конфигурации (portal -ext.properties) вам нужно будет повторно развертывать каждый раз - и Liferay довольно большой на уровне ~ 73 МБ. Это периодически вызовет исключения PermGen вне пространства и потребует перезагрузки вашего кластера. Поэтому было бы разумно установить опцию JVM для увеличения размера пространства PermGen в стеклянной платке. Существует хорошее объяснение проблемы здесь:
http://www.freshblurbs.com/explaining-java-lang-outofmemoryerror-permgen-space
Этот вариант JVM не решит проблему, но это увеличит задержку между кластерными перезагрузок (GlassFish консоль не работала перезагрузиться, кстати; мы должны были сделать это по командной строке).
Следующий вопрос: где делаются файлы JAR зависимости JAR? Мы работаем в общем кластере с другими службами, поэтому его размещение в папке domains/domain1/lib не будет работать. Мы застряли файлы JAR зависимостей в военном файле liferay, в WEB-INF/lib, и, похоже, это радует.
Дальше: где находится файл переопределения portal-ext.properties? Ответ снова находится в файле warteray war, в WEB-INF/classes. Это также является причиной, по которой нам нужно повторно развертывать каждый раз, когда мы модифицируем свойство, как обсуждалось выше.
Дальше: контекст. По умолчанию liferay пытается развернуть корневой контекст «/». Мы находимся в общей среде, поэтому мы применили WAR к контексту/lr1. В portal-ext.properties мы должны были установить свойство
portal.ctx =/LR1
Следующая: Это не имеет особого смысла использовать встроенный HSQL в кластерной среде; мы создали имя JNDI для нашего пула соединений с использованием GlassFish. Существуют инструкции о том, как это сделать в руководствах по документации Liferay. В portal-ext.properties файле, мы тогда были в состоянии поставить
jdbc.default.jndi.name = JDBC/LiferayPool
Мы также не хотим, чтобы хранить Lucene индексы на файловая система. Мы переопределили эти свойства в портале-ext.свойства файла, чтобы установить, что:
lucene.store.type = JDBC
lucene.store.jdbc.auto.clean.up = истинный
lucene.store.jdbc.dialect.oracle = org.apache.lucene.store.jdbc.dialect.OracleDialect
Аналогичная логика применима к репозиторию JackRabbit; Я в настоящее время имеют следующие свойства настройку (я не знаю, если это верно, но библиотека документов работает):
jcr.jackrabbit.repository.root = WEB-INF/классы/
Мне пришлось поместить файл repository.xml файла jackrabbit в WEB-INF/классы тоже. Этот файл xml сообщает jackrabbit, какие параметры подключения к базе данных использовать (подробнее см. Страницу конфигурации Apache для Jackrabbit). Опять же, я не уверен, что в WEB-INF/классах было правильной идеей, но, вероятно, это должно быть куда-то в WAR-файле или быть в какой-то общей файловой системе для всех узлов вашего кластера, чтобы использовать одни и те же данные ,
Я не запутались с Ehcache еще, но я поставил в собственность спящем:
hibernate.dialect = org.hibernate.dialect.Oracle10gDialect
для нашего оракула дб. Я полагаю, что он использует свойство JDBC по умолчанию выше, чтобы ссылаться на наше соединение с базой данных JNDI.
Понятие переменной «Liferay Home Directory», являющееся «одной папкой над домом сервера», является тем, с чем я все время борюсь, и это заставляет меня иметь ошибки каждый раз, когда отправляется HTTP-запрос, относящийся к/opt/й/лицензия.
Пользователь, в котором работает liferay, так как не имеет разрешения на изменение/выбор, и в любом случае это плохая идея в кластерной среде. Я не уверен, где установка, потому что, когда я смотрю все, что я вижу, это
liferay.home = $ {} resource.repositories.root
и
ресурс .repositories.root = $ {default.liferay.home}
Я не знаю, где default.liferay.home определен еще; все еще работая над этим.
Развертывание liferay в кластерной среде, к сожалению, пока еще не задокументировано, но я надеюсь, что это поможет вам каким-то образом.
Удачи вам!
Если вы посмотрите источник PropsUtil, вы найдете SystemProperties.set ("default.liferay.home", _getDefaultLiferayHome()); Это обнаружение дома-спасателя на базе сервера приложений. Он похож для всех серверов приложений: SystemProperties.get («jetty.home») + «/ .."; Если системное свойство не установлено, оно становится null/.. и это отстой – Priit