Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 CDI: @ManagedBean to @Named  [new]
publexus
Member

Откуда: Москва
Сообщений: 942
Имеется веб приложение: jdk1.8.0_171, GlassFish5, Primefaces 6.2, Spring framework 5.0.2, ManagedBeans.

Т.к. @ManagedBean - deprecated, решил перейти на CDI, заменил:
@javax.faces.bean.ManagedBean => @javax.inject.Named
@javax.faces.bean.RequestScoped => javax.enterprise.context.RequestScoped
@javax.faces.bean.ViewScoped => @org.omnifaces.cdi.ViewScoped
@javax.faces.bean.SessionScoped => @javax.enterprise.context.SessionScoped

Запускаю: все бины создаются как синглтоны при инициализации приложения, никакого управления бинами в соответствии с их областью видимости в веб-контейнере не происходит.

Что надо еще сделать?
19 фев 19, 17:21    [21814602]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
cossack5
Member

Откуда:
Сообщений: 463
publexus,
У вас используется Mojarra + OmniFaces ?
20 фев 19, 11:02    [21815202]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
publexus
Member

Откуда: Москва
Сообщений: 942
cossack5
publexus,
У вас используется Mojarra + OmniFaces ?


Да:

Mojarra 2.3.3.99.payara-p5
OmniFaces version 3.2
20 фев 19, 12:02    [21815263]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
cossack5
Member

Откуда:
Сообщений: 463
publexus,

Попробовал у себя, вроде работает из коробки (только у меня Mojarra 2.4).
26 фев 19, 13:00    [21819623]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
publexus
Member

Откуда: Москва
Сообщений: 942
cossack5
publexus,

Попробовал у себя, вроде работает из коробки (только у меня Mojarra 2.4).


Mojarra 2.4 не рекомендуют, payara-5.183 был на 2.4, а затем в payara-5.184 откатились обратно на 3.9. Но это не по теме.

Проект достаточно большой, поэтому не понятно, в чем загвоздка.
Но а если по теории: в glassfish CDI-контейнер WELD, насколько я понимаю, в приложении еще spring-движок. Как они интегрируются?
При указании @Component - создается spring bean, а при @Named - ?
27 фев 19, 17:58    [21820953]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
Kachalov
Member

Откуда: Москва
Сообщений: 5626
publexus
Но а если по теории: в glassfish CDI-контейнер WELD, насколько я понимаю, в приложении еще spring-движок. Как они интегрируются?

- сами по себе никак, надо делать дополнительные телодвижения, например навешивать на бины интерсепторы:
@Interceptors(SpringBeanAutowiringInterceptor.class)
28 фев 19, 10:31    [21821445]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
cossack5
Member

Откуда:
Сообщений: 463
Kachalov
publexus
Но а если по теории: в glassfish CDI-контейнер WELD, насколько я понимаю, в приложении еще spring-движок. Как они интегрируются?

- сами по себе никак, надо делать дополнительные телодвижения, например навешивать на бины интерсепторы:
@Interceptors(SpringBeanAutowiringInterceptor.class)

Можно складывать CDI-бины в ApplicationContext через кастомный BeanFactoryPostProcessor (пример).
Можно складывать спринговые бины в CDI (пример ).
1 мар 19, 15:26    [21822817]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
publexus
Member

Откуда: Москва
Сообщений: 942
Я еще вот такую тему нашел: Integrate JSF 2.2, CDI with Spring Framework. Буду пробовать.
1 мар 19, 16:36    [21822887]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
cossack5
Member

Откуда:
Сообщений: 463
publexus
Я еще вот такую тему нашел: Integrate JSF 2.2, CDI with Spring Framework. Буду пробовать.

Так у вас Spring все-таки ? и JSF-аннотации работают, а CDI нет ?
1 мар 19, 17:37    [21822965]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
rabiter
Member

Откуда: SPb
Сообщений: 594
publexus,

убедитесь, что у вас есть файлик beans.xml (где именно не помню, но скорее всего в META-INF, погуглите про него)
Без этого файлика контейнер бинов CDI не будет сканировать модуль на наличие бинов. Т. е. в каждом модуле, где используете CDI, должен быть beans.xml
7 мар 19, 11:24    [21827079]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
publexus
Member

Откуда: Москва
Сообщений: 942
cossack5
publexus
Я еще вот такую тему нашел: Integrate JSF 2.2, CDI with Spring Framework. Буду пробовать.

