powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
14 сообщений из 14, страница 1 из 1
как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
    #38154154
ViktorWM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в одном моём классе (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
как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
    #38154222
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
    #38154412
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViktorWM,

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



Это решит проблему
...
Рейтинг: 0 / 0
как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
    #38154426
ViktorWM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
    #38157024
ViktorWM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у кого ещё есть идеи?
...
Рейтинг: 0 / 0
как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
    #38158934
ViktorWM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Up
...
Рейтинг: 0 / 0
как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
    #38159222
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
    #38168835
ViktorWM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
как создать объект класса (GloboBufer ) чтоб он кэшировал от начала и до конца веб-сессии?
    #38168948
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViktorWM,

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

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

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

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


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

@Scope(ScopeType.SESSION)

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

@Scope(ScopeType.CONVERSATION)

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

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

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

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

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


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