[Seasar-user:21347] Re: [Doma]JTAでのトランザクション管理の設定方法について

浅野護 [E-MAIL ADDRESS DELETED]
2012年 6月 13日 (水) 18:16:19 JST


浅野です。

すみません。@ApplicationExceptionを根本的に勘違いしていました。
EJB内でRuntimeExceptionをthrowしたらロールバックされました。

お騒がせしました。




2012年6月12日 22:09 浅野護 <asano1225 @ gmail.com>:

> 浅野と申します。
>
> DomaをEJB3.1から利用しようと試しているのですが、EJB内で例外を発生させてもロールバックしない状態です。
> JSFからCDI管理のBeanからEJB3.1を呼び出し、そのEJB内からDomaのDaoを利用しようとしています。
> 環境は以下で試しています。
> APサーバ:Glassfish3
> DB:MySQL
>  IDE:Eclipse3.7
>
> 下記のAppConfigの記述が誤っているとは思うのですが、どのように修正したらよいか分かりません。
> 申し訳ありませんが、教えていただけないでしょうか。
>
>
> AppConfigは以下のように記述しています。
>
> public class AppConfig extends DomaAbstractConfig {
>     protected static final Dialect dialect = new MysqlDialect();
>
>     @Override
>     public DataSource getDataSource() {
>         try {
>             return InitialContext.doLookup("jdbc/XXXXXXX");
>         } catch (NamingException e) {
>             throw new RuntimeException(e);
>         }
>     }
>
>     @Override
>     public Dialect getDialect() {
>         return dialect;
>     }
> }
>
>
> CDI管理Beanは以下です。
>
> @Named
> @RequestScoped
> public class ProjectentryController implements Serializable {
>     @EJB
>     ProjectService projectService;
>     public String doEntry() throws Exception {
>         Project entity = new Project();
>>         projectService.persist(entity);
>         return null;
>     }
> }
>
> EJBは以下です。
>
> @Stateless
> @TransactionAttribute(TransactionAttributeType.REQUIRED)
> @ApplicationException(rollback=true)
> public class ProjectService implements Serializable {
>     @Inject
>     protected ProjectDao projectDao;        // Doma DAO
>
>     public void persist(Project entity) throws Exception {
>         projectDao.insert(entity);
>
>         if (1 == 1) {
>             throw new Exception();
>         }
>     }
> }
>
> よろしくお願いいたします。
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <https://www.seasar.org/archives/seasar-user/attachments/20120613/6bf0e6e9/attachment.html>


Seasar-user メーリングリストの案内