Как избежать тайм-аута транзакции (WTRN0006W) в Websphere 8.5.5 с чистым JDBC

Вы могли бы сделать что-то вроде этого

private Dictionary<EnumType, Action<param1Type,param2Type,etc> strategies = 
new Dictionary<EnumType, Action<param1Type, param2Type, etc>();

...

private void LoadDictionary()
{
strategies.Add(enumType.Option1, Method1);
strategies.Add(enumType.Option2, Method2);
...
}

...

private void Method1(param1Type param, param2Type param2, etc)
{
// your specific logic here
}

И вы используете его как это:

public void DoSomethingDependingOnCase(enumType option, param1Type param1, param2Type param2)
{
strategies[option].Invoke(param1,param2,etc);
}
0
задан adam.. 18 January 2019 в 07:40
поделиться

1 ответ

Попробуйте пометить метод сессионного компонента без сохранения состояния как транзакцию NOT_SUPPORTED или NEVER, что приведет к его запуску вне глобальной транзакции. (Обратите внимание, что вам все равно придется это сделать, чтобы ваш вызов connection.commit () был действительным - скорее всего, он просто не зашёл так далеко из-за тайм-аута).

@javax.ejb.TransactionAttribute(javax.ejb.TransactionAttributeType.NEVER)
public void yourStatelessEJBMethod() {
    ... code that invokes stored procedure and commits transaction
}
0
ответ дан njr 18 January 2019 в 07:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: