powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / есть ли (как сделать?) в java(jboss seam) cобытие типа BeforeUserLogout ??
9 сообщений из 9, страница 1 из 1
есть ли (как сделать?) в java(jboss seam) cобытие типа BeforeUserLogout ??
    #38081322
ViktorWM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
во первых credentials.getUsername() к этому моменту уже NULL !

Код: java
1.
2.
3.
4.
@Observer(value = "org.jboss.seam.preDestroyContext.SESSION", create = true)
   
public void logDestroySession() {
      System.out.println( "_______________LOGOUT__________________" + identity.getPassword() 



во вторых, при попытке записать это событие в базу данных, огребаю - логичным образом:

Код: javascript
1.
2.
Session event listener threw exception
java.lang.RuntimeException: javax.persistence.TransactionRequiredException: No active JTA transaction on joinTransaction call 



т.е. нужно какое-то событие типа BeforeUserLogout (желательно c учетом не только клика на кнопку logout но и выхода по таймауту - чел закрыл окно браузера и т.п.)
...
Рейтинг: 0 / 0
есть ли (как сделать?) в java(jboss seam) cобытие типа BeforeUserLogout ??
    #38082657
ViktorWM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
знает кто-нибудь хоть примерно??
...
Рейтинг: 0 / 0
есть ли (как сделать?) в java(jboss seam) cобытие типа BeforeUserLogout ??
    #38082990
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViktorWM,

Тут есть org.jboss.seam.security.loggedOut может он тебе поможет.
...
Рейтинг: 0 / 0
есть ли (как сделать?) в java(jboss seam) cобытие типа BeforeUserLogout ??
    #38086892
AndreyDmt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую!
Вот выдернул у себя кусок кода, как раз делал у себя запись о выходе пользователя из приложения в БД
Обратите внимание на аннотации, изюм в них :-)
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
	/**
	 * Выполнение действий при завершении пользовательской сессии.
	 */
	@Transactional
	@PreDestroy
	public void destroyData() {
		final String proc = "CommonUserData.destroyData";
		log_info(proc, null, true);
		this.showlog = true;
		// Делаем логоут процедуру с кодом програмного завершения сессии по таймауту
		userLogout(2);
		log_info(proc, "", true);
	}
...
Рейтинг: 0 / 0
есть ли (как сделать?) в java(jboss seam) cобытие типа BeforeUserLogout ??
    #38087578
ViktorWM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreyDmtПриветствую!
Вот выдернул у себя кусок кода, как раз делал у себя запись о выходе пользователя из приложения в БД
Обратите внимание на аннотации, изюм в них :-)
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
	/**
	 * Выполнение действий при завершении пользовательской сессии.
	 */
	@Transactional
	@PreDestroy
	public void destroyData() {
		final String proc = "CommonUserData.destroyData";
		log_info(proc, null, true);
		this.showlog = true;
		// Делаем логоут процедуру с кодом програмного завершения сессии по таймауту
		userLogout(2);
		log_info(proc, "", true);
	}



cпасибо! Обязательно вскоре попробую, так как пока я безуспешен в своих попытках!
Но сразу же 2 вопроса:
1. должно ли это работать на seam 2.2. ?
2. будет ли к этому моменту ещё заполнена переменная identity.getUsername() - дабы узнать кто конкретно разлогинивается? :-)
...
Рейтинг: 0 / 0
есть ли (как сделать?) в java(jboss seam) cобытие типа BeforeUserLogout ??
    #38087679
AndreyDmt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Да, я под 2.2 и работаю (точнее 2.2.2 )
2. А як же! Я что себе в базу пишу? Кроме того, ни что не мешает хранить всё это в отдельных переменных. Я так себе ещё в базу пишу время соединения, отключения, ip машины и что то вроде ещё.

Собственно говоря тогда немного подробностей, как это у меня
1. Создаётся класс типа
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
@Name("myUserData")
@Scope(ScopeType.SESSION)
public class MyUserData implements Serializable {
	@In
	protected Identity identity;
	@In
	protected Credentials credentials;
	@In
	protected EntityManager entityManager;

	public boolean authenticate() {

        }
}


2. Есть такой замечательный файл components.xml, а внём строчка
<security:identity authenticate-method="#{authenticator.authenticate}" remember-me="true"/>
Так у меня она выглядит
<security:identity authenticate-method="#{myUserData.authenticate}" remember-me="true" />
Собственно говоря отсюда видно, что можно сессионный класс отнаследовать от authenticator,
но я делаю самостоятельный - больше руки развязаны, реализую в нём все хотелки и настройки
по пользовательским сеансам.
Ну вроде и всё (в смысле - должно работать)
...
Рейтинг: 0 / 0
есть ли (как сделать?) в java(jboss seam) cобытие типа BeforeUserLogout ??
    #38089882
ViktorWM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cпасибо, вроде получилось! Кстати никто ведь не мешает пожалуй и из имеющегося (предложенного SeamGen-ом) класса authenticator сделать STATEFUL:

Код: java
1.
2.
3.
@Name("authenticator")
@Scope(ScopeType.SESSION)
public class Authenticator implements Serializable 



авторКроме того, ни что не мешает хранить всё это в отдельных переменных.
так я и сделал! (fLastLoginName)

автор>Я так себе ещё в базу пишу время соединения,
высчитываете как LogoutTime - LoginTime ?

автор>ip машины и что то вроде ещё.
это где взять?
...
Рейтинг: 0 / 0
есть ли (как сделать?) в java(jboss seam) cобытие типа BeforeUserLogout ??
    #38090702
AndreyDmt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViktorWMвысчитываете как LogoutTime - LoginTime ?
Типа того. Храню то я как раз время логина-логаута. При необходимости считаю время работы
ViktorWMэто где взять?
У меня так
Код: java
1.
2.
3.
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
this.remoteHost = request.getRemoteAddr();


Может ещё чего полезное для хранения в этих контекстах найдёте
...
Рейтинг: 0 / 0
есть ли (как сделать?) в java(jboss seam) cобытие типа BeforeUserLogout ??
    #38092813
ViktorWM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreyDmt,

кайф! Спасибо!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / есть ли (как сделать?) в java(jboss seam) cобытие типа BeforeUserLogout ??
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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