powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / persistence.xml не деплоится
25 сообщений из 95, страница 3 из 4
persistence.xml не деплоится
    #39431421
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не хочу создавать новый топик.
Почему он повторяет запрос?

Код: java
1.
2.
3.
        log(user.getName());
        for (Role role : user.roles)
            log(role.getRole_name());



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
02:21:44,911 INFO  [io.undertow.servlet] (default task-128) com.mezoline.servlet.IndexServlet: admin
02:21:44,911 INFO  [stdout] (default task-128) Hibernate: select roles0_.user_name as user_nam1_0_0_, roles0_.role_name as role_nam2_0_0_, roles0_.user_name as user_nam1_0_1_, roles0_.role_name as role_nam2_0_1_ from role roles0_ where roles0_.user_name=?
02:21:44,912 INFO  [stdout] (default task-128) Hibernate: select user0_.id as id1_1_0_, user0_.created_at as created_2_1_0_, user0_.name as name3_1_0_, user0_.updated_at as updated_4_1_0_ from user user0_ where user0_.name=?
02:21:44,912 INFO  [stdout] (default task-128) Hibernate: select user0_.id as id1_1_0_, user0_.created_at as created_2_1_0_, user0_.name as name3_1_0_, user0_.updated_at as updated_4_1_0_ from user user0_ where user0_.name=?
02:21:44,913 INFO  [stdout] (default task-128) Hibernate: select user0_.id as id1_1_0_, user0_.created_at as created_2_1_0_, user0_.name as name3_1_0_, user0_.updated_at as updated_4_1_0_ from user user0_ where user0_.name=?
02:21:44,913 INFO  [io.undertow.servlet] (default task-128) com.mezoline.servlet.IndexServlet: ADMINISTRATOR
02:21:44,913 INFO  [io.undertow.servlet] (default task-128) com.mezoline.servlet.IndexServlet: USER
02:21:44,913 INFO  [io.undertow.servlet] (default task-128) com.mezoline.servlet.IndexServlet: TEST


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
class Role {
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_name", referencedColumnName = "name")
    private User user;
}


class User {
    @OneToMany(mappedBy = "user")
    public List<Role> roles;
}
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39431434
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в логе есть параметризованный запрос и три пользователя, то, вероятно, запрос выполнен трижды - с разными значениями параметров.
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39431479
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
HettНа Wildfly все получилось. Правда пришлось поковыряться в конфигах его тоже (добавить драйвер)Чего там мучиться? Файд драйвера деплоится как обычное приложение и сразу становится доступным при создании датасорца. Помнится, были косяки в кластерной конфигурации драйвера с видимостью самого драйвера, но, возможно, в 10-ке пофиксили.

Я обратил внимание, что когда попробовали перейти на датасорц в JNDI, использовалось имя
Код: xml
1.
<jta-data-source>java:comp/DefaultDataSource</jta-data-source>


Это неправильно. GF сам достраивает имена суффиксом "java:...". Обычно имена задаются в таком виде "jdbc/name". И ссылаются на них так же. А вот в Wildfly (по-крайней мере в 8.2.1) надо везде полностью. Проверять, конечно же, не буду, потому как GF - спасибо, не надо )) Вон, Петр хоть и живет с 3-кой, но я хорошо помню 3.1.2.2 и больше повторять опыт не хочу.
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39431485
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
HettНе хочу создавать новый топик.
Почему он повторяет запрос?

Код: java
1.
2.
3.
        log(user.getName());
        for (Role role : user.roles)
            log(role.getRole_name());




Так что же Вы хотели?
Код: java
1.
@OneToMany(mappedBy = "user")


По умолчанию здесь подразумевается fetch=LAZY, т.е. когда получили список пользователей, поле roles не было инициализировано. А когда полезли за значением в эту коллекцию и была выполненена серия запросов. Это lazy load в JPA, с ним надо быть аккуратным, иначе производительность можно убить ловко )

Кстати, у Вас направление связи между Role и User некорректное: у User должно быть @ManyToOne, а у Role - @OneToMany. А может явное у Role вообще не нужно. Иначе вы не заведете несколько пользователей с одной и той же ролью.