Так у вас Spring все-таки ? и JSF-аннотации работают, а CDI нет ?


Да. JSF-аннотации (@ManagedBean) и spring (@Component, @Service, ...) работают в старой версии, разрешаются между собой через org.springframework.web.jsf.el.SpringBeanFacesELResolver.

При замене ManagedBean => @Named эти бины доступны и в spring, но создаются все как синглтоны (RequestScoped, SessionScoped при указании не работает).
12 мар 19, 09:53    [21829962]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
alex55555
Member

Откуда:
Сообщений: 2080
publexus
Что надо еще сделать?

Самое правильное - не городить огород из "модных" технологий. А то вот оно, поддержание старых да дырявых штанов при помощи новых, но только носков.
12 мар 19, 12:40    [21830142]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5066
alex55555
publexus
Что надо еще сделать?

Самое правильное - не городить огород из "модных" технологий. А то вот оно, поддержание старых да дырявых штанов при помощи новых, но только носков.


нет
12 мар 19, 14:04    [21830240]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
mayton
Member

Откуда: loopback
Сообщений: 40422
Да кому нужен этот JSF.
12 мар 19, 20:17    [21830698]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
Garrick
Member

Откуда: Москва
Сообщений: 2907
publexus
Имеется веб приложение: jdk1.8.0_171, GlassFish5, Primefaces 6.2, Spring framework 5.0.2, ManagedBeans.

Что-то не понял. А зачем тут Spring?
13 мар 19, 09:12    [21830965]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
mayton
Member

Откуда: loopback
Сообщений: 40422
Garrick
publexus
Имеется веб приложение: jdk1.8.0_171, GlassFish5, Primefaces 6.2, Spring framework 5.0.2, ManagedBeans.

Что-то не понял. А зачем тут Spring?

Более интересный вопрос - что у него стоит в вершине стека?
13 мар 19, 11:36    [21831101]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
publexus
Member

Откуда: Москва
Сообщений: 942
Garrick
publexus
Имеется веб приложение: jdk1.8.0_171, GlassFish5, Primefaces 6.2, Spring framework 5.0.2, ManagedBeans.

Что-то не понял. А зачем тут Spring?

А зачем вообще нужны фреймворки и библиотеки? Можно все написать самому, и не париться, в том числе и сервер приложений и самому слушать порт 80, зачем брать готовый...
В приложении Spring используется для реализации технологий, не связанных с контейнером web, в частности Spring Data JPA, Spring Aspect и т.д.



mayton
Garrick
пропущено...

Что-то не понял. А зачем тут Spring?

Более интересный вопрос - что у него стоит в вершине стека?

Что в данном случае подразумевается под вершиной стека? Фабрика бинов Spring работает отдельно, ManagedBeans управляются web-контейнером. В процессе работы требуется из ManagedBeans обратиться к спринг-бину и наоборот. Это осуществляется через ссылку на контекст и org.springframework.web.jsf.el.SpringBeanFacesELResolver.

Где должна быть вершина?
14 мар 19, 09:28    [21832046]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
mayton
Member

Откуда: loopback
Сообщений: 40422
Кто main ?
14 мар 19, 10:02    [21832085]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
Garrick
Member

Откуда: Москва
Сообщений: 2907
publexus
А зачем вообще нужны фреймворки и библиотеки? Можно все написать самому, и не париться, в том числе и сервер приложений и самому слушать порт 80, зачем брать готовый...
В приложении Spring используется для реализации технологий, не связанных с контейнером web, в частности Spring Data JPA, Spring Aspect и т.д.

У меня такой "набор" вызывает ассоциации с Жигулями оттюненными в каком-то гараже, у которых теперь два руля и шесть педалей, причём один руль поворачивает только налево, а другой только направо. Зачем собирать такого монстра и потом плакаться что оно жутко неудобно и не совсем работает?
14 мар 19, 10:11    [21832096]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
alex55555
Member

Откуда:
Сообщений: 2080
publexus
В приложении Spring используется для реализации технологий, не связанных с контейнером web, в частности Spring Data JPA, Spring Aspect и т.д.

Для persistence есть тот же хибер, ну и куча всего другого. Аспекты наверняка используете для задач, которые легко решаются простым наследованием. То есть весь спринг идёт лесом, вместе с его недокументированностью и замороченностью.
publexus
Фабрика бинов Spring работает отдельно, ManagedBeans управляются web-контейнером.

Ну и зачем два раза управлять одним и тем же? Это как раз те два руля? Типа "по пацански"?
publexus
В процессе работы требуется из ManagedBeans обратиться к спринг-бину и наоборот.

Один руль поворачивается, но обязательно должен зацепляться за второй, иначе машина не поедет...
publexus
Где должна быть вершина?

С чего начался прожект? Чего в нём сначала не было, а потом появилось?
14 мар 19, 11:28    [21832218]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
publexus
Member

Откуда: Москва
Сообщений: 942
alex55555
publexus
В приложении Spring используется для реализации технологий, не связанных с контейнером web, в частности Spring Data JPA, Spring Aspect и т.д.
Для persistence есть тот же хибер, ну и куча всего другого. Аспекты наверняка используете для задач, которые легко решаются простым наследованием. То есть весь спринг идёт лесом, вместе с его недокументированностью и замороченностью.
Да есть хибер, и, да, есть надстройка над хибером - Spring Data JPA которая добавляет много нового и удобного функционала, в чем проблема его использования? Понятная и ясная модель, документации и примеров, кстати, предостаточно.

alex55555
publexus
Фабрика бинов Spring работает отдельно, ManagedBeans управляются web-контейнером.
Ну и зачем два раза управлять одним и тем же? Это как раз те два руля? Типа "по пацански"?

Абсолютно не логичный пример. Это не одно и то же, это разные системы, в вашей аналогии, - это руль и газ.

alex55555
publexus
В процессе работы требуется из ManagedBeans обратиться к спринг-бину и наоборот.
Один руль поворачивается, но обязательно должен зацепляться за второй, иначе машина не поедет...

Определенное взаимодействие должно быть, например по аналогии с рулем и акселератором: на большой скорости для безопасности руль должен крутиться туже. А по вашей идеологии монолитности все должно быть единым целым, т.е. колеса, рулевая колонка и педаль газа должны вращаться синхронно с коленвалом, чтобы одним рычагом можно было управлять всеми системами сразу)

alex55555
publexus
Где должна быть вершина?
С чего начался прожект? Чего в нём сначала не было, а потом появилось?

А что в автомобиле главнее: рулевое управление, трансмиссия или тормоз.


Еще раз повторюсь, что все прекрасно работает в проекте.
Просто ManagedBeans в соответствии с новой спецификацией CDI являются deprecated. И захотелось привести приложение в соответствие, но с ходу по схеме описанной выше, к сожалению, не получилось.
Поэтому хотелось бы все же послушать не критику по выбор средств, т.к. в этом сколько людей - столько и мнений, а какой-нибудь дельный совет по теме.
14 мар 19, 15:36    [21832733]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
publexus
Member

Откуда: Москва
Сообщений: 942
alex55555
Аспекты наверняка используете для задач, которые легко решаются простым наследованием

Если вы не в курсе, то область аспектов лежит совсем в дугой плоскости нежели наследование. И их функционал используется в том числе для решения таких задач, которые нельзя решить наследованием.
14 мар 19, 15:43    [21832747]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
mayton
Member

Откуда: loopback
Сообщений: 40422
Запускаю: все бины создаются как синглтоны при инициализации приложения, никакого управления бинами в соответствии с их областью видимости в веб-контейнере не происходит.

Можешь показать кусок исходника или макет где эта проблема воспроизводится?
14 мар 19, 15:46    [21832748]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
Garrick
Member

Откуда: Москва
Сообщений: 2907
publexus
Абсолютно не логичный пример. Это не одно и то же, это разные системы, в вашей аналогии, - это руль и газ.

О том и разговор, что Spring MVC и JSF - это как раз два руля, а не руль и газ.
14 мар 19, 15:54    [21832758]     Ответить | Цитировать Сообщить модератору
 Re: CDI: @ManagedBean to @Named  [new]
publexus
Member

Откуда: Москва
Сообщений: 942
Garrick
publexus
Абсолютно не логичный пример. Это не одно и то же, это разные системы, в вашей аналогии, - это руль и газ.

О том и разговор, что Spring MVC и JSF - это как раз два руля, а не руль и газ.


Я, вроде писал, что в моем проекте Spring не используется в технологиях веб, в том числе Spring MVC.
14 мар 19, 16:02    [21832766]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Java Ответить