据我所知,您需要将您的应用程序与BIRT运行时查看器集成,以便您可以从应用程序内生成报告,但由后端的BIRT查看器提供支持。下面是步骤
前准备活动 -
1)复制从哟web.xml中的所有内容你的BIRT查看器到你的应用程序的web.xml。 BIRT_VIEWER_HOME \ birt \ WEB-INF
2)复制BIRT_VIEWER_HOME \ birt \目录下的webcontent文件夹,并将其放入应用程序的根文件夹中。所以当部署在tomcat中时,它会创建一个目录结构 \ webapps \ yourapplication \ webcontent
3)创建一个jsp页面,里面有一个iframe。例如。其中有这样的内容,我已经离开了SRC为空,以便最初
<iframe src="" id="birtViewer" name="birtViewer" frameborder="0"
scrolling="no" class="reportframe"
style="height:600px;margin:0px;padding:0px;" />
通知report.jsp时,iframe将不会加载任何
3)基于一些点击或任何其他条件,设置这个iframe的SRC与此URL 报告=报告/“> HTTP:// LOCALDOMAIN:端口/ yourapplication /框架_report =报告/ & __format = PDF
例如使用JQuery我实现
$(document).ready(function(){
var url;
if(someCondition)
{
url = "frameset?__report=reports/testreport.rptdesign&__format=pdf";
}
else
{
url = "dummyPage.jsp";
}
$("#birtViewer").attr('src',url);//setting the src for iframe
})
。
4)这将为此报告加载带有BIRT参数的iframe。
5)你可以填写所有的参数,并点击“确定”按钮。该报告将在此iframe中生成。
我宁愿让你照顾安全方面。一个简单的安全措施是使用tomcat的Filter机制来检查BIRT查看器URL并查看它是否被经过身份验证或有会话的人访问。
UPDATE:
如果你想有一个中央BIRT执行点,创建一个批处理文件,传递参数调用从Java,然后得到所生成的位置报告。这种方式通过命令提示符以及Java/Tomcat很有用。下面的步骤
创建一个批处理文件,比如report.bat并在此处添加此代码。将 所有BIRT罐放在classpath中。我会省略为简洁
%JAVACMD% -Dlog4j.configuration="file:%APP_HOME%/conf/log4j.properties"
-cp "%CP%" -Djava.util.logging.config.file=%APP_HOME%/conf/birtlogger.properties
org.eclipse.birt.report.engine.api.ReportRunner %p1% %p2% %p3% %p4% %p5%
- %APP_HOME%/报告设置 变量的值,我把设计。您可以动态传递它 。
- p1到p5是我的5个参数,我将其传递给Report Runner的 。你可以传递任意数量的参数。
通过从您的Java/Tomcat调用此报表来运行报表。请参阅@ Adam的答案。
report.bat -f pdf -p "p1=paramValue1" -p "p2=paramValue2" -p
"p3=paramValue3" -p "p4=paramValue4" -p "p5=paramValue5" -o
%APP_HOME%\myreportfolder\NameofMyReport.pdf %APP_HOME%\NameofMyReport.rptdesign
您将获得%APP_HOME%\ myreportfolder生成的报告NameofMyReport.pdf。指出你的java代码从那里加载它。
如果您想要详细说明,请参阅this link。
我使用运行时作为来自python/django服务器的外部进程 - 我管理python服务器上的安全性,并从django内部调用BIRT到本地生成报告。但是你是否希望直接使用运行时来处理你的请求? –
我打算以某种方式将报告模块从我自己的应用中分离出来。我发现的是独立的war文件,可以在运行我的应用程序的同一台服务器上运行。据我所知,它们之间的通信应该使用HTTP请求。 –