JasperReports Server on Cloud Foundry

最近由於實驗室工作的需要,有一些時間在做Cloud Foundry上對於著名的報表引擎JasperReports的支持。


關於官方的講述可以參考地址:http://blog.cloudfoundry.com/2012/01/12/java-reporting-engine-is-now-available-on-cloud-foundry-via-jasperreports/


確切的說,JasperReports Server是作爲一個app應用運行在Cloud Foundry上。既然作爲一個app,那麼必定會佔據內存,CPU等資源,在這裏需要說的是,JasperReports Server這個app佔用的內存接近2GB,所以在做JasperReports Server部署的時候,請確保內存容量的充足。另外JasperReports Server作爲一個報表引擎被加入Cloud Foundry,很大程度上是需要做到對Cloud Foundry本身service instance的報表生成,所以Cloud Foundry本身的service instance是JasperReports Server的數據源。


關於JasperReports Server這個app的源碼下載,地址爲:http://sourceforge.net/projects/cloudfoundry/?source=dlp 


以下是具體使用JasperReports Server的流程。


1.部署應用程序 jasperreportsserver-ce-4.7-cloudfoundry


首先在該應用程序目錄下執行vmc push命令,如圖:


如此簡單即部署完JasperReports Server了,執行vmc list命令,可以看到:


大家可以看到的是,關於JasperReports Server這個app已經在運行了,名爲jrs-ce-47,另外還bind了一個service,名爲jrs-repo-47,其實這個service是一個MySQL的服務實例。如果需要去看一下該數據庫的schema的話,可以去cloud_controller的postgres數據庫去找名爲jrs-repo-47的service,從而從該service信息的credential中找到該數據庫的數據庫名(實際爲一連串的字符,比如在我Cloud Foundry中名爲:d2b83816869c043f4b429a2d7ef6f78c4)。知道數據庫名之後就可以通過mysql的console進去查看該數據庫的數據表以及表內數據。本此實驗主要使用了該數據庫中的數據表JIAccessEvent 。


2.使用iReport生成報表格式


如果你熟悉iReport和JasperReports Server的話,就會知道其實JasperReports Server是一個生成報表的工具,但是生成報表的前提有兩個:一個是報表的模板,另一個是生成報表所需要的數據。而iReport正是用來做到第一個前提的。以下便是如何使用iReport創建一個最簡單的jrxml文件。

第一步:打開iReport,創建一個數據庫連接

然後選擇datasource的類型,這裏就是JDBC連接:

點擊next,進入具體連接的配置環節:

其中Name處可以隨便取名,JDBC Driver處如圖選擇,URL處將DatabaseName改爲你的數據庫名字,比如說我的是d2b83816869c043f4b429a2d7ef6f78c4,然後Username和Passeord就填該數據庫的用戶和密碼。一旦這些信息都填寫完畢以後,可以點擊Test按鈕查看數據庫是否可以訪問,也就是查看配置信息是否可用,如果沒有沒有問題,則會顯示:

這樣的話,第一步建立數據庫連接的過程已經完成。

第二步:創建一個新的報表

點擊進去之後,就進入新建模式,如圖:

點擊Blank A4,然後選擇Launch Report Wizard,進入新建的具體選項選擇:

最後經過一系列的設計,就可以生成報表格式了,比如我的格式爲:

最後一定要知道最後的jrxml文件的文件目錄地址,因爲在JasperReport Server需要這個報表模板。


3.使用JasperReport Server生成最終的報表

由於已經在第一步完成了JasperReport Server這個app在Cloud Foundry上的部署,所以我們早就可以訪問該URL了,比如我的是:jrs-ce-47.gatewayallen.com,如圖:


關於這裏的用戶名密碼,可以使用jasperadmin,關於這個用戶的權限等,可以去參看jaspersoft的官方文檔。登錄進去後,可以看到在root目錄下就有一個service instance,也就是jrs-repo-47,或者說這個實例已經和JasperReport Server綁定完畢,或者也可以理解爲關於JasperReport Server需要的數據源具備,現在我們需要做的就是如何將第二步中生成的jrxml文件引入進來。如圖:

右擊CF文件夾,並一次找到JasperReport選項,並點擊,得到以下效果:


選擇上傳剛纔生成的jrxml文件,併爲該文件命名name和resource id,最後點擊左下角的submit按鈕。這樣就可以在reposity中看到jrs-ca這個報表格式了,隨後右擊jrs-ca選擇edit:

進入之後,選擇第三項DataSource,這樣的話,我們就可以爲該報表模板選擇數據源了,如圖:


可以看到root下的數據源,也就是綁定的service instance終於可以用上了,點擊select按鈕以後,就選擇了,然後還要點擊左下角的submit按鈕,最終提交:


其實,從原理上來講的話,JasperReport Server生成報表的兩個前提我們都已經做好的,接下的就只要執行生成報表的最後一下了,如圖:

點擊run,並且稍等片刻的話,一個最簡單的報表就可以呈現在你面前了,如圖:

是不是和之前的模板很類似哈,到此爲止,JasperReport Server所做的最基本工作,已經完成。


最後,希望這些對你的Cloud Foundry使用有所幫助。

如須交流,請關注新浪微博:蓮子弗如清


發佈了47 篇原創文章 · 獲贊 10 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章