6

SpringMVCとHibernateをベースにしたデータアクセス用の新しいアプリケーションを開発しています。データアクセス層を別のアプリケーションサーバー、できればJBOSSで実行したい。

データアクセス層をファイアウォールの背後で実行したい。

どうすればこれを達成できますか?

現在、このシナリオでの休止状態の遅延初期化について懸念しています。Hibernateのレイジー初期化に本当に問題はありますか?

4

2 に答える 2

1

UI から、RESTWeb サービスを使用してアプリケーション サーバー (DAO およびトランザクション サービスをホストする) からデータをフェッチします。エンティティ クラスに で注釈を付けて、エンティティの@Proxy(lazy=false)遅延読み込みを回避します。サーバーがクライアント (ファイアウォールの背後にあるビジネス レイヤーにクエリを実行する Web アプリケーション) を検証するには、クライアント ID 証明書を使用しBouncy Castle CMSます。API を使用して、ID、信頼、およびメッセージの整合性を検証できます。ネットワークに SSL オフローダがある場合は、http(s)ヘッダーで切り離された署名を使用します。

于 2013-03-19T07:21:08.660 に答える
1

このアプローチには、パフォーマンスが低下する可能性があります。IO がボトルネックになります。ただし、Spring Remoting を使用すると、これを簡単に実現できます。

  • DAO のインターフェイスを作成します。
  • 具体的な実装を実装します。
  • Spring Remoting を使用してインターフェイスをエクスポートします。
  • インターフェースを注入する - アプリの観点からは、インターフェースを実装するものにすぎません。リモートサーバーへの呼び出しが発生してもかまいません。

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

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

于 2013-03-24T09:46:58.973 に答える