@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]"]}
  • Вопрос задан
  • 495 просмотров
Решения вопроса 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'.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы