「古い」1.2.1 でも Spring-DM を引き続き使用できますが、Blueprint に切り替えることを強くお勧めします。OSGi でスムーズに動作し、Spring 自体と大差ありません。特に、Bean でトランザクションを実行したいので。私のお気に入りのセットアップは、OpenJPA を使用した Blueprint (Aries または Gemini) で、OSGi 環境で最適に動作します。
Aries ブループリントでこれを行う方法の簡単なサンプルを次に示します。
<bean id="myDao" class="my.project.dao.jpa.MyJpaDao">
<jpa:context property="em" unitname="persistenc-unit" />
<tx:transaction method="*" value="Required" />
</bean>
を使用すると、そのクラスで任意のメソッド トランザクションを実行できます。通常、これらの DAO オブジェクトは、エンティティ クラスと DAO のみを含む別のバンドルに保持します。アプリケーションでこれらの DAO を取得するために、サービスとして登録します。
<service id="myDAO" ref="myDao" interface="my.project.dao.MyDao" />
これで、ブループリントへの「ソフト」転送を行うことができます。私のようにエンティティを別のバンドルに分けておく場合は、Spring からそれらの DAO サービスを参照するだけで済みます (Spring-DM と組み合わせて、この場合は spring-dm 1.2.1 に固執することをお勧めします)。そうしないと、本当に悪い問題が発生します)、そこから標準で進みます。春のアプリケーション。それが OSGi の本当の美しさです。これらすべてのサービス フレームワークを好きなように組み合わせることができます。