0

私は、Java EE コンテナのサービスと非常によく似たサービスをサード パーティの拡張コードに提供する必要があるアプリケーションを計画しています。基本的に、このアプリが行うことは、一連の作業項目を見つけ (現在は Hibernate を使用する予定です)、それらを作業項目のコンシューマーにディスパッチすることです。

作業項目のコンシューマーは、項目の詳細をロードし、サード パーティの拡張コードを呼び出します。サード パーティのコードが失敗しなかった場合は、作業項目の状態を更新し、完了したすべての作業をコミットします。

これを Java EE アプリケーションとして書いているわけではありません。ただし、基本的に、私のアプリケーションはコンテナーの多くのサービスを提供する必要があります。トランザクション管理、接続プーリングと管理、およびある程度の展開サポートを提供する必要があります。A) これらを直接提供するか、B) それらを提供するサードパーティのライブラリを選択するにはどうすればよいですか。大規模なプロジェクトの要件により、拡張機能の作成者は Hibernate を使用します (それが違いを生む場合)。

私が言及したすべての機能の中で、私が最もよく知らないのはトランザクション管理であることに注意してください。コンテナーで実行されている拡張コードにこのサービスを提供するにはどうすればよいですか?

4

3 に答える 3

4

こんにちは、Spring Framework の使用をお勧めします。あなたが話しているさまざまなサービスの多くをまとめる良い方法を提供します.

たとえば、特定のニーズに対応するには:

  1. トランザクション管理/接続プーリング
    • Apache Commons 接続プーリングを使用する、Spring ベースのスタンドアロン アプリケーションを作成しました。また、春にはある種のトランザクション管理が組み込まれていると思います。
  2. 導入サポート
    • 私は ant を使用してフロントローダーとしてデプロイおよび実行しています。それはかなりうまくいきます。ant を使用して個別のプロセスをフォークし、Spring スタンドアロン アプリを実行するだけです。
  3. スレッディング。
    • Spring は、スレッドとスレッド プールを適切に処理する Quartz をサポートしています。
  4. ダオ
    • Spring は、Hibernate や他の同様のプロジェクトとうまく統合されます
  5. 構成
    • xml プロパティ定義を使用する -- Spring は、複数環境の構成に非常に適しています。
于 2009-04-22T23:14:59.490 に答える
1

Springにはトランザクション管理があります。Apache DBCP (DataSource に を使用) を使用して、アプリケーション コンテキストで DataSource を定義できますorg.apache.commons.dbcp.BasicDataSourceorg.springframework.jdbc.datasource.DataSourceTransactionManager。その後、TransactionManager を渡すと、アプリケーション内の任意のオブジェクトで独自のトランザクションをプログラムで定義できます。または、オブジェクトの定義で AOP インターセプターを使用できます。アプリケーションのコンテキストで、トランザクション内で実行する必要があるメソッドを定義します。

または、Spring での最近のより簡単なアプローチは、トランザクション内で実行する必要がある任意のメソッドで @Transactional アノテーションを使用し、次のようなものをアプリケーション コンテキストに追加することです (transactionManager の名前が txManager であると仮定します)。

<tx:annotation-driven transaction-manager="txManager"/>

このようにして、アプリケーションは後で新しいコンポーネントを簡単に受け入れることができ、@Transactional アノテーションを使用するか、setter を介して受け取る PlatformTransactionManager を介してトランザクションを直接作成するだけで、トランザクション管理を行うことができます (オブジェクトを定義するときにそれを渡すことができます)。アプリのコンテキストで)。

于 2009-04-23T14:39:41.433 に答える
1

J2SE 環境で Java トランザクション管理と接続プール (JDBC+JMS) のためにAtomikos TransactionsEssentialsを試すことができます。アプリサーバーは必要ありません。作業がずっと楽しくなります ;-)

HTHガイ

于 2009-06-02T20:36:46.390 に答える