Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии? / 14 сообщений из 14, страница 1 из 1
16.02.2013, 20:24:59
    #38154154
ViktorWM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
в одном моём классе (SessionLogChef) хочется кэшировать одну стринг-переменную на ВЕСЬ период жизни веб-сессии.

создаю класс-"контейнер", который призван эту переменную персистентно (statefull) держать:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
@Entity
@Stateful
@Scope(ScopeType.SESSION)
public class GloboBufer implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1523098334649904851L;
   
	@PersistenceContext(type=PersistenceContextType.EXTENDED)    
	private String kacheNameVornameBuf;

    private void printItForTest( String aStrToPrint ) {
        System.out.println( aStrToPrint );  
    }
		
	public String getKacheNameVornameBuf() {
		return kacheNameVornameBuf;
	}

	public void setKacheNameVornameBuf(String kacheNV_Buf) {
		
		printItForTest( "GloboBufer-BEFORE! :" + kacheNameVornameBuf );
		this.kacheNameVornameBuf = kacheNV_Buf;
		printItForTest( "GloboBufer-AFTER! :" + kacheNameVornameBuf );
	}
}



использовать его хотел так:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
@Scope(ScopeType.CONVERSATION)
@Name("sessionLogChef")
public class SessionLogChef implements Serializable  {  

    @In(create=true)
    GloboBufer gloBufer;

my_methods()....
    gloBufer.setKacheNameVornameBuf ...

    gloBufer.getKacheNameVornameBuf ...
....



но сразу же при старте приложения огребаю:
авторorg.jboss.seam.RequiredException: @In attribute requires non-null value: sessionLogChef.gloBufer

вроде и понятно, он хочет уже инициированный обьект класса! (хотя для чего тогда опция "create=true" ??)

C другой стороны, когда в классе говоришь ему вместо @In инициализацию: GloboBufer gloBufer = new GloboBufer();
то всё стартует, но похоже он при каждом вызове создает обьект gloBufer снова! (Что видно в процессе работы по "GloboBufer-BEFORE! : null" )

как инстанцировать объект класса (GloboBufer ) чтоб он держал переменные от начала и до самого конца?
...
Рейтинг: 0 / 0
16.02.2013, 22:40:00
    #38154222
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
...
Рейтинг: 0 / 0
17.02.2013, 04:45:51
    #38154412
GregTk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
ViktorWM,

Код: java
1.
@Name("globoBuff")



Это решит проблему
...
Рейтинг: 0 / 0
17.02.2013, 06:15:20
    #38154426
ViktorWM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
GregTk,

сделал:

Код: java
1.
2.
3.
4.
5.
@Stateful
@Scope(ScopeType.SESSION)
@Name("globoBufer")
public class GloboBufer implements Serializable {
...



а так же пробывал и с: @Name("globoBuff")

Cпасибо, но пока ровно те же проблемы что я описал выше! (как с @IN так и со "=new")

:-(
...
Рейтинг: 0 / 0
19.02.2013, 11:30:08
    #38157024
ViktorWM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
у кого ещё есть идеи?
...
Рейтинг: 0 / 0
20.02.2013, 13:41:33
    #38158934
ViktorWM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
Up
...
Рейтинг: 0 / 0
20.02.2013, 15:48:03
    #38159222
GregTk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
ViktorWM,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
@Name("globoBuffer")
@Scope(ScopeType.SESSION)
public class GloboBuffer {
...
}

@Name("someName")
public class SomeBean {

       @In(create=true)
       GloboBuffer globoBuffer; 
...
}



Так тоже не работает? Это вообще JBoss Seam 2.x или нет? или это Seam 3.0 или вообще CDI? Мой пример для Seam 2.x должен работать.
...
Рейтинг: 0 / 0
27.02.2013, 23:48:26
    #38168835
ViktorWM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
GregTkViktorWM,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
@Name("globoBuffer")
@Scope(ScopeType.SESSION)
public class GloboBuffer {
...
}

@Name("someName")
public class SomeBean {

       @In(create=true)
       GloboBuffer globoBuffer; 
...
}



Так тоже не работает? Это вообще JBoss Seam 2.x или нет? или это Seam 3.0 или вообще CDI? Мой пример для Seam 2.x должен работать.

Привет, я сделал как ты предлагаешь, но с тем отличием только что не:

Код: java
1.
2.
3.
 
@Name("someName")
public class SomeBean {



а

Код: java
1.
2.
3.
@Scope(ScopeType.CONVERSATION)
@Name("someName")
public class SomeBean implements Serializable {  



получаю при попытке стартовать проект:

авторCaused by: java.lang.IllegalArgumentException: @PersistenceContext may only be used on session bean or message driven bean components: globoBufer
at org.jboss.seam.Component.checkPersistenceContextForComponentType(Component.java:904)
at org.jboss.seam.Component.scanField(Component.java:880)
at org.jboss.seam.Component.initMembers(Component.java:560)
at org.jboss.seam.Component.<init>(Component.java:247)
at org.jboss.seam.Component.<init>(Component.java:208)
at org.jboss.seam.init.Initialization.addComponent(Initialization.java:1186)
... 92 more
20:13:31,562 ERROR [StandardContext] Error listenerStart
...
Рейтинг: 0 / 0
28.02.2013, 05:07:22
    #38168948
GregTk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
ViktorWM,

Кони, люди, всё перемешалось....

По сути: @PersistenceContext может юзатся только в EJB, Seam может оборачивать EJB и делать из них Seam Component. Вопрос в том нужно ли оно именно в таком виде. Я всегда юзаю только Seam Components без EJB. Выложи код твоих компонентов с полями которые у тебя там есть.
...
Рейтинг: 0 / 0
01.03.2013, 02:12:44
    #38170408
ViktorWM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
GregTk,

большое спасибо! Всё уже получилось! Я просто до этого прозевал опцию @PersistenceContext над (кэшируемым) полем класса!(осталась видать от старых экспериментов!) Теперь работает именно Ваш Вариант!!!

@Name("globoBufer")
@Scope(ScopeType.SESSION)
public class GloboBufer {


И удерживает нужную переменную до самого логаута юзера! (это я уже установил!)
Т.е. выходит, что опция:

@Scope(ScopeType.SESSION)

указвает компоненте жить на весь период юзерской сессии (от логина до логаута!) и поэтому более "долгоиграющая", чем опция:

@Scope(ScopeType.CONVERSATION)

да?
...
Рейтинг: 0 / 0
01.03.2013, 03:19:14
    #38170422
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
а доку почитать не? Да в любой статье про Seam рассказывается про конверсэйшены и чем они отличаются от сессии.
...
Рейтинг: 0 / 0
01.03.2013, 08:02:59
    #38170466
GregTk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
ViktorWM,

CONVERSATION это такой контекст временем жизни, которого ты можешь управлять в зависимости от твоей логики. Почитай про механизмы @Begin, @Begin(join="true"), @End. Вообще вся мощь по мнению авторов Seam как раз в этом. На практике в проекте длящемся порядко 6 месяцев из 6 человек в команде с ним свободно никто не смог работать, слишком много нюансов. Да и сами примеры, которые идут с Seam падают в debug.seam если что-нибудь с делать не так как задумали авторы.
...
Рейтинг: 0 / 0
02.03.2013, 17:36:20
    #38172045
ViktorWM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
GregTkViktorWM,

CONVERSATION это такой контекст временем жизни, которого ты можешь управлять в зависимости от твоей логики. Почитай про механизмы @Begin, @Begin(join="true"), @End. Вообще вся мощь по мнению авторов Seam как раз в этом. На практике в проекте длящемся порядко 6 месяцев из 6 человек в команде с ним свободно никто не смог работать, слишком много нюансов. Да и сами примеры, которые идут с Seam падают в debug.seam если что-нибудь с делать не так как задумали авторы.

мда.... стоит задуматься.... Спасибо за информацию к размышлению! А на что тогда уходить человеку (=мне) который ваяет свой индивидуальный (пока что как хобби!) проект, и который весьма силен в Oracle, но совершенно без опыта в яве и вообще в web-программировании?
...
Рейтинг: 0 / 0
03.03.2013, 06:44:50
    #38172292
GregTk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
ViktorWM,

Spring 3.x + JSF2, на данный момент я бы выбрал именно это как замена JBoss Seam. Сам Seam проект без будущего...
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии? / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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