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

Akira Asakawa [E-MAIL ADDRESS DELETED]
2008年 11月 2日 (日) 10:31:33 JST


淺川です。

皆様、ご回答ありがとうございます。

Hidenoshin Yoshida さんは書きました:
> 吉田(da-yoshi)です。
>
> 今回の問題は、敢えてjdbc.dataSource名を使わない場合
> または複数のDataSourceを利用する場合
> jta-data-sourceだけでなくnon-jta-datasourceも
> 変更する必要があることだと思います。

はい。その通りです。

> S2TopLinkのドキュメントには、複数Unitを利用する場合の説明はありますが
> 複数DataSourceを使う例にはなっておりませんでしたので
> 複数DataSourceを使う形にドキュメントを変更したいと思います。

その形の対応もひとつの対応だと思います。

最初からドキュメントを基にした質問にすれば
伝わりやすかったのかもしれません。

> デフォルトの挙動は、現状のJPA仕様だとコンテナの意向が反映されることに
> なると思います。
> Seasar2の場合、前述の通りjdbc.dataSource名という名前がデフォルトになり
> やすい
> という背景がありますので、これをJPA利用時のデフォルト名として定義し
> 別の名前にしたい場合に、jpa-support.diconやpersistence.xmlで変更すると
> いう形になっています。
>

これが明記されているならまだよいのですが、
ドキュメント上のpersistence.xmでjdbc/dataSourceを指定しており、
その結果、自分では指定していないデフォルトと同じだから動作している、
というような状態ではわかりにくいバグを生みやすいと感じたからです。

Koichi Kobayashi さんは書きました:
> 小林 (koichik) です.
>   
> 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 の実装もこの範囲に含まれますが,
> コンテナがどのようなデータソースを提供すべきかは
> 一言も記述がない以上,それが「最も正しい」と解釈
> することは,私には不可能です.
>   

S2Containerの目的はJavaEE仕様と照らし合わせて
グレーゾーンを避けるような無難な実装を作るためではなく、
実際に動作しやすいコンテナを実装することだと思っていましたので、

S2TopLinkでデフォルト以外のデータソースを扱う際に問題が起こるのであれば、
他のJPA実装とも照らし合わせて最も問題が起こりにくい解釈にすることが
最も正しいのではないかと思います。



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