[Seasar-user:16208] Re: [S2JPA] PersistenceUnitInfoFactoryImplのDEFAULT_DATASOURCE

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 11月 2日 (日) 02:00:24 JST


小林 (koichik) です.

Date:    Sun, 02 Nov 2008 01:17:12 +0900
From:    Akira Asakawa <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:16207] Re: [S2JPA] PersistenceUnitInfoFactoryImplのDEFAULT_DATASOURCE

> > 固定ではありません.
> > [Seasar-user:16204] で書いたように,この値は
> > PersistenceUnitInfoFactoryImpl の 
> > defaultNonJtaDataSource プロパティで変更できますし,
> > jdbc/dataSource が存在しないなら変更すべきです.
> 
> 「固定である」というのは、jpa-support.diconを
> オーバーライドしない限り固定であるという意味です。

可変になっているのを変更しない限り固定というのは
詭弁ではないでしょうか.
わざわざ jpa-support.dicon を用意しているのは,
それを configurable にするためなのですから.

> > 仕様で明示されていないのに対応「すべき」とは
> > 思いません.
> 
> S2TopLink-JPA側での対応も含め、何らかの方法で
> 対策することも可能ではないか?という意味です。

もちろん可能ですが,「すべき」とは思いません.

> 対応される気はないとのことですので、
> これ以上は不毛だと思いますが。

対応する気がないとは一言も書いていません.
対応「すべき」という根拠が見あたらないことを
書いています.

対応「すべき」根拠があるなら対応しますし,
そうでなくても対応してほしいと要望されれば
検討しますが,今のところ要望されているとは
感じていません.

[Seasar-user:16203] では「nullを返すべき」
[Seasar-user:16205] では「S2TopLink-JPAもしくは
S2JPAで対応すべき」ということなので,その根拠を
求めています.

> > TopLink が <non-jta-data-source> を参照するなら,
> > <non-jta-data-source> を指定するのが唯一正しい
> > 対応ではないでしょうか.
> 
> おそらく最も正しい対応は、意味不明なデフォルトを返さずに、
> GlassFishのように、JTA環境で<non-jta-data-source>を
> 要求された場合は<jta-data-source>のJTAに関連付いていない
> ビューであるデータソースを返すことだと思います。

GlassFish 固有の実装が JPA 仕様に照らし合わせて
「最も正しい」という根拠はあるのでしょうか?
私には見つけることができないのですが.

意味不明なデフォルトを返すのは JPA 仕様の
7.1.4 javax.persistence.spi.PersistenceUnitInfo Interface
の記述 (Javadoc) 

The data source corresponds to the named <non-jta-data-source> 
element in the persistence.xml file or provided at deployment 
or by the container.

の範疇に含まれます.
もちろん GlassFish の実装もこの範囲に含まれますが,
コンテナがどのようなデータソースを提供すべきかは
一言も記述がない以上,それが「最も正しい」と解釈
することは,私には不可能です.

仕様に幅がある以上,その範囲内でどうするのが
より正しいとは言えないでしょう.

であるなら,仕様のグレーゾーンに抵触しないように
<jta-data-source> と <non-jta-data-source> の両方を
指定するのが利用者としての唯一正しい対応なのでは
ありませんか?


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



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