Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Jboss 6.1 - куда копать? / 10 сообщений из 10, страница 1 из 1
14.12.2012, 13:45:56
    #38079346
GKS_Samara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jboss 6.1 - куда копать?
Добрый день!

Есть код в stateless-бине.
В нём возникает (генерируемое мною) RemoteException.
В бине я его для профилактики отслеживаю (хотя не должно иметь значения).
Код: sql
1.
2.
3.
4.
    }catch (RemoteException e){
      log.....
      throw e;
    }



В результате когда дело доходит до менеджера транзакций
(CMTTxInterceptor), то у объекта класса ApplicationExceptionImpl признак
rollback не стоит, setRollbackOnly() не вызывается и транзакция комититься.

Вопрос- куда копать, чтобы найти ошибку? Сейчас я просто поставил
Код: sql
1.
      em.getTransaction().setRollbackOnly();


перед пробросом исключения. Но как-то неуютно. Обычно сам факт
завершения метода с exception приводил к откату транзакции. А тут
неясно- может ещё где такое же вылезет?

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14.12.2012, 13:59:35
    #38079382
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jboss 6.1 - куда копать?
Точно отсутствует User-Transaction? Т.е. управление контейнером?
Странно, что нарисовался ApplicationExceptionImpl. Есть два типа Exception в JEE - System и Application. Первые приводят к rollback по-умолчанию. Вторые не приводят. Но можно попробовать @ApplicationException(rollback=true)
RemoteException относится к System.
...
Рейтинг: 0 / 0
14.12.2012, 14:01:19
    #38079386
GKS_Samara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jboss 6.1 - куда копать?
Добрый день, GKS_Samara!

> em.getTransaction().setRollbackOnly();

Вру. Нельзя так.

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14.12.2012, 14:01:30
    #38079387
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jboss 6.1 - куда копать?
Если ты дебажишь CMTTxInterceptor, то посмотри там ниже. Уже после обработки ApplicationException, идёт проверка является ли Exception - System.
...
Рейтинг: 0 / 0
14.12.2012, 14:11:13
    #38079408
GKS_Samara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jboss 6.1 - куда копать?
Добрый день, Blazkowicz!

> Есть два типа
> Exception в JEE - System и Application. Первые приводят к rollback
> по-умолчанию. Вторые не приводят. Но можно попробовать
> @ApplicationException(rollback=true)
> RemoteException относится к System.

Всё, понял, спасибо!

У меня был наследник RemoteException. Поставил в описании класса
@ApplicationException(rollback=true)
и всё заработало.

Не думал, что существенно то, что у меня наследник класса
RemoteException, а не он сам.

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14.12.2012, 14:14:06
    #38079415
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jboss 6.1 - куда копать?
GKS_SamaraНе думал, что существенно то, что у меня наследник класса
RemoteException, а не он сам.

Хм, может какой-то не тот RemoteException используется при наследовании? Потому что наследники должны так же считаться системными.
...
Рейтинг: 0 / 0
14.12.2012, 14:15:45
    #38079422
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jboss 6.1 - куда копать?
Подебаж CMTTxInterceptor, там нормально instanceof для RemoteException отрабатывется.
...
Рейтинг: 0 / 0
14.12.2012, 14:25:26
    #38079444
GKS_Samara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jboss 6.1 - куда копать?
Добрый день, Blazkowicz!

> Хм, может какой-то не тот RemoteException используется при наследовании?

Ну вот весь код.
Пока не поставил @ApplicationException(rollback=true) - не ролбэчилось
Дебажить CMTTxInterceptor пойду позже...
Код: sql
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.
29.
30.
31.
32.
33.
34.
35.
36.
import java.rmi.RemoteException;

import javax.ejb.ApplicationException;

@ApplicationException(rollback=true)
public class CRemoteException extends RemoteException {
  private static final long serialVersionUID = 5677830305379655371L;

  public CRemoteException() {
    super();
  }

  public CRemoteException(String s, Throwable cause) {
    super(s, cause);
  }

  public CRemoteException(String s) {
    super(s);
  }

  @Override
  public String getMessage() {
    // Какой дебил это писал? Я про super.getMessage()
    Throwable detail = this.detail;
    this.detail = null;
    String message = super.getMessage();
    this.detail = detail;
    return message;
  }

  @Override
  public String getLocalizedMessage() {
    return getMessage();
  }

}



--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14.12.2012, 14:30:32
    #38079464
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jboss 6.1 - куда копать?
GKS_Samara
Код: java
1.
2.
3.
4.
import java.rmi.RemoteException;
import javax.ejb.ApplicationException;

public class CRemoteException extends RemoteException {


Тогда это более чем странно. CMTTxInterceptor вроде правильно реализован. Может я какую-то более свежую версию смотрел.
RemoteException в JRE лежит, он в другом jar-е не мог притаиться.

GKS_Samara
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
  @Override
  public String getMessage() {
    // Какой дебил это писал? Я про super.getMessage()
    Throwable detail = this.detail;
    this.detail = null;
    String message = super.getMessage();
    this.detail = detail;
    return message;
  }



В комитах в репозитории написано какой.
...
Рейтинг: 0 / 0
14.12.2012, 16:18:33
    #38079694
GKS_Samara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jboss 6.1 - куда копать?
Добрый день, Blazkowicz!

> В комитах в репозитории написано какой.

Это были эмоции при написании, застывшие в комментах :)
Просто я на сервере пишу туда код ошибки, на клиенте по коду нахожу в
ресурсах текст (многоязычность и т.п.), а тут getMessage() всякую фигню
выдаёт :)

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Jboss 6.1 - куда копать? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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