А если хотите иметь возможность пользователю назначать несколько ролей, то вообще требуется @ManyToMany.
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39431802
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WGAПо умолчанию здесь подразумевается fetch=LAZY, т.е. когда получили список пользователей, поле roles не было инициализировано. А когда полезли за значением в эту коллекцию и была выполненена серия запросов. Это lazy load в JPA, с ним надо быть аккуратным, иначе производительность можно убить ловко )

user - это один пользователь.
Когда мы обратились к полю roles, был сгенерирован запрос на получение списка Ролей

Код: plaintext
1.
02:21:44,911 INFO  [stdout] (default task-128) Hibernate: select roles0_.user_name as user_nam1_0_0_, roles0_.role_name as role_nam2_0_0_, roles0_.user_name as user_nam1_0_1_, roles0_.role_name as role_nam2_0_1_ from role roles0_ where roles0_.user_name=?

У Роли есть обратная связь на пользователя, которая, как я подозреваю и вызывала 3 последующих запроса:

Код: plaintext
1.
02:21:44,912 INFO  [stdout] (default task-128) Hibernate: select user0_.id as id1_1_0_, user0_.created_at as created_2_1_0_, user0_.name as name3_1_0_, user0_.updated_at as updated_4_1_0_ from user user0_ where user0_.name=?

Но я не обращался к этой связи, как видно из кода.
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39431803
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WGAКстати, у Вас направление связи между Role и User некорректное: у User должно быть @ManyToOne, а у Role - @OneToMany. А может явное у Role вообще не нужно. Иначе вы не заведете несколько пользователей с одной и той же ролью.

У пользователя несколько ролей может быть. Поэтому и связь OneToMany.
Одна запись в таблице role может принадлежать только одному пользователю, поэтому связь ManyToOne.
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39431866
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WGAВон, Петр хоть и живет с 3-кой, но я хорошо помню 3.1.2.2 и больше повторять опыт не хочу.
да. Я сознаю что у меня сайт-пример только как демка. Большой нагрузки там нет.
Нужно разбираться конкретно.
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39431867
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,
всё таки лучше отдельный топик. Думай и о других тоже.
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39432699
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
HettWGAКстати, у Вас направление связи между Role и User некорректное: у User должно быть @ManyToOne, а у Role - @OneToMany. А может явное у Role вообще не нужно. Иначе вы не заведете несколько пользователей с одной и той же ролью.

У пользователя несколько ролей может быть. Поэтому и связь OneToMany.
Одна запись в таблице role может принадлежать только одному пользователю, поэтому связь ManyToOne.Вот это и странно. Роль - это шаблон разрешений на набор действий, чтобы не копировать кучу индивидуальных разрешений для каждого пользователя. Как двоим пользователям назначить одну и ту же роль? Например, нормально в системе иметь несколько равноправных "админов", "менеджеров" и т.п.

Если пользователь может обладать несколькими ролями, то тип связи должен быть "многие-ко-многим".
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39432707
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С помощью второй таблицы и назначить:

user_name, role_name
ivan RESELLER
ivan ADMIN
petr MODERATOR
ololosh ADMIN
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39432708
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WGA,
маппинг ролей в GlassFish

роли приложения как угодно соотносятся с ролями АппСерверными
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39432709
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettС помощью второй таблицы и назначить:
вариант № 2 - декларативно в*.xml
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39432716
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня Dbrealm, не вижу смысла мешать все в кучу.
Да и вопрос не в нем, просто как пример связей между Entity привел.
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39432718
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*JDBCRealm
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39432719
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
Petro123WGAВон, Петр хоть и живет с 3-кой, но я хорошо помню 3.1.2.2 и больше повторять опыт не хочу.
да. Я сознаю что у меня сайт-пример только как демка. Большой нагрузки там нет.
Нужно разбираться конкретно.Наилучший выбор в настоящее время - Wildfly. Сейчас работаю над проектом под 10.1. Я просто кайфую от реактивного деплоя после spring-slow-boot Даже Weblogic вызывает больше теплых чувств ) Но у нас не было лицензии на WLS 12 и, естественно, саппорта тоже. Уверен, при платной поддержке многие баги ушли бы.

Единственное, что мне не нравилось еще в 8.2.1 - довольно сложная настройка кластерной конфигурации для тестового сервера. Слишком глубоко надо было погружаться в детали JGroups, чтобы поднять несколько групп серверов без конфликтов. Судя по консоли администрирования 10-й версии вряд ли что-то упростилось...

