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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Установка scope bean в Spring 
V
    Опции темы
Zamuta
Дата 13.9.2007, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 18.1.2006

Репутация: 4
Всего: 6



Spring 2. Tomcat 6.0. Пытаюсь установить scope="session" :
Код

<bean id="beanId" class="someClazz" scope="session">
        <property name="someProperty"><ref bean="someRefBean"/></property>
    </bean>    


На что получаю 
Код

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 249 in XML document from ServletContext resource [/WEB-INF/applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException: Attribute "scope" must be declared for element type "bean".
Caused by: org.xml.sax.SAXParseException: Attribute "scope" must be declared for element type "bean".


Добавлено через 28 секунд
Что делаю не так?


--------------------
Thank you opensource.
PM MAIL ICQ   Вверх
tux
Дата 13.9.2007, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



applicationContext.xml нигде случаем Томкатом не кэшируется?
PM MAIL Skype GTalk Jabber YIM   Вверх
Zamuta
Дата 13.9.2007, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 18.1.2006

Репутация: 4
Всего: 6



tux, принудительно нет. А вообще синтаксис ведь правильный?


--------------------
Thank you opensource.
PM MAIL ICQ   Вверх
Tony
Дата 13.9.2007, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Хе - хе  smile  smile . Я сам 2 месяца назад на этот вопрос искал решения. Но решений мне не кто не  дал. А оно есть.   smile Если не наядёшь ,я запощю. Может есть каро4е решение.

Это сообщение отредактировал(а) Tony - 13.9.2007, 20:20


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
Zamuta
Дата 13.9.2007, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 18.1.2006

Репутация: 4
Всего: 6



Tony, 
Цитата
Хе - хе. Я сам 2 месяца назад на этот вопрос искал решения. Но решений мне не кто не  дал. А оно есть.    Если не наядёшь ,я запощю. Может есть каро4е решение.


Так а почему бы тебе не поделиться? 
Проблема в том, что по умолчанию  бины в спринге синглтоны, и я так думаю по этой причине информация на jsf странице управляемая у меня спринг бином своего рода кэшируется. Даже если открыть страницу в другом браузере или с другой машины, то данные так и будут висеть на странице. Хотя при инициализации страницы их быть не должно. Поэтому посмотрел в сторону области видимости бина. 


--------------------
Thank you opensource.
PM MAIL ICQ   Вверх
Tony
  Дата 13.9.2007, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Я не знаю по4ему так но в springe sessions beans както криво сделано. Но решение такое. 
  • Делаешь свой контроллер абстрактным.
  • Потом делаеш абстрактный метод. Например: abstract protected PersonFB sessionCommand();
  • Затем переопределяешь.    
            protected Object formBackingObject(HttpServletRequest request)throws Exception {
            PersonFB personFB = sessionCommand();
            return personFB;
        }
  • Соответственно в оnSubmit() будет так: PersonFB personFB = (PersonFB)command;
  • Маппинг:
       <bean name="personFB" class="examples.PersonFB" scope="session"/> 
       <bean name="/hello.do" class="examples.HelloSpringController"  >
            <lookup-method name="sessionCommand" bean="personFB"/> 
            <!--  <property name="commandClass" value="example.PersonFB"/> --> 
            <property name="formView" value="errorPage"/> 
            <property name="successView" value="welcome"/>
            <property name="validator" ref="testValidate"/>
           <property name="dataSource" ref="dataSource"/>
        </bean>
Обрати внимание на "lookup-method name" тоесть commandClass писать не надо.
А ещё пока не забyл тебе понадобится в либ добавить: библиотеку asm i cglib.
Ну вот и весь сказ.


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
Zamuta
Дата 13.9.2007, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 18.1.2006

Репутация: 4
Всего: 6



Tony, сейчас посмотрел книжку Spring in action second edition, вроде всё нормально должно быть, а нет, не работает. Спасибо, будем пробовать. 


--------------------
Thank you opensource.
PM MAIL ICQ   Вверх
Tony
Дата 13.9.2007, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Хотелось бы проще.  smile  smile 


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
Zamuta
Дата 13.9.2007, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 18.1.2006

Репутация: 4
Всего: 6



Однако, получилось smile  .
И так, у меня jsf1.2_04 , tomcat 6.0 , spring 2.1-M4 .

В web.xml стоят листенеры касающиеся спринга :
Код

<listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>
    <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>


в faces-config.xml :
Код

    <application>     
        <variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver> 
    </application>


В applicationContext.xml в описании <beans> :
Код

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">


И затем в описании конкретного бина:
Код

<bean id="beanId" class="someClazz" lazy-init="true" scope="session">
        <property name="someProperty"><ref bean="someRefBean"/></property>
    </bean>


lazy-init="true" указывает спринг контроллеру не делать этот бин синглтоном по умолчанию.

P.S. Подробнее описано здесь


--------------------
Thank you opensource.
PM MAIL ICQ   Вверх
Tony
Дата 14.9.2007, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Тоесть у усера будет свой бин (на каждого)? А как быть если нету JSF? Я попробую.

Это сообщение отредактировал(а) Tony - 14.9.2007, 00:14


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
Tony
Дата 14.9.2007, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Это прокатывает если AbstractController. A esli SimpleFormContoller ili CancellableFormController не прокатит


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
Tony
Дата 14.9.2007, 01:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Полу4илось написать !!!  smile  smile 
Код

    protected Object formBackingObject(HttpServletRequest request)throws Exception {
        return super.getApplicationContext().getBean("personFB");
    }

Код

 <bean name="personFB" class="examples.PersonFB" scope="session"/>

А теперь пора спать.  smile 


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
Zamuta
Дата 14.9.2007, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 18.1.2006

Репутация: 4
Всего: 6



Цитата

Тоесть у усера будет свой бин (на каждого)? А как быть если нету JSF? Я попробую.


А мне только это нужно. В доках пишут, что для веб слоя возможно установить scope session, request, global session и это не баг. Не для веб такого сделать нельзя, только синглтон или прототип. 


--------------------
Thank you opensource.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1433 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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