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