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

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


小林 (koichik) です.

Date:    Sat, 01 Nov 2008 23:09:06 +0900
From:    Akira Asakawa <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:16205] Re: [S2JPA] PersistenceUnitInfoFactoryImplのDEFAULT_DATASOURCE

> ただ、定義されているかわからない"jdbc/dataSource"を
> 固定で返すのもどうかと思います(苦肉の策なのだとは思いますが)。

固定ではありません.
[Seasar-user:16204] で書いたように,この値は
PersistenceUnitInfoFactoryImpl の 
defaultNonJtaDataSource プロパティで変更できますし,
jdbc/dataSource が存在しないなら変更すべきです.

> それでも、TopLinkとS2JPAの組み合わせで起きる現象なので、
> S2TopLink-JPAもしくはS2JPAで対応すべきだとも思うのですが、
> いかがでしょうか?

仕様で明示されていないのに対応「すべき」とは
思いません.
せめて WebSphere,WebLogic,Oracle AS,
JBoss AS,Geronimo など,主要な AP サーバが
全て null を返しているというくらいの材料が
あれば検討しますが.

TopLink が <non-jta-data-source> を参照するなら,
<non-jta-data-source> を指定するのが唯一正しい
対応ではないでしょうか.
<non-jta-data-source> を省略するのは,環境依存の
persistence.xml を書いているだけだと思います.


以下 JPA 仕様の確認.

6.2.1.5 jta-data-source, non-jta-data-source

In Java EE environments, the jta-data-source and non-jta-data-source 
elements are used to specify the global JNDI name of the JTA and/or 
non-JTA data source to be used by the persistence provider. 
If neither is specified, the deployer must specify a JTA data source at 
deployment or a JTA data source must be provided by the container, 
and a JTA EntityManagerFactory will be created to correspond to it.

JavaEE 環境においては,<jta-data-source> と
<non-jta-data-source> の両方が省略された場合,
デプロイヤまたはコンテナのいずれかが JTA の
データソースを提供する義務があります (MUST).

S2 においてはデプロイという工程はないので,
コンテナが JTA データソースを提供する義務が
あります.
つまり,少なくとも JTA データソースにおいては
デフォルトのデータソースが必要ということです.

ここで,非 JTA データソースについては記述が
ありません.
デフォルトのデータソースを提供すべき (MUST) とも,
提供してはならない (MUST NOT) とも,どちらも
書かれてはいないのです.

S2 においては JTA データソースと同様,コンテナが
デフォルトのデータソースを提供するという選択を
しました.



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