Jump to content
We've recently updated our Privacy Statement, available here ×

kkumlien

Members
  • Posts

    137
  • Joined

  • Last visited

 Content Type 

Profiles

Forum

Events

Featured Visualizations

Knowledge Base

Documentation (PDF Downloads)

Blog

Documentation (Test Area)

Documentation

Dr. Jaspersoft Webinar Series

Downloads

Everything posted by kkumlien

  1. Depending on what exactly you need to monitor, there are many tools out there. Here's a nice summary: https://blog.jakubholy.net/wiki/development/ops-monitoring/ (I would add Dynatrace to that list) I recommend reviewing the Server Diagnostics section in the JRS Admin Guide, in particular: https://community.jaspersoft.com/documentation/tibco-jasperreports-server-administrator-guide/v750/exposing-diagnostics-through JMX can be used by many tools to monitor the application. See also: https://community.jaspersoft.com/wiki/performance-troubleshooting-tools
  2. ProblemWhen running a bundled installer for TIBCO JasperReports® Server on macOS 10.15 Catalina, the installer fails silently or presents one of the messages below. PLEASE NOTE: Catalina is not officially supported (certified) on JasperReports® Server 7.5.0 and earlier versions. If you are concerned with getting support from TIBCO, please choose version 7.5.1, 7.8.0 or later. See New Features in 7.8.0: https://community.jaspersoft.com/documentation/tibco-jasperreports-server-release-notes/v780/new-features We use TIBCO JasperReports® Server Community Edition 7.2.0 in this example, but this should be applicable to other editions or versions that are impacted. Messages“TIB_js-jrs-cp_7.2.0_macosx_x86_64.app” cannot be opened because the developer cannot be verified. macOS cannot verify that this app is free from malware. $ open TIB_js-jrs-cp_7.2.0_macosx_x86_64.appLSOpenURLsWithRole() failed with error -10810 for the file .../TIB_js-jrs-cp_7.2.0_macosx_x86_64.app.$ ./TIB_js-jrs-cp_7.2.0_macosx_x86_64.app/Contents/MacOS/installbuilder.sh./TIB_js-jrs-cp_7.2.0_macosx_x86_64.app/Contents/MacOS/installbuilder.sh: line 18: ./TIB_js-jrs-cp_7.2.0_macosx_x86_64.app/Contents/MacOS/osx-intel: Bad CPU type in executable[/code]Each message will vary slightly depending on the edition / version. SolutionAssuming you have obtained the installer from a trusted source, such as a tibco.com or jaspersoft.com website, first thing you need to enable the installer by going to System Preferences > Security & Privacy > then (if you see the message "“TIB_js-jrs...x86_64.app” was blocked from use [...]" or similar) click on Open Anyway. It will ask you again "macOS cannot verify the developer of “TIB_js-jrs-cp_7.2.0_macosx_x86_64.app”. Are you sure you want to open it?" > click Open. The bundled installer is based on the BitRock™ InstallBuilder™, which has added Catalina support in a recent release, see https://installbuilder.bitrock.com/changelog.html. Download one of those recent releases, such as https://installbuilder.bitrock.com/installbuilder-19.10.0-osx-installer.dmg Extract the app bundle from the dmg file: e.g. open the dmg file, then drag the app file from there and drop to a local directory Copy the binary file and related .dat file from the InstallBuilder app into the JasperReports Server app and overwite the files there. For example: $ cp installbuilder-19.10.0-osx-installer.app/Contents/MacOS/osx-x86_64 TIB_js-jrs-cp_7.2.0_macosx_x86_64.app/Contents/MacOS/osx-intel[/code]and: $ cp installbuilder-19.10.0-osx-installer.app/Contents/Resources/osx-x86_64.dat TIB_js-jrs-cp_7.2.0_macosx_x86_64.app/Contents/Resources/osx-intel.dat[/code]Now you should be able to run the installer normallyIf you're unable to accept the License Agreement because the button is not visible, cancel and run the installer from the command line. See the help: $ ./TIB_js-jrs-cp_7.2.0_macosx_x86_64.app/Contents/MacOS/installbuilder.sh --helpJasperReports Server CP 7.2.0 7.2.0Usage: --help Display the list of valid options --version Display product information --unattendedmodeui <unattendedmodeui> Unattended Mode UI Default: none Allowed: none minimal minimalWithDialogs[...] --jasperLicenseAccepted <jasperLicenseAccepted> Do you accept this license? Default:[...][/code]Then run it this way to accept the license automatically: $ ./TIB_js-jrs-cp_7.2.0_macosx_x86_64.app/Contents/MacOS/installbuilder.sh --jasperLicenseAccepted true[/code]Just click Next at the License Agreement screen and it should continue.
  3. The samples mentioned by Teodor can be found in the library distribution zip file or here: https://github.com/TIBCOSoftware/jasperreports/tree/master/jasperreports/demo/samples
  4. Current feature request is tracked here: https://community.jaspersoft.com/jasperreports-library/issues/4185
  5. Thanks for sharing this and for updating https://community.jaspersoft.com/wiki/how-use-custom-hyperlink-handler-dashboard-tibco-jasperreports-server ! I upvoted question and answer :)
  6. See latest comment on the bug report here: https://community.jaspersoft.com/jasperreports-server/issues/10886#comment-859521 It might not help for Studio but it might for JasperReports Server.
  7. What do you see if you paste the URL from the error into a browser? You will probably see a message that an API key is required. Google made it mandatory in 2016: https://developers.google.com/maps/standard-plan-2016-update
  8. See latest comment on the bug report here: https://community.jaspersoft.com/mongodb-connector/issues/10886#comment-858831
  9. See latest comment on the bug report here: https://community.jaspersoft.com/mongodb-connector/issues/10886#comment-858831
  10. Hitoshi, thanks for taking the time to write a note at this difficult time. You're an amazing contributor to this community, some rest is more than deserved. My condolences and deepest sympathies for your loss.
  11. Hi Alessandro, please ask a new question here: https://community.jaspersoft.com/answers
  12. Go to: https://community.jaspersoft.com/bug-tracker > Click "Create new Bug Report" > Select Project: "Jaspersoft Studio" Or go to: https://community.jaspersoft.com/node/add/bug?field_bug_project=496
  13. javattitude.com is down and there is no copy on the web archive, but there is this blog: https://javattitude.wordpress.com/2017/04/16/saml-2-0-authetication-with-jasper-server-6-3/
  14. Hi Joey, I posted my answer nearly 4 years ago :D Things tend to move fast in software. The repo moved to GitHub since, I've updated the answer.
  15. In a report sometimes the data source / database / network is performing badly or maybe the query is just too complex. In some cases it would be useful to be able to run a query just once in the report, but then cache the data and reuse it in multiple components or datasets. Attached to the bottom of this article (here), we provide a sample JRXML file to show one way to implement this via the JRDataSource interface, which is documented here: https://community.jaspersoft.com/documentation/tibco-jaspersoft-studio-user-guide/v71/working-jrdatasource-interface-0http://jasperreports.sourceforge.net/sample.reference/datasource/index.html#datasourcesThe custom code below is required for the report to work and needs to be compiled into a JAR file and made available where the report is running (e.g. in Jaspersoft Studio or JasperReports Server). See also here for other possible approaches: How to use multiple data sources in Jaspersoft Studio or JasperReports Server This example is based on the product table which is available in the Foodmart sample database. Please be aware that this sample code is provided AS IS, it is your responsibility to review it and make sure it satisfies your requirements. Feel free to modify it and adapt it to your needs. Also bear in mind that LOADING TOO MUCH DATA MIGHT EXHAUST YOUR SERVER MEMORY, so use with caution. Custom BeanCreate a class that holds fields required by your report, for example: package com.example.jaspersoft.reportcache; // Custom Bean public class CBean { private String brand_name; private String product_name; private Float gross_weight; public void setbrand_name(String brand_name) { this.brand_name = brand_name; } public String getbrand_name() { return this.brand_name; } public void setproduct_name(String product_name) { this.product_name = product_name; } public String getproduct_name() { return this.product_name; } public void setgross_weight(Float gross_weight) { this.gross_weight = gross_weight; } public Float getgross_weight() { return this.gross_weight; } } Data SourceCreate a class that iterates through a result set and stores the rows in a collection (JRBeanCollectionDataSource), for example: package com.example.jaspersoft.reportcache; import java.util.ArrayList; import java.util.Collection; import java.util.logging.Logger; import net.sf.jasperreports.engine.JRDataSource; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JRResultSetDataSource; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; import net.sf.jasperreports.engine.design.JRDesignField; public class CollectionDS { static final Logger LOGGER = Logger.getLogger(CollectionDS.class.getName()); public static JRBeanCollectionDataSource jdbc2CollectionDS(JRDataSource res) throws JRException { JRBeanCollectionDataSource ds = null; LOGGER.fine("Inside JRBeanCollectionDataSource"); JRDesignField f = new JRDesignField(); f.setName("brand_name"); f.setValueClass(java.lang.String.class); f.setValueClassName("java.lang.String"); JRDesignField f2 = new JRDesignField(); f2.setName("product_name"); f2.setValueClass(java.lang.String.class); f2.setValueClassName("java.lang.String"); JRDesignField f3 = new JRDesignField(); f3.setName("gross_weight"); f3.setValueClass(java.lang.Float.class); f3.setValueClassName("java.lang.Float"); LOGGER.fine("After JRDesignField"); Collection<CBean> coll = new ArrayList<CBean>(); if (res instanceof JRResultSetDataSource) { while (((JRResultSetDataSource) res).next()) { String brand_name = (String) res.getFieldValue(f); String product_name = (String) res.getFieldValue(f2); Float gross_weight = (Float) res.getFieldValue(f3); CBean product = new CBean(); product.setbrand_name(brand_name); product.setproduct_name(product_name); product.setgross_weight(gross_weight); coll.add(product); } } else { throw new JRException("Your Data Source MUST be of type JRResultSetDataSource in JSS or JRS, or JSControlledResultSetDataSource in JRS"); } ds = new JRBeanCollectionDataSource(coll); LOGGER.fine("JRBeanCollectionDataSource ds: " + ds.getRecordCount()); return ds.cloneDataSource(); } public static JRBeanCollectionDataSource rewind(JRBeanCollectionDataSource res) throws JRException { // JRBeanCollectionDataSource ds = res.cloneDataSource(); res.moveFirst(); return res; } } ReportIn your report, use the existing JDBC connection to generate the result set, for example: Create a Variable with name myCollection:Value Class Name: net.sf.jasperreports.engine.data.JRBeanCollectionDataSourceCalculation: SystemInitial Value Expression: com.example.jaspersoft.reportcache.CollectionDS.jdbc2CollectionDS(new JRResultSetDataSource($P{REPORT_CONNECTION}.createStatement().executeQuery("SELECT brand_name, product_name, gross_weight FROM product")))Leave empty any other fieldsIf you want to use the query of the main report dataset, use this instead of the static query text: $P{JASPER_REPORT}.getQuery().getText()Create a Sub Dataset with name Dataset1, then use it in your element, for example an HTML5 Chart. Let's call it Chart1In Chart1: use a DataSource expression with value: $V{myCollection}Do the same above in another element, let's call it Chart2, but use this in the DataSource expression: com.example.jaspersoft.reportcache.CollectionDS.rewind($V{myCollection})See screenshots below as examples We recommend setting the main report dataset to a dummy query (for example in PostgreSQL: SELECT 1), as your main query will run in a secondary dataset, to be then reused in other datasets. If you use it in both places, it will run twice and reduce the performance gain of running it only once. Verify the query runs only onceFirst of all, please follow instructions from Configuring Apache Commons Logging and Log4J in Jaspersoft Studio to enable Apache Commons Logging in Jaspersoft Studio. Then add following lines to log.properties: #jr caching customization com.example.jaspersoft.reportcache.CollectionDS.level = FINE com.example.jaspersoft.reportcache.CBean.level = FINE org.postgresql.level=FINESTYou should see similar records in your studio-common.log Feb 08, 2019 12:40:19 PM org.postgresql.core.v3.QueryExecutorImpl sendParse FINEST: FE=> Parse(stmt=null,query="select 1",oids={}) ... Feb 08, 2019 12:40:19 PM org.postgresql.core.v3.QueryExecutorImpl sendParse FINEST: FE=> Parse(stmt=null,query="SELECT brand_name, product_name, gross_weight FROM product",oids={})To use the classes in your reports, put the compiled class files in WEB-INF/classes or the JAR file in WEB-INF/lib in your JasperReports Server directory, for example /Applications/jasperreports-server-7.1.0/apache-tomcat/webapps/jasperserver-pro/WEB-INF/lib. customization_jr-reportcache_upd.jrxml
  16. Also documented here: https://community.jaspersoft.com/documentation/tibco-jaspersoft-studio-user-guide/v71/setting-advanced-options-html5-charts-0
  17. Hi Karen, as Dashboards are not a feature of the Community Edition, can you please log a case to the Support portal? Thank you!
  18. I believe Log4j (as opposed to Commons Logging) works only if a class uses it explicitly? For example net.sf.jasperreports.engine.query.JRJdbcQueryExecuter does not work in debug in log4j-config.properties, but it worked for me when set in log.properties: net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.level = FINE Btw it only works if I comment out the FileHandler level, otherwise it stays everything at INFO level instead of FINE: # java.util.logging.FileHandler.level = INFO
  19. Have you looked into the sample Custom Bean Data Source? https://community.jaspersoft.com/documentation/tibco-jasperreports-server-ultimate-guide/v710/custom-data-source-examples
  20. Hi M Chisty, why do you need access to the .jasper file on the server? It should be an internal object stored in a temp area of the app server once a report is executed, and not accessible to JRS users. You could download the JRXML file via REST and then compile it locally.
  21. Only MongoDB versions 3.0-3.4.1 are certified: https://community.jaspersoft.com/documentation/v710/tibco-jasperreports-server-supported-platform-datasheet
  22. Same solution for Redshift: https://community.jaspersoft.com/wiki/server-error-when-using-derived-table-redshift
  23. See solution here: https://community.jaspersoft.com/wiki/getting-timeout-pop-message-tibco-jasperreports-server-dashboard-designer
×
×
  • Create New...