2013-03-19 8 views
6

私はSpring MVCとHibernateに基づいてデータアクセス用の新しいアプリケーションを開発しています。 データアクセス層を別のアプリケーションサーバー、好ましくはJBOSSで実行したいとします。異なるアプリケーションサーバー上のDAO

データアクセス層をファイアウォールの内側で実行したいと考えています。

どうすればこの問題を解決できますか?

今、私はこのシナリオでの休止状態の遅延初期化について懸念しています。 Hibernateの遅延初期化に何か問題がありますか?

答えて

1

このアプローチにはパフォーマンス上の不利益があります.IOはボトルネックになります。ただし、Spring Remotingを使用すると、これを簡単に実行できます。

  • DAO用のインターフェイスを作成します。
  • 具体的な実装を実装します。
  • インターフェイスをエクスポートするには、spring remotingを使用します。
  • インターフェイスを注入します。アプリケーションの観点から見ると、インターフェイスを実装するものだけです。呼び出しがリモートサーバーに発せられていることは気にしません。

これを実現するメカニズムはDynamicProxiesと呼ばれ、Java SEの機能です。 DynamicProxiesを使用すると、実行時にインタフェース上のメソッド呼び出しに応答するクラスを提供できます。この場合、メソッド呼び出しはリモートサーバー上の対応するメソッドに渡って送出されます。

サービスレイヤとDAOレイヤの両方のサーバーは、同じドメイン上のファイアウォールの背後にある必要があります。

1

UIから、REST Webサービスを使用して、アプリケーションサーバー(DAOおよびトランザクションサービスをホストする)からデータを取得します。怠惰なエンティティの読み込みを避けるには、@Proxy(lazy=false)というエンティティクラスに注釈を付けます。サーバーがクライアント(ファイアウォールの背後にあるビジネスレイヤを照会するWebアプリケーション)を検証し、クライアントID証明書を使用するには、Bouncy Castle CMS APIを使用して、ID、信頼性およびメッセージの整合性を検証します。ネットワークにSSLオフローダがある場合は、http(s)ヘッダーに分離署名を使用してください。

関連する問題