Вообще выбор сервера приложений - отдельная большая тема. Тут и так уже намешано )
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39432725
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettУ меня Dbrealm, не вижу смысла мешать все в кучу.
мы вроде чётко отделяем и оговариваем.
Маппинг ролей это первая фича JavaEE.
Если её писать руками, то это странно.
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39432739
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
Petro123WGA,
маппинг ролей в GlassFish

роли приложения как угодно соотносятся с ролями АппСервернымиА эта картинка как-то противоречит сказанному мной?

Честно говоря, картинка больше тумана наводит, чем проясняет вопрос JEE авторизации ) Какие придумали "application role"...

Модель безопасности JEE выглядит следующим образом.

1. User связывается с Group отношением many-to-many . За эту связь отвечает внешний источник (БД, LDAP и т.д.).
2. Group связана с Role отношением many-to-many . Эта связь устанавливается в дескрипторе конкретного сервера приложений (jboss-web.xml, glassfish-web.xml и т.п.). Возможен вариант назначения Role для User в обход Group, но обычно все же через группы.
3. Имена ролей используются в авторизации выполнения действий через аннотацию @RolesAllowed.

Как-то так. Но в любом случае, связь между пользователем и ролями не one-to-many.

HettС помощью второй таблицы и назначить:

user_name, role_name
ivan RESELLER
ivan ADMIN
petr MODERATOR
ololosh ADMINОтвечу просто - так не делается.
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39432743
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WGAА эта картинка как-то противоречит сказанному мной?
я не противоречил. Я напомнил ТС'у про маппинг не в коде а декларативно.
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39432746
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123HettУ меня Dbrealm, не вижу смысла мешать все в кучу.
мы вроде чётко отделяем и оговариваем.
Маппинг ролей это первая фича JavaEE.
Если её писать руками, то это странно.

Как понять "руками"? Вы что, после регистрации каждого нового пользователя пойдете XML конфиг чтобы прописать realm для него?

Авторизацией и маппингом занимается контейнер, берет он данные из БД:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 <security-domain name="secureDomain" cache-type="default">
                    <authentication>
                        <login-module code="Database" flag="required">
                            <module-option name="dsJndiName" value="java:jboss/datasources/UserDS"/>
                            <module-option name="principalsQuery" value="select passwd from Users where username=?"/>
                            <module-option name="rolesQuery" value="select role, 'Roles' from UserRoles where username=?"/>
                            <module-option name="hashAlgorithm" value="SHA-256"/>
                            <module-option name="hashEncoding" value="base64"/>
                        </login-module>
                    </authentication>
                </security-domain>
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39432748
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettВы что, после регистрации каждого нового пользователя
вы перепутали РОЛЬ и ПОЛЬЗОВАТЕЛЬ
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39432751
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettАвторизацией и маппингом занимается контейнер, берет он данные из БД:
вы рано ушли с GlassFish. Там нет на экране
Код: java
1.
<module-option name="principalsQuery" value="select passwd from Users where username=?"/>
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39432752
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор1. User связывается с Group отношением many-to-many. За эту связь отвечает внешний источник (БД, LDAP и т.д.).
Роли заданы в <security-constraint>
Маппинг ролей в моем случае в СУБД.
В конечном счете да, связь получается многие-ко-многим, но это если рассматривать роль в целом и пользователя. В моем же случае если рассматривать таблицу Roles - это и есть таблица связей между ролями и пользователями. Но между этой таблицей (Role) и таблицей User связь много-к-одному.
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39432757
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123HettВы что, после регистрации каждого нового пользователя
вы перепутали РОЛЬ и ПОЛЬЗОВАТЕЛЬ

Нет. Не перепутал. Пользователю роли как-то нужно назначать.
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39432761
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

Код: xml
1.
2.
3.
4.
<security-role-mapping>
		<role-name>role_1</role-name>
		<group-name>role_из базы данных</group-name>
</security-role-mapping>
...
Рейтинг: 0 / 0
persistence.xml не деплоится
    #39432764
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

HettВы что, после регистрации каждого нового пользователя пойдете XML конфиг править, чтобы прописать realm для него?
...
Рейтинг: 0 / 0
25 сообщений из 95, страница 3 из 4
Форумы / Java [игнор отключен] [закрыт для гостей] / persistence.xml не деплоится
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]