2012-02-13 7 views
0

私はすでに数週間迷惑をかけています。つまり、私はJava EE EJB3バックエンド・ビジネス・エンジンを持っています。これは、コントローラー・サーブレットによって呼び出され、データベースからクライアントに特定のデータを戻します。今、クライアントでは、かなり大量のデータを取り込む必要があるjqGridがあります。チャンク内でクライアントに渡すのに十分な大きさです。私が把握できないのは、ビジネスエンジンから返されたすべての結果を格納する場所なので、結果をスクロールするときに新しいページのデータを要求することができます。それを別のサーブレットに転送するか、それをテーブルから呼び出すか、それを現在の状態を保持し、コントローラサーブレットを呼び出さずにテーブルに返すステートフルセッションBeanに送信しますか?EJB3バックエンドからサーブレットとAJAXを通じてjQueryテーブルにデータを返す

これが私の最終年度プロジェクトの進捗に役立つので、助力をいただければ幸いです。

よろしく

ルーカス

答えて

0

は、ブラウザが直接ステートフルセッションBeanを呼び出すことはできません。常にサーブレットを呼び出さなければなりません。だから、あなたはいくつかの選択肢があります。唯一のグリッドはを要求行を返し、それが

  • 店舗全体の結果で次のチャンクを要求したときに戻ってデータベースにアクセスします。

    • は、どこでも、何も保存しませんステートフルセッションBean、およびサーブレットが
    • ストアHTTPセッション中に結果を直接このステートフルBeanから次のチャンクを取得しており、私のようにあることを好む

    サーブレットがセッションから次のチャンクを取得していできるだけステートレスなので、アプリのスケーラビリティが向上します10の複雑さが少ないので、私の好みは最初の解決策になりますが、YMMVになります。

  • +0

    ありがとうございます。最初のソリューションにパフォーマンスの問題はありませんか?データベースへの呼び出しがたくさんあるためです。私はビジネスエンジンへの呼び出し回数を1つに減らし、クライアントからサーブレットへの多数の小さな呼び出しを実行しようとしました。これらの結果をサーブレットに格納することはできませんか? – lukethepole

    +0

    それは異なります。テーブルのサイズが大きく、その最初の結果が面白い(Googleの結果と考える)場合、ユーザーが次のものをロードしたくないという非常に良い機会があります。時間と記憶の浪費。クエリがテーブルのすべての行のIDをロードし、各チャンク要求がIDのサブセットに対応するデータをロードする中間的なアプローチも使用することに注意してください。したがって、そのようなチャンク要求は非常に高速であり、メモリ消費は妥当なままである。 –

    +0

    私のアプリケーションに関して言えば、そうではありません。ユーザーはすべての結果をスクロールして1つのクエリで50または100の結果が得られ、別のクエリでは1000が返されることを望みます。結果をチャンクまたはページに分割できるビジネスエンジンからCachedRowSetを返します。私はステートフルセッションBeanオプションを使うつもりだと思います。このオプションには、すべての結果を注入してからサーブレットのビットごとに結果を照会します。 – lukethepole

    関連する問題