[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 メーリングリストの案内