@RusSanta

Как правильно задеплоить проект EAR в wildfly 9.0.2?

Пытаюсь задеплоить проект типа EAR на локальный сервер приложений, но вылетает такая ошибка
к исходникам я доступа как такового не имею, настроил только Datasource в Wildfly и все
Cannot upload deployment: {"WFLYCTL0080: Failed services" => {"jboss.persistenceunit.\"warehouse.ear/warehouse-core.jar#warehouse\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"warehouse.ear/warehouse-core.jar#warehouse\": org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set"},"WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.undertow.deployment.default-server.default-host./warehouse.UndertowDeploymentInfoService is missing [jboss.security.security-domain.JbSecurityDomain]"]}
  • Вопрос задан
  • 441 просмотр
Решения вопроса 1
@bobzer
Java EE Developer
Судя по всему, разворачиваемое приложение требует наличие домена безопасности с именем "JbSecurityDomain". Обычно, он используется для аутентификации пользователей приложения, в таком случае ссылка на него должна быть из ВАШ.EAR/НЕКИЙ.WAR/WEB-INF/jboss-web.xml. Описание домена должно быть добавлено в раздел <security-domains> конфигурации сервера.

Если нет никакой информации о том, как настраивать безопасность для конкретно вашего приложения, то это может стать проблемой. Но, раз уж есть Datasource, то с высокой степенью вероятности можно предположить, что информация о пользователях хранится в БД. Если это так, то можно попытаться добавить примерно следующее:
<security-domains>
...
                <security-domain name="JbSecurityDomain">
                    <authentication>
                        <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
                            <module-option name="dsJndiName" value="имя-вашего-datasource"/>
                            <module-option name="principalsQuery" value="select password from users where login = ?"/>
                            <module-option name="rolesQuery" value="select t3.code, 'Roles' from users t1 inner join user_roles t2 on t2.user_id = t1.id and t1.login = ? inner join roles t3 on t2.role_id = t3.id"/>
                        </login-module>
                    </authentication>
                </security-domain>
            </security-domains>

В principalsQuery и rolesQuery вставить SQL-запросы выборки данных в соответствии со структурой вашей БД. В rolesQuery первым полем должно быть имя роли из таблицы, вторым полем константа 'Roles'.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы