0

基本的に、Spring を使用して OSGI バンドルでこれを実行できるようにしたいと考えています。

  • applicationContext.xml を使用して Bean とプロキシを定義し、それらを装飾します
  • メソッドで @Transactional を使用して、トランザクションを提供します (Spring はそれをプロキシする必要があります)。

Eclipse Gemini に廃止された Spring DM があることを理解しています。春の設計図でポイント 1 を許可する春の DM 2.0 を引き続き使用できますか? これを行うために「通常の」Springを使用する方法はありますか?

ポイント 2 はどうすればよいですか?OSGI バンドルで Spring を使用してトランザクションを提供することは可能ですか? 誰もこれを成功させましたか?

OSGI の Spring に近づかないようにする必要がありますか?

4

1 に答える 1

0

「古い」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 の本当の美しさです。これらすべてのサービス フレームワークを好きなように組み合わせることができます。

于 2012-10-26T20:31:22.180 に答える