3

Jasper Reports (v3.5.2) を使用して PDF/HTML のレポートを生成し、Web アプリケーションのブラウザーに印刷しようとしています。この Web アプリケーションは、フロント エンドに JSF (Woodstock) と EJB 3 (JPA と Hibernate を MySQL データベースへの永続化プロバイダーとして使用) を既に使用しています。

私の質問は、Jasper ベースのレポートを生成するためのコードはどこにあるべきですか? 私はこれについて完全に混乱しています。JSFフロントエンドに入れる必要がありますか? それとも、セッション Bean としてビジネス ロジックの「レポート」モジュールにする必要がありますか?

これに適した場所は、別のモジュールとしてのビジネス層だと思います。レポートの名前、入力パラメーター マップ、およびレポート形式をビジネス メソッドへのパラメーターとして使用してビジネス メソッドを呼び出し、生成された pdf/html を取得してブラウザーに送信します。私はこれで正しい軌道に乗っていますか?

これを行う方法のパターンを提案できますか?

また、すでに JPA を使用しているため、EJBQL を使用したいと考えています。

ありがとう。

4

3 に答える 3

3

ジャスパー生成を耳の一部として埋め込む場合は、提案したようにクラスで抽象化する必要があります。クラスタリングを行っているか、レポート生成を別の JVM にオフロードする予定がない限り、または特別なトランザクション ニーズがある場合を除き、別の EJB を作成するかどうかはわかりません。

もう 1 つの一般的なオプションは、リモートで呼び出す完全に別のレポート サーバーを用意し、ユーザーとの対話を引き継ぐことです。

于 2009-07-24T18:06:30.883 に答える
1

ここでは、「生成するコード」=「レポートを呼び出す API」と想定しています。

ほとんどの場合、プレゼンテーション層を介してこれを行う必要があります。プレゼンテーション層のライブラリは、レポートをユーザーにストリーミングするためだけにレポート層のリソースに接続します。

このようにして、実際にリクエスター (クライアント) にデータを送信する前に、データを保持して層を越えて渡し続ける必要がなくなります。

于 2009-07-29T03:49:51.887 に答える