3

プレーンな JDBC を使用して単一の MySQL インスタンスと通信する既存のクライアント サーバー プロジェクトがあります。今度は、任意の JPA 実装を使用し、XA トランザクションをサポートする JTA 実装の助けを借りて、複数の (シャードされた) MySQL インスタンスをサポートするように拡張したいと考えています。

私の質問は、どうすればよいですか?数時間のグーグル検索の後、アプリケーション サーバー コンテナなしでは JTA 実装を使用できない可能性があることを理解しましたが、それは本当ですか?

私の目的のために、ORMレイヤーを使用してアプリケーションロジックを抽象化できれば幸いです-JPA実装(EclipseLinkパーティションまたはOpenJPAスライスなど)を使用し、トランザクションマネージャー(BTMなど)を使用してXAトランザクションを実行し、XAトランザクションを介してACID保証を提供します基礎となる MySQL インスタンスのセット。

これまでのところ、YouTube ( https://www.youtube.com/watch?v=Vmr6GAlbG10 )でビデオ チュートリアルを試し、EclipseLink と単一の db インスタンスを試しました。現在、複数のインスタンスに拡張することを計画していますが、方法がわかりません。

どんな種類の提案、リンク、ガイドラインも非常に役に立ちます。私はこれに慣れていないので、誤解があればご不便をおかけします。ありがとう。

4

2 に答える 2

1

Atomikos http://www.atomikos.com/や SimpleJTA http://simplejta.sourceforge.net/などのスタンドアロン JTA トランザクション マネージャー を、コンテナーの外部で完全に使用できます。

スタンドアロン JTA マネージャーの詳細: 優れたオープン ソース Java SE JTA TransactionManager 実装とは?

また、一般的な JPA 実装をスタンドアロン JTA と組み合わせてスタンドアロンとして使用することもできます (あなたが尋ねたこと)。ここに Atomikos と Hibernate のサンプルがあり ます http://www.atomikos.com/Documentation/HibernateThreeStandalone

しかし、これはそのようなテクノロジーを使用するのに最適な方法ではありません。機会と時間がある場合は、アプリケーション サーバーを備えた通常の 3 層アーキテクチャに移行してください。

于 2014-07-27T09:32:05.060 に答える
0

Spring アプリケーションのコンテキストで JTA を使用することもできます。

さらに、フレームワークなしで独自のアプリケーションのコンテキストで使用できますが、何が/いつ/どこで注入され、呼び出されたメソッドがどのように返されるか (例外ありまたはなし) を制御する必要があるため、かなり複雑です。しかしもちろん、JTA から正確に何を使用したいかによって異なります。つまり、トランザクションの伝播か、単に同じ JTA トランザクションで異なるデータベースを使用するかです。

したがって、アプリケーション コンテナー (Java EE) を使用したくない場合は、Spring を使用することをお勧めします。

于 2014-07-25T11:55:28.137 に答える