![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| ShurikA |
|
||||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: нет Всего: 3 |
Такое дело:
До сих пор все мои разработки сводились к Веб Сервисам либо апикациям на базе EJB и их клиентов. Так как всё это делалось под GlassFish, то создавался EJB Module который который общался с Persistence Layer и поддержывал всю нужную функциональность. По другую сторону реки создавалось веб приложение (которое в результате становилось на пример веб сервисом). Всё это собиралось в одну Enterprise Application. В какой то момент мы решили воспользоваться спрингом со стороны клиента. Главным образом в связи с MVC и Spring Security. И вот тут, как говорится началось веселье. Начьну с самого назойливого: Приложение требует определённую сущность для пользователя.Достичь это можно при помощи имплементации класса UserDetailsService в котором, внутри метода loadUserByUsername собираем такого юзера какой на придёт в голову. и то что мне удалось достичь это создание этого пользователя с помощью прямого обращение к БД через DataSource. Но дело всё в том что у нас уже есть EJB Module который делает следующее:
и SystemUser выгладит так:
но мне так и не удалось обраться к SysUserMgrBean из loadUserByUsername, и чем дальше я двигаюсь тем больше путаюсь. Может быть я вообще иду не в том направлении... |
||||
|
|||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
||||
|
||||
| ShurikA |
|
||||||||||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: нет Всего: 3 |
powerOn,
Мда, запутанно, но всё таки правильно Вот допустим самопальный UserDetailsService:
просто у бина метод тоже называется loadUserByUsername... Добавлено через 11 минут и 2 секунды Кстати, я ради спортивного интереса попробовал достать тестовый бин из контроллера. вот ejb:
в отдельном проекте (EJB Module). едиственный способ которым мне удалось достучаться до бина это через lookup кодом:
Но никаким другим способом, ну так:
ни через конфигурацию:
не работает... Кроме того, когда я пытаюсь задеплоить оба модуля как одно приложение (Enterprise Application) не удаётся найти EJB даже через код. И единственный способ, это отдельно деплоить сначало EJB Module а потом Web Application. |
||||||||||
|
|||||||||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
ЕМНИП, то в application.xml можно указать чтобы деплой модулей проходил в порядке их объявления. Я так понимаю что задача сводится к доступу к EJB из спринга? Если так, то об этом почитать можно тут. |
|||
|
||||
| ShurikA |
|
||||||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: нет Всего: 3 |
хе хе, читал и перечитывал... не помогло. На пример, как я уже и сказал выше, если попробовать делать injection так:
то ошибка такая:
и соответственно: так тоже не работает. Добавлено через 3 минуты и 19 секунд Но допустим, с контроллером я решу в какой то момент, благо в документации спринга описанно, то есть работать должно. Но каким образом мне получить бин внутри SystemUserDetailsService? |
||||||
|
|||||||
| MisterCleric |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
Через DependencyInjection:
в общем это быстрый пример из моего проекта. Ну собственно, если почитать referance, который идет из дистрибутивом самого спринга и spring-security, то все более-менее становится понятно. Я уже давно работаю в связке: RemoteEJB - WebSpring Добавлено через 2 минуты и 43 секунды
Вот этот не заработал, там какие-то методы надо еще к бинам добавлять. Да и в доке посоветовали юзать простой JndiLookUp, т.е. тот бин пример, что я показал -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
||||||
|
|||||||
| ShurikA |
|
|||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: нет Всего: 3 |
MisterCleric,
Спасибо, а вопрос такой: есть ли какая то разница если делать lookup кодом или DependencyInjection? Меня главное интересует скорость отработки... |
|||
|
||||
| MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
По-моему у JndiObjectFactoryBean есть какое-то кеширование инстансов, которые он производит. Нету под рукой исходников
-------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
| ShurikA |
|
|||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: нет Всего: 3 |
MisterCleric,
Так как я совсем не привыкший к этим XML-ам, ты не мог бы пояснить что точьно делает каждая часть. Главным образом вот эти две:
заранее спасибо. |
|||
|
||||
| MisterCleric |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
Привет. Попробую растолковать.
Первый - PropertyPlaceholderConfigurer - предназначен для того, что бы читать проперти и их значения из properties-файлов и вставлять в то место, где мы просим эти проперти специальной конструкцией, что мы и видим в следующем примере:
Так же у него есть возможность читать проперети из
что я и использую в моем примере. Второй - PropertiesFactoryBean - просто создает объект типа Properties с тем набором, который мы ему перечисляем. В моем примере это будет набор пропертей для InitialContext, которые я потом инджектчу в бин для lookup по JNDI -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
||||
|
|||||
| ShurikA |
|
||||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: нет Всего: 3 |
продолжение:
Вычитал много всего, в том чесле и то что EJB3 нужно инджектать так:
при этом контроллер выглядит следующим образом:
Во время деплоя в setOrgConfEjb метод передаётся переменная типа: org.ejb._OrganizationConfigRemote_Wrapper Правильно ни это? если да, то по идее после этого, в this.orgConfEjb я должен иметь свой бин. но не тут то было, по какойто причине, когда я пытаюсь воспользоваться им в showOrganizationTypesList то он равен NULL. и естественно я вылетаю по NullPointerException. Что я попускаю? |
||||
|
|||||
| acvilon |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 16.4.2007 Где: Spb Репутация: нет Всего: нет |
Привет, я разбирался с подобным, и выложил конечные исходники.
http://forum.vingrad.ru/forum/topic-268674...-springmvc.html |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |