Отдельное веб-приложение для пользовательских компонентов в Moqui

Я читал это во многих местах: «В конечном итоге вы захотите создать свой собственный каталог среды выполнения и сохранить его в своем собственном репозитории исходного кода ...». Кто-нибудь может сказать мне, как это сделать? Что делать, если я не хочу потерять некоторые компоненты OOTB?

В настоящее время я просто планирую иметь отдельное веб-приложение для специально разработанных компонентов. Скажем, я хочу иметь точку монтирования "ootb" для компонентов OOTB и пустую точку монтирования "" для специально разработанных компонентов. Как мне это сделать? Это то, что я пробовал без успеха:

<webapp-list>
    <webapp name="webroot" http-port="8080" https-enabled="false">
        <root-screen host=".*/ootb" location="component://webroot/screen/webroot.xml"/>
    </webapp>
    <webapp name="customroot" http-port="8080" https-enabled="false">
        <root-screen host=".*" location="component://customroot/screen/customroot.xml"/>
    </webapp>
</webapp-list>

Если это не сработает, то я могу придумать еще одно решение: просто иметь запись «customroot» и добавить в нее «webroot» как SubScreenItem. Экран «customroot» будет просто пустым, а мой пользовательский декоратор будет присутствовать на экране «customapps», который будет частью экрана «приложения». И все мои экраны будут использовать экран «customapps».

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

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


person Atul Vani    schedule 22.04.2015    source источник
comment
Может ли кто-нибудь помочь мне в этом?   -  person Atul Vani    schedule 23.04.2015


Ответы (2)


Как объяснялось в другом вопросе StackOverflow, на который вы ссылались (по слову «статья»), элемент веб-приложения, используемый во время выполнения, выбирается на основе контекстного параметра «moqui-name» из файла web.xml для веб-приложения (в или из файла WAR). Если вы не развертываете несколько файлов WAR или других форм веб-приложений, это бесполезно.

То, что вы описываете, будет обрабатываться путем добавления подэкранов в иерархию экранов в нужных точках. Общая идея с иерархией экранов в Moqui заключается в том, что вы можете смонтировать корневые экраны «приложений» с помощью различных средств (см. аннотации к элементу подэкранов или книгу «Создание приложений с Moqui», чтобы узнать 3 способа сделать это). Частично смысл этого заключается в том, чтобы ИЗБЕГАТЬ нескольких веб-приложений, смонтированных в контейнере сервлетов, потому что это усложняет вещи, в том числе: обработку аутентификации и сеансов, настройку и развертывание и так далее.

Как правило, для приложения в компоненте вы захотите использовать запись базы данных, чтобы добавить подэкран к существующему экрану в иерархии, в основном из компонента «webroot». Вот пример этого из примера приложения в Moqui (это добавляет элементы пути «пример» в элемент пути «приложения», где экран apps.xml монтируется под корневым экраном, помещая его в /apps/example) :

<moqui.screen.SubscreensItem screenLocation="component://webroot/screen/webroot/apps.xml"
        subscreenName="example" userGroupId="ALL_USERS" menuTitle="Example" menuIndex="8" menuInclude="Y"
        subscreenLocation="component://example/screen/ExampleApp.xml"/>

Вот пример из PopCommerce, чтобы смонтировать корневой экран приложения под корневым экраном вместо экрана «приложения» (т.е. сделать его расположенным в /popc вместо /apps/popc; обратите внимание, что это означает оформление в приложениях. xml не будет использоваться, потому что его нет в пути рендеринга):

<moqui.screen.SubscreensItem screenLocation="component://webroot/screen/webroot.xml"
        subscreenName="popc" userGroupId="ALL_USERS" menuTitle="POP Commerce" menuIndex="9" menuInclude="N"
        subscreenLocation="component://PopCommerce/screen/PopCommerceRoot.xml"/>
person David E. Jones    schedule 23.04.2015
comment
Дэвид, не могли бы вы проверить мой ответ и дать какие-либо предложения о том, как сделать что-то лучше. Спасибо. - person Atul Vani; 23.04.2015

Я думаю, что, возможно, задал сбивающий с толку вопрос, но спасибо, что уделил мне время, Дэвид. Если я попытаюсь перефразировать свой вопрос, это будет: «Как создать экран декоратора, который не будет использовать какой-либо HTML-код с экранов веб-сайта или приложений?»

Думаю, я нашел ответ. Я только что добавил свой собственный корневой экран как SubScreenItem под веб-экраном и упомянул в нем атрибут standalone="true". Теперь мой URL-адрес: localhost:8080/customroot/foo не использует ничего, упомянутого на экранах webroot или приложений.

Просто теперь, если я хочу, чтобы все мои компоненты находились на корневом уровне в URL-адресе, например: localhost: 8080/foo, я думаю, что единственный способ сделать это — переместить компоненты OOTB на какой-то другой URL-адрес, например: localhost: 8080 /ootb/apps/AppList Для этого мне нужно будет добавить webroot в качестве SubScreenItem экрана customroot и заменить запись webroot webroot на запись customroot.

Черт, я так старался, и это все еще сбивает с толку.

person Atul Vani    schedule 23.04.2015
comment
Этот вопрос гораздо более ясен, и его лучше всего задать в виде отдельного вопроса на StackOverflow. Если вы вообще не хотите использовать webroot и его подэкраны и вместо этого указываете на корневой экран в своем компоненте, просто измените значение root-screen.@location в XML-файле Moqui Conf среды выполнения. Все примеры файлов conf имеют этот элемент, потому что он является частью конфигурации среды выполнения, а не самой Moqui Framework (т. е. в файле moqui-*.jar). При желании вы можете разместить webroot и другие экраны где-нибудь под корневым экраном. - person David E. Jones; 01.05.2015