SpringMVCとHibernateをベースにしたデータアクセス用の新しいアプリケーションを開発しています。データアクセス層を別のアプリケーションサーバー、できればJBOSSで実行したい。
データアクセス層をファイアウォールの背後で実行したい。
どうすればこれを達成できますか?
現在、このシナリオでの休止状態の遅延初期化について懸念しています。Hibernateのレイジー初期化に本当に問題はありますか?
SpringMVCとHibernateをベースにしたデータアクセス用の新しいアプリケーションを開発しています。データアクセス層を別のアプリケーションサーバー、できればJBOSSで実行したい。
データアクセス層をファイアウォールの背後で実行したい。
どうすればこれを達成できますか?
現在、このシナリオでの休止状態の遅延初期化について懸念しています。Hibernateのレイジー初期化に本当に問題はありますか?
UI から、REST
Web サービスを使用してアプリケーション サーバー (DAO およびトランザクション サービスをホストする) からデータをフェッチします。エンティティ クラスに で注釈を付けて、エンティティの@Proxy(lazy=false)
遅延読み込みを回避します。サーバーがクライアント (ファイアウォールの背後にあるビジネス レイヤーにクエリを実行する Web アプリケーション) を検証するには、クライアント ID 証明書を使用しBouncy Castle CMS
ます。API を使用して、ID、信頼、およびメッセージの整合性を検証できます。ネットワークに SSL オフローダがある場合は、http(s)
ヘッダーで切り離された署名を使用します。
このアプローチには、パフォーマンスが低下する可能性があります。IO がボトルネックになります。ただし、Spring Remoting を使用すると、これを簡単に実現できます。
これを実現するためのメカニズムは、Java SE の機能である DynamicProxies と呼ばれます。DynamicProxies を使用すると、実行時にインターフェイスのメソッド呼び出しに応答するクラスを提供できます。この場合、メソッド呼び出しは、リモート サーバー上の対応するメソッドにディスパッチされます。
サービス層サーバーと DAO 層サーバーの両方が、同じドメインのファイアウォールの背後にある必要があります。