Powered By

Skin Design:
Free Blogger Skins

Powered by Blogger

Cari Blog Ini

11 Februari 2008

Scriptlet dan Jasper Server

Masih ingat posting sebelumnya tentang scriptlet dan iReport? Itu loh, modul object yang berisi event fill data di iReport. Waktu itu memang saya sudah berhasil membuat report yang menggunakan scriplet. Saya test, berhasil. Masalahnya adalah ketika akan meng-upload report tersebut ke Jasper Server.

JasperServer menggunakan server Tomcat (karena JSP), maka ketika saya upload report, class scriplet nya tidak ikut ter-upload. Ketika report di buka melalui JasperServer, maka akan muncul pesan:

SOBOScriptlet cannot be resolved to a type

Hal ini menunjukkan bahwa class scriptletnya tidak dikenali. Bagaimana caranya agar class tersebut dikenali? Dari manual JasperServer, kita harus menambah Resources berupa file JAR yang berisi class scriptlet.
Caranya, pertama buat JAR terlebih dahulu. Jika sudah, pilih report, kemudian Add Resource. Pilih Upload From File System dan ambil file JAR yang telah dibuat tadi.

Selanjutnya tekan next, dan isikan:

* Name
* Label
Description
Type Jar

Name dan Label harus diisi sesuai dengan nama Scriptlet, biasanya [Nama Scriptlet] + "Scriptlet". Untuk lebih jelasnya, coba liat di jrxml nya.

Setelah itu, tekan next sampai selesai dan save.
Sekarang, coba buka report ber scriptlet tersebut.
Loh!!! Sekarang koq malah errornya ganti?
org.springframework.webflow.ActionExecutionException:
Exception thrown executing [AnnotatedAction@59090
targetAction = com.jaspersoft.jasperserver.war.action.ViewReportAction@156186b,
attributes = map[[empty]]] in state 'verifyData' of flow 'viewReportFlow';
nested exception is com.jaspersoft.jasperserver.api.JSExceptionWrapper:
net.sf.jasperreports.engine.JRException:
Errors were encountered when compiling report expressions class file:
1. The type it.businesslogic.ireport.IReportScriptlet cannot be resolved.
It is indirectly referenced from required .class files
/*
^
1 errors
Lama sekali saya berkutat dengan error ini sampe akhirnya hari ini saya tahu solusinya! Error diatas adalah akibat class scriptlet yang kita buat membutuhkan parrent object yaitu it.businesslogic.ireport.IReportScriptlet
Sedangkan si JasperServer tidak meng-include JAR yang berisi IReportScriptlet (iReport-1.2.4.jar) di direktori library-nya. Untuk itu, coba copy JAR tersebut di [TOMCAT DIR]/common/lib dan [TOMCAT DIR]/webapps/jasperserver/WEB-INF/lib

Selanjutnya restart tomcat, dan semuanya beres.

Akhir kata...ceile...sok pidato, agar scriptlet anda dapat digunakan, maka hal yang perlu di lakukan:
  1. Bundle class-class scriptlet di satu JAR
  2. Upload jar
  3. Enable Scritplet di JasperServer dengan mengcopy iReport-1.2.4.jar (file bisa berbeda) ke direktory lib Tomcat

2 komentar:

Unknown mengatakan...

Saya sudah coba jasper + scriptlet jalan dengan lancar di IDE Ireport, tapi saya bingung meletakkan class dari scriptlet tadi ke direktory server adempiere.

Musti diletakkan dimana ya mas ?

Gue!Shindu mengatakan...

Wah saya klo di Adempiere blm coba. Saya baru coba untuk di JasperServer (WEB server untuk menampilkan iReport).

Tapi logikanya, class scriptlet di jadikan 1 directory dgn class reportnya