Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как передать фасад бина в качестве параметра... В классы библиотеки, например... 
V
    Опции темы
Maverick
Дата 16.5.2007, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



Уважаемые, вопрос из серии "нельзя, но очень хочется"... 

Есть фасады бинов в пользовательском приложении, с ними выполняются однотипные операции... естественно, хочеться это дело обернуть в отдельную примочку, дабы не писать 10 раз одно и тоже... Привел все фасады к одному интерфейсу и передаю их в функцию класса библиотеки подключенной... однако, с другой стороны, после передачи параметра - данный фасад становиться null... Я,конечно, понимаю, что дело в том, что экземпляры объектов сидят на сервере, а со стороны клиентов - всего лишь фасады-интерфейсы... но все-таки нет ли какого хитрого метода, чтобы можно было ссылку на фасад запихать в метод класса из библиотеки в качестве параметра??



Это сообщение отредактировал(а) Maverick - 16.5.2007, 15:23


--------------------
smile
PM ICQ GTalk   Вверх
chief39
Дата 16.5.2007, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 11
Всего: 77



Цитата(Maverick @  16.5.2007,  15:22 Найти цитируемый пост)
Есть фасады бинов в пользовательском приложении, с ними выполняются однотипные операции... естественно, хочеться это дело обернуть в отдельную примочку, дабы не писать 10 раз одно и тоже... 

Не понял. Что десять раз одно и то же? И в какую примочку запихнуть?

Цитата(Maverick @  16.5.2007,  15:22 Найти цитируемый пост)
ривел все фасады к одному интерфейсу и передаю их в функцию класса библиотеки подключенной... 

К какому интерфейсу? У тебя все фасады выполняют одно и то же?

Цитата(Maverick @  16.5.2007,  15:22 Найти цитируемый пост)
однако, с другой стороны, после передачи параметра - данный фасад становиться null... 

Гм... как это?
когда у тебя слукаплен и приведён бин - это означает что локально у тебя создана заглушка, которая наследует ремоут-интерфейс, с которым ты и работаешь. Это просто объект в памяти - почему он у тебя обнуляется? Как ты его передаёшь и куда?

Цитата(Maverick @  16.5.2007,  15:22 Найти цитируемый пост)
Я,конечно, понимаю, что дело в том, что экземпляры объектов сидят на сервере, а со стороны клиентов - всего лишь фасады-интерфейсы... но все-таки нет ли какого хитрого метода, чтобы можно было ссылку на фасад запихать в метод класса из библиотеки в качестве параметра??

на клиенте - заглушка, наследующая интерфейс, при работе с ней - конкретный инстанс такой заглушки, тупо объект.

У меня есть метод на клиенте
protected CustomersFacade initFacade()
к примеру.

Он работает а-ля как сервис локатор.
То есть слукапил фасад и вернул на него ссылку(а вернее - на его проксю).
Которую так же можно передать параметром(параметры в джаве - по ссылке).
Может ты как-то хитро передаёшь куда-то?  smile
Случаем, ничего у тебя не сериализуется ? ;)





--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
ekr
Дата 17.5.2007, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


...и это пройдет...
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 6.5.2007
Где: Moscow, RU

Репутация: 12
Всего: 19



Maverick, действительно, как-то витеивато )))
попробуй подробнее описать


--------------------
и это пройдет....

http://ekrs.blogspot.com
PM WWW   Вверх
Maverick
Дата 22.5.2007, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



Ну вот смотрите... 

Есть бины - скажем страны и города... Есть однотипные операции к ним - добавить, удалить, изменить... и тд, и тп... Доступ осуществляется через JSF.... Например, при нажатии на кнопку  "Добавить" приходилось писать практически один и тот же код для разных классов... Причем добавляется все в определенные массивы, типа кэш этакий самопальный, а потом все загоняется через фасад в настоящие таблицы... 

Вместо это я в библиотеке создал класс Помощник, который умеет принимать эти самые данные и оперировать ими (растыкивать по кэшам и все такое)... Это класс Помощник оперирует интерфейсами, а не настоящими классами, поэтому все классы приведены к этому интерфейсу...

Ну так вот - когда я попытался этому классу помощнику переслать собственно фасад - выяснилось, что с после присвоения - это null... фасад не передается... им нельзя оперировать в классе Помощнике... 

Вот в чем проблема... 


--------------------
smile
PM ICQ GTalk   Вверх
chief39
Дата 22.5.2007, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 11
Всего: 77



Цитата(Maverick @  22.5.2007,  11:46 Найти цитируемый пост)
Ну так вот - когда я попытался этому классу помощнику переслать собственно фасад - выяснилось, что с после присвоения - это null... фасад не передается... им нельзя оперировать в классе Помощнике... 

Где у тебя помощник, где фасад, опиши точнее.

Цитата(Maverick @  22.5.2007,  11:46 Найти цитируемый пост)
Есть бины - скажем страны и города... Есть однотипные операции к ним - добавить, удалить, изменить... и тд, и тп... Доступ осуществляется через JSF.... Например, при нажатии на кнопку  "Добавить" приходилось писать практически один и тот же код для разных классов... Причем добавляется все в определенные массивы, типа кэш этакий самопальный, а потом все загоняется через фасад в настоящие таблицы... 

Вместо это я в библиотеке создал класс Помощник, который умеет принимать эти самые данные и оперировать ими (растыкивать по кэшам и все такое)... Это класс Помощник оперирует интерфейсами, а не настоящими классами, поэтому все классы приведены к этому интерфейсу...

Брррр.... жуткая а-ля унифицированная логика, вынесенная на клиента.

Зачем тебе тогда плодить фасады? Сделай один, который будет работать со всем и просто давай ему понять - get чего именно тебе сейчас нужен - страны или города. А то фасады утебя ограниченны одним бизнес-интерфейсом и зачем такое - непонятно. Тем более, Session Facade подразумевает скрытие сложностей от клиента. А тут клиент только нагружается "левой" логикой.
А кешу обычно пофик что складывать - Object себе, да и Object.

Это я вообще о системе...

А ответ на вопрос трудно найти, зная лишь 
Цитата(Maverick @  22.5.2007,  11:46 Найти цитируемый пост)
Ну так вот - когда я попытался этому классу помощнику переслать собственно фасад - выяснилось, что с после присвоения - это null... фасад не передается... им нельзя оперировать в классе Помощнике... 




--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
nornad
Дата 22.5.2007, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: нет
Всего: 31



Maverick, ты бы упрощённый пример сделал и выложил бы код.

P.S. Создание упрощённого примера зачастую позволяет увидеть свои ошибки и исправить всё самостоятельно. smile 


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Maverick
Дата 22.5.2007, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



Цитата(chief39 @  22.5.2007,  12:27 Найти цитируемый пост)
Зачем тебе тогда плодить фасады? Сделай один, который будет работать со всем и просто давай ему понять - get чего именно тебе сейчас нужен - страны или города. А то фасады утебя ограниченны одним бизнес-интерфейсом и зачем такое - непонятно. 


я, честно говоря, не уверен, что в будущем эти бины не разъедутся по разным приложениям... кром того -  приложений много, библиотека одна... подключай к любому и работай.... 

Попытаюсь чуть позже выложить пример упрощенный... 


--------------------
smile
PM ICQ GTalk   Вверх
Maverick
Дата 25.5.2007, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



Короче, все нормализовалось.... ошибка была в том, что я передавал классу помощнику фасад не в том месте... Я использую JSF и надо было в событии init() бина это делать.. там фасад уже существует... а до этого - он все-таки null... 


--------------------
smile
PM ICQ GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0675 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.