java - 在哪里适合 Jasper Reports - 前端还是业务?

标签 java jasper-reports ejb

我正在尝试使用 Jasper Reports (v3.5.2) 生成 PDF/HTML 格式的报告并将其打印到 Web 应用程序的浏览器。这个 webapp 已经使用 JSF(Woodstock) 作为前端和 EJB 3(使用 JPA 和 Hibernate 作为 MySQL 数据库的持久化提供者)。

我的问题是——生成基于 Jasper 的报告的代码应该放在哪里?我对此完全困惑。我应该把它放在 JSF 前端吗?或者它应该是作为 session bean 的业务逻辑中的“报告”模块?

我认为正确的位置是将业务层作为一个单独的模块。我将使用报告名称、输入参数映射和报告格式作为业务方法的参数来调用业务方法,并获得生成的 pdf/html 作为返回,然后我可以将其发送到浏览器。我这样做是否正确?

您能建议一种模式来执行此操作吗?

另外,我想使用 EJBQL,因为我已经在使用 JPA。

谢谢。

最佳答案

如果您打算将碧 Jade 生成作为耳朵的一部分嵌入,那么我会说应该按照您的建议将其抽象为一个类。我不确定我是否会为它创建一个单独的 EJB,除非您正在进行集群或以其他方式将报告生成卸载到另一个 JVM,或者您有一些特殊的事务需求。

另一个常见的选择是拥有一个完全独立的报表服务器,您可以远程调用它,它会接管与用户的交互。

关于java - 在哪里适合 Jasper Reports - 前端还是业务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1179156/

相关文章:

java - 在圆圈内绘制随机点

java - JDK 8 是否支持 JasperReports 6?

java - 如何使用 Dynamic Jasper 动态设置 JRXML 属性

jasper-reports - 如何删除带有空文本字段的框架?

java - 在 JBOSS 5.1.1 中获取部署异常

java - 在 doGet 或 doPost 之外调用 EJB session

java - 在 Sun Application Server PE 8(大约 2005 年)上部署 {EAR,WAR} Web 应用程序?

java - 为什么在 Java EE 中使用 CDI

java - java中的正则表达式删除csv中的第一个值

java - 在流中使用过滤器