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

stasp

Members
  • Posts

    229
  • 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 stasp

  1. Use caseIn this scenario, the database (either Redshift or one of database types available as Amazon RDS) is deployed in cloud, and TIBCO JasperReports® Server is deployed locally or somewhere outside AWS. The stepsIn this scenario you will have to use AWS credentials to connect to Amazon RDS/Redshift. One way to do this is to click on the Generate Credentials link in AWS Data Source dialog: And then follow the steps to generate a user with credentials from CloudFormation Template. It should be done within a minute. Another way to create the credentials is to log into your AWS console, go to Services -> IAM -> Users, select your user, go to the Security Credentials tab, and generate a new pair by clicking on the 'Create Access Key' button. WARNING: keep any active keys safe; if a malicious user gets a hold of the Access Key and the Secret Key, they will have access to the resources deployed on your AWS account and will be able to use them at your expense. Once created, copy the Access Key and the Secret Key to the data source fields. After this you can select the required region, find available databases with 'Find My AWS Data Sources' button and connect using your database credentials. Other notesYou may also have to specify your JasperReports Server's public IP address so that AWS data source can create a security rule on AWS for your server to be able to connect to Amazon RDS/Redshift. The IP is specified in the web interface of JasperReports Server under Manage->Server Settings->Cloud Settings: See also: Connecting to Amazon RDS/Redshift from JasperReports Server deployed on AWS
  2. Use caseIn this scenario, both TIBCO JasperReports® Server and the database (either Redshift or one of database types available as Amazon RDS) are deployed in cloud using the same account and/or in the same VPC. For example, this will be the case if you deploy Jaspersoft® for AWS BYOL Cluster and select the Automatic deployment: The steps In this use case connecting to AWS data source connection is relatively simple. When selecting to create a new AWS data source, you should see the 'Use EC2 instance credentials option selected (if JasperReports Server was deployed using one of the CloudFormation templates). When both JasperReports Server and the database are deployed on AWS, the AWS data source in JasperReports Server is able to automatically discover and list the databases you are able to connect to: In addition to discovering the database(s), AWS data source has a built in logic which will in most cases automatically configure the security rules on the database side to allow your JasperReports Server instance to connect to the selected database. In the example above, you would use the database credentials which were picked when creating the Jaspersoft for AWS BYOL Cluster from a cloud formation template: Also, if you are interested in using a non-default JDBC driver for AWS data source connection, please see the 'Changing the Default JDBC Driver for AWS Data Sources' section of the following chapter of TIBCO JasperReports Server Admin Guide: See also: Connecting to Amazon RDS/Redshift from JasperReports Server deployed on premises
  3. Issue descriptionAfter applying a cumulative hotfix for TIBCO JasperReports® Server v6.4.0 some reports fail with the following error: java.lang.NoSuchMethodError: net.sf.jasperreports.engine.fill.BaseReportFiller.getUsedPageWidth()ICause and solutionThe latest hotfix for JasperReports Server 6.4.0 contains an additional step which is not usually present in most hotfix packages: Delete the files listed in the section "Deleted files" from the web application files structure.The mentioned section lists the ../WEB-INF/lib/jasperreports-6.4.1.jar file, which you have to delete prior to applying the hotfix. Since this step is unique to the latest version of 6.4.0 hotfix, it is fairly easy to overlook
  4. IssueHere is a use case and corresponding issue reported by one of our users for their TIBCO JasperReports® Server instance integrated with CAS: User goes to http://mydomain/jasperserver-pro/flow.html?resource=%2freporrts%2f/testreport JasperReports® Server redirects to CAS login page http://mycas/cas/login?service=http://mydomain/jasperserver-pro/j_spring_security_check%3Bjsessionid=<some alpha numeric string> After user logs in, CAS redirects back to JasperReports Server, except it goes to http://mydomain/jasperserver-pro/login.html with error message "Invalid credentials supplied." This issue may be consistent or intermittent depending on your user session settings. The cause of the issue is the JSESSIONID passed as part of URL from JasperReports Server. SolutionThe issue can be avoided by adding the following setting to the ../WEB-INF/web.xml file: <session-config> <tracking-mode>COOKIE</tracking-mode> </session-config>It can be added right after the following section: <session-config> <!--Default to 20 minute session timeouts--> <session-timeout>20</session-timeout> </session-config>Save the file and make sure to restart the server to apply the changs. More details of such issue are discussed in the following thread on stackoverflow.com: https://stackoverflow.com/questions/1045668/jsessionid-is-occurred-in-all-urls-which-are-generated-by-jstl-curl-tag Ref. case #01476699
  5. Use caseA keypair is required for ssh connection to AWS instances. Such keypair has to be specified when launching a new TIBCO Jaspersoft® for AWS instance using CloudFormation templates: StepsTo create a new key pair, log into your AWS accounts and open Services -> EC2. Here, find the 'Key pairs' link and create a new key: This should create a new key for you and also download the corresponding .pem file. Now you can use this key to create an SSH connection to the EC2 instance once it's launched. Note that some tools (like PuTTY) will require you to convert the key file from .pem to .ppk format in order to connect.
  6. IssueWhen installing TIBCO JasperReports® Server on a local/private machine, the default documented login/password are superuser/superuser. However this combination does not work for JasperReports Server instances deployedo on AWS using one of the CloudFormation templates. ExplanationFor single instances, the default password for a newly created will be the same as your instance name: When deploying Jaspersoft for AWS Cluster, the default password will be the same as the password of the database created/used for this cluster: In both cases you will be prompted to change the password upon first login. This information is also mentioned on the Getting Started for JasperReports Server AWS instances
  7. Use case descriptionThe first deployment of TIBCO JasperReports® Server on AWS instance for the account using a cloud formation template failed for no clear reason (for the reference, a full list of pre-configured instances of JasperReports® Server on AWS can be found on this page). No AWS instance was successfully deployed for this account previously. Probable cause and solutionThe most common reason for a pre-configured cloud formation instance to fail is that the Sofrware Terms were not accepted for the account. The Software Terms are found on a separate page than the actual templates, which is why this step is easy to overlook. To accept the Software Terms, log into your AWS account and follow this link: https://aws.amazon.com/marketplace/search/results/ref=gtw_navgno_search_box?searchTerms=jaspersoft&search= Select the type of an instance you need (Hourly or BYOL) and follow the corresponding link. On the next page you should see an option to accept the terms if you have not done so yet. WARNING: once accepted DO NOT launch directly using 1-Click or the EC2 Console, but use a link to one of the cloud formation templates from this page instead. The Software Terms tab should look something (except for you it should be active if not accepted yet):
  8. IssueThe following concern was raised by one of our users: Jaspersoft html pages are missing lang tag at top of page content. Where top of current html for Jaspersoft is: <html> <head> <title>... page title..</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> ... page content here </html> should specify <html lang="en"> (for instance for English) at the top of the page. This both pre-sets the browser for the language (ensuring that cases where the browser detects a language translation are removed). Solution You should be able to add the lang tag to all the pages by editing the ../WEB-INF/decorators/decorator.jsp file and adding the lang attribute to the html tag like this: <html lang="<%=org.springframework.context.i18n.LocaleContextHolder.getLocale().getLanguage()%>"> Then save the file and restart the server. You may also need to clear browser cache to make sure the changes are displayed. _________ Ref. case #01471419
  9. Use caseFor the purpose of HA (high availability) in some environments it makes sense to have Oracle ODBC connections with scan listener/service name, and not a single instance name ProblemWhen creating a conneciton, you fill in the fields for Host, Port, and Service. The URL is generated like below: jdbc:oracle:thin:@my.host.name:1521:MYSERVICE Note the final ":" between the Port and Service. When testing you will likely get something like "TNSlistener does not currently know of SID" error. If you change the Service to the actual Instance name of "MYINSTANCE" instead of "MYSERVICE", the connection works but this defeats the entire point of HA SolutionUse the following URL connection string format, and leave Host, Port and Service fileds blank: jdbc:oracle:thin:@my.host.name:1521/MYSERVICE Note the final "/" between Port and Service. The "/" tells Oracle that the next parameter will be a Service Name. The ":" instead told Oracle that the next parameter was going to be an Instance name, and since it was not an Instance name Oracle threw an error. _________Ref. case #01479210
  10. IssueWhen HTML5 Chart Legend text exceeds the chart component width, the legend text is not wrapping to next line. As a result, some of the text is cropped and not displayed fully. How to configure the wrappingYou can use the following two Highchart properties to configure the output of the legend: <hc:chartProperty name="legend.itemStyle.textOverflow" value="null"/> <hc:chartProperty name="legend.itemStyle.width" value="400"/> These two proerties are based on the legend.itemStyle property of Highcharts API. You can find more details on this property here: http://api.highcharts.com/highcharts/legend.itemStyle _______ Ref. case #01486054
  11. Issue descriptionWhen trying to pass user token and other relevant parameters via URL, the application redirects to the login.html page instead of actually logging in. Here is an example URL: https://myhost:8443/jasperserver-pro/flow.html?_flowId=searchFlow&mode=search&filterId=myFIlterID&filterOption=myFilterOption&pp=u%3DmyUser+o%3DmyOrganization+exp%3D20170119184304 TroubleshootingThe most common reason of being redirected to the login page is authentication being denied because of incorrect parameter values, or because the timestamp provided from 'exp' parameter is already in the past. So that's the first thing you want to check. If the values are correct, next good step is to enable debug on entire spring security. In JasperReports® Server repository interface, add the following property under Manage->Server Settings->Log settings and set it to DEBUG: org.springframework.security Then try logging in again, and then check the /WEB-INF/logs/jasperserver.log file for any errors or other related messages. One example of a DEBUG message you may discover is this: DEBUG ExceptionTranslationFilter,http-nio-8443-exec-9:165 - Access is denied (user is anonymous); redirecting to authentication entry point org.springframework.security.access.AccessDeniedException: Access is denied For example in the case above the issue was that the separator sign in URL had to be encoded. E.g. instead of '+' separator symbol we had to put '%2B', like this: https://<host>:8443/jasperserver-pro?pp=u=myUser%2Bo=myOrganization Ref. case #01447230
  12. Issue descriptionWith Token authentication configured for JasperReports Server you may sometimes run into an error like this when trying to authenticate: 19-Jan-2017 16:49:36.418 INFO [http-nio-8443-exec-12] org.apache.coyote.http11.AbstractHttp11Processor.process Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986 at org.apache.coyote.http11.AbstractNioInputBuffer.parseRequestLine(AbstractNioInputBuffer.java:283) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1013) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) Explanation and solutionThere can be different reasons why the token cannot be parced, but often times it's just incorrect URL format. For example, Tomcat 8.0.39 and some other versions cannot handle requests with certain symbols in request parameters, for example the pipe symbol '|'. This issue is discussed in more details in the following thread on stackoverflow.com: http://stackoverflow.com/questions/41053653/tomcat-8-is-not-able-to-handle-get-request-with-in-query-parameters To get rid of the error you can change the default separator to a different symbol (for example '+') in the applicationContext-externalAuth-preAuth-mt.xml file in the following section: <bean class="com.jaspersoft.jasperserver.multipleTenancy.security.externalAuth.preauth.MTJSPreAuthenticatedUserDetailsService"> <!-- Token format configuration example for token: u=obama|r=PRESIDENT,HUSBAND|o=WhiteHouse|pa1=USA,Kenya|pa2=Washington --> <property name="tokenPairSeparator" value="|"/> ... </bean> Then save the file and restart the server ------------------------Ref. case #01447230
  13. Use caseBy default there is no TXT explorer available for Scheduler in TIBCO JasperReports® Server. This artcile describes steps to add this exporter in TIBCO JasperReports Server v6.0.1 and newer. For older versions refer to this article: http://community.jaspersoft.com/wiki/how-enable-plain-text-exporter-reportadhoc-view-or-configure-list-existing-exporters SolutionThe general steps to add a new exporter for scheduler are listed in TIBCO JasperReports Server Ultimate Guide in section 'Adding the Export Format to the Scheduler': http://community.jaspersoft.com/documentation/tibco-jasperreports-server-ultimate-guide/v630/adding-custom-export-channels However since all the classes for the TXT exporter are already implemented on the server, you can follow the guidelines in this section starting from step 4. In addition you will need to modify a javascript file to have the TXT format displayed on the UI. This file is located under the deployed jasperserver-pro folder in jasperserver-proscriptsbower_componentsjrs-uisrcschedulervieweditoroutputTabView.js The exporter should be added in the following section: availableFormats: [{ name: 'csv', num: 5 }, { name: 'html', num: 2 }, { name: 'rtf', num: 4 }, { name: 'docx', num: 8 }, { name: 'ods', num: 9 }, { name: 'xlsx.nopag', num: 12 }, { name: 'xls', num: 3 }, { name: 'odt', num: 6 }, { name: 'xlsx', num: 10 }, { name: 'xls.nopag', num: 11 }, { name: 'pdf', num: 1 }, { name: 'pptx', num: 14 }],[/code]For example: availableFormats: [{ name: 'txt', num: 7 }, { name: 'csv', num: 5 }, { name: 'html', num: 2 }, { name: 'rtf', num: 4 }, { name: 'docx', num: 8 }, { name: 'ods', num: 9 }, { name: 'xlsx.nopag', num: 12 }, { name: 'xls', num: 3 }, { name: 'odt', num: 6 }, { name: 'xlsx', num: 10 }, { name: 'xls.nopag', num: 11 }, { name: 'pdf', num: 1 }, { name: 'pptx', num: 14 }],[/code]To view these changes you'll also have to disable the optimized scripts in WEB-INF/js.config.properties by setting "javascript.optimize" property to false. Save the file and restart the server. This should add the exporter to scheduler, but this way TIBCO JasperReports Server will run on a non-optimized scripts. To optimize the scripts you'll have to follow the steps from the following section of TIBCO JasperReports Server Ultimate Guide: http://community.jaspersoft.com/documentation/tibco-jasperreports-server-ultimate-guide/v630/customizing-javascript-files Ref. case #01461059
  14. Issue descriptionThere can be different reasons for tooltip to display data different from what you expect. Often times the tooltip display configuration just needs to be adjusted, but there are also times when issue is not directly related to WHAT is configured to be displayed in the pop-up. One of our users ran into an 'issue' where tooltip content was displayed NOT for the data point which had mouse coursor over it. Like this: To compare, consider this behavior where tooltip content always corresponds to the data point with mouse pointer hovering over it: Explanation and solutionThe 'issue' on the first video is caused by the following property in a JR report: <hc:chartProperty name="tooltip.shared" value="true"/> This can be also replicated with Highcharts API by adding the following property in javascript: tooltip: { shared: true} According to the Highcharts API, "When the tooltip is shared, the entire plot area will capture mouse movement or touch events". Apparently this also leads to chart not being able to distinguish where is the mouse cursor in the plot area at a given moment.
  15. If i undertand your report design description correctly, you will have to move the data out of the Detail band to stop the repetition. For example keep the first Detail as is, and move the contents of the seconde Detail to the Group Footer. As long as the data is in Detail band it will get re-printed
  16. There is no opiton to configure this on a server-wide level. You'll have to limit the number of records on report level in query. For Ad Hoc reports however it is possible to configure the row limit across the server. The default limit is 100,000 rows
  17. Nicola, I don't believe you can run the JR samples as is without Ant. An alternative approach you may consider is to install Jaspersoft Studio and then install and run the samples there. The steps for this are outlined in the Studio Guide: http://community.jaspersoft.com/documentation/tibco-jaspersoft-studio-user-guide/v630/properties-and-configuration#kanchor208 - Stas
  18. Use caseWhen setting up a Log Collector, the output log file is by default encrypted. In some cases it is required to configure the encryption or, it just makes sense to disable encryption for simplicity. SolutionTo disable the encryption set the "allowEncryption" property for the diagnosticDataCipherer bean to "false". <bean id="diagnosticDataCipherer" class="com.jaspersoft.jasperserver.api.common.crypto.DiagnosticDataCipherer" parent="importExportCipher"> <property name="keyInPlainText" value="false"/> <property name="encryptedFileExtension" value="jsEncrypted"/> <property name="allowEncryption" value="true"/></bean>[/code] IMPORTANT: In TIBCO JasperReports® Server v6.3.0 and newer, this bean has been moved to ../WEB-INF/applicationContext-security.xml file. Ref. case #01438911
  19. Issue descriptionOne of our users was receiving the below error when trying to add new resources (Image, Resource bundle, Style etc) to JasperReports Server repositroy: -------------------------------- 2016-12-08 14:22:40,261 ERROR RenderViewExceptionInterceptor,[ACTIVE] ExecuteThread: '11' for queue: 'weblogic.kernel.Default (self-tuning)':58 - Internal server error occurred. Please contact your system administrator. org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.io.IOUtils.readFully(Ljava/io/InputStream;[b)V at org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1260) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:851) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:855) at javax.servlet.http.HttpServlet.service(HttpServlet.java:751) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829) at javax.servlet.http.HttpServlet.service(HttpServlet.java:844) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:280) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:254) at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:346) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79) at com.jaspersoft.jasperserver.war.StaticFilesCacheControlFilter.doFilter(StaticFilesCacheControlFilter.java:161) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) -------------------------------- SolutionThe issue is specific to WebLogic securrity patch 23744018. After installing the security patch 24904852 (or likely newer at this point) the issue should be resolved. -------------------------------- Ref. case #01438679
  20. Issue descriptionIn rare cases some of our users observed the following exception when running the pre-installed Audit report (located under /public/audit/reports/Audit_Report) when running JasperReports Server on Oracle database (note the 'ORA-01830: date format picture ends before converting entire input string' closer to the end of the stack trace): ------------------------ com.jaspersoft.jasperserver.api.JSException: exception getting data strategy Arguments: at com.jaspersoft.ji.adhoc.datasource.AdhocDataSourceService.setReportParameterValues(AdhocDataSourceService.java:172) at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.fillReport(EngineServiceImpl.java:1859) at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportFill.runWithDataSource(EngineServiceImpl.java:1205) at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportFill.runReport(EngineServiceImpl.java:1087) at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportRunnable.run(EngineServiceImpl.java:982) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.RuntimeException: exception getting dataset from cache at com.jaspersoft.commons.semantic.dsimpl.memory.MemoryDataSet.getWorkingDataSet(MemoryDataSet.java:147) at com.jaspersoft.commons.semantic.dsimpl.memory.MemoryDataSet.getWorkingDataSet(MemoryDataSet.java:75) at com.jaspersoft.ji.adhoc.strategy.CommonDomainDataStrategy.getWorkingDataSet(CommonDomainDataStrategy.java:1286) at com.jaspersoft.ji.adhoc.strategy.CommonDomainDataStrategy.getRuntimeDataSet(CommonDomainDataStrategy.java:1641) at com.jaspersoft.ji.adhoc.strategy.DomainDataStrategy.getRuntimeDataSet(DomainDataStrategy.java:259) at com.jaspersoft.ji.adhoc.strategy.FlattenedWorkingDataSetStrategy.getRuntimeDataSet(FlattenedWorkingDataSetStrategy.java:86) at com.jaspersoft.ji.adhoc.datasource.AdhocDataSourceService.setReportParameterValues(AdhocDataSourceService.java:145) ... 7 more Caused by: com.jaspersoft.commons.dataset.DataSetException: exception fetching from cache at com.jaspersoft.commons.datarator.BaseDataSetCacheImpl.getWorkingDataSet(BaseDataSetCacheImpl.java:283) at com.jaspersoft.commons.semantic.dsimpl.memory.MemoryDataSet.getWorkingDataSet(MemoryDataSet.java:110) ... 13 more Caused by: com.jaspersoft.commons.dataset.DataSetException: exception fetching data at com.jaspersoft.commons.datarator.CachedData.fetchData(CachedData.java:253) at com.jaspersoft.commons.datarator.BaseDataSetCacheImpl.getWorkingDataSet(BaseDataSetCacheImpl.java:279) ... 14 more Caused by: com.jaspersoft.commons.dataset.DataSetException: Exception calling JRDataSource.next() for query select * from ( select '/' as "groovy_ktenant3getTenantFolder", "jiauditevent"."EVENT_DATE" as "jiauditevent_EVENT_DATE", "jiauditevent"."EVENT_TYPE" as "jiauditevent_EVENT_TYPE", "jiauditevent"."REQUEST_TYPE" as "jiauditevent_REQUEST_TYPE", "jiauditevent"."RESOURCE_TYPE" as "jiauditevent_RESOURCE_TYPE", "jiauditevent"."RESOURCE_URI" as "jiauditevent_RESOURCE_URI", "jiauditevent"."TENANT_ID" as "jiauditevent_TENANT_ID", "jiauditevent"."USERNAME" as "jiauditevent_USERNAME", trunc("jiauditevent"."EVENT_DATE") as "jiauditevent_au_date", to_date(("jiauditevent"."EVENT_DATE" - trunc("jiauditevent"."EVENT_DATE")) * 86400, 'SSSSS') as "jiauditevent_au_time", case when ("jiauditevent"."RESOURCE_URI" like '/public/%') then ("jiauditevent"."RESOURCE_URI") else (case when (("jiauditevent"."RESOURCE_URI" is null)) then (null) else ('/' || substr("jiauditevent"."RESOURCE_URI", (length('/') + 1))) end) end as "jiauditevent_orguri", case when (("jiauditevent"."RESOURCE_URI" is null)) then (null) else ('/' || substr("jiauditevent"."RESOURCE_URI", (length('/') + 1))) end as "jiauditevent_orguri1", "jiauditeventproperty"."PROPERTY_TYPE" as "jiauditeventproperty_PROPERTY_", "jiauditeventproperty"."VALUE" as "jiauditeventproperty_VALUE" from "JIAUDITEVENT" "jiauditevent" left outer join "JIAUDITEVENTPROPERTY" "jiauditeventproperty" on ("jiauditevent"."ID" = "jiauditeventproperty"."AUDIT_EVENT_ID") left outer join "JITENANT" "jitenant" on ("jiauditevent"."TENANT_ID" = "jitenant"."TENANTID") where "jiauditevent"."EVENT_TYPE" in ('runReport') and "jiauditevent"."RESOURCE_TYPE" in ('ReportUnit') and (trunc("jiauditevent"."EVENT_DATE") between DATE '2016-12-21' and DATE '2016-12-21') and (("jiauditevent"."RESOURCE_URI" is null) or "jiauditevent"."RESOURCE_URI" like '/' || '%' or "jiauditevent"."RESOURCE_URI" like '/public/%') and (("jiauditevent"."RESOURCE_URI" is null) or not (case when (("jiauditevent"."RESOURCE_URI" is null)) then (null) else ('/' || substr("jiauditevent"."RESOURCE_URI", (length('/') + 1))) end like '/temp/%')) and (("jiauditevent"."TENANT_ID" is null) or "jitenant"."TENANTURI" like '/' || '%') order by "jiauditevent_au_date" desc, "jiauditevent_au_time" desc ) where ROWNUM <= 1000001 at com.jaspersoft.commons.semantic.dsimpl.JRQueryDataSet$JRDataSetIterator.next(JRQueryDataSet.java:462) at com.jaspersoft.commons.datarator.CachedData.fetchData(CachedData.java:217) ... 15 more Caused by: net.sf.jasperreports.engine.JRException: Error executing SQL statement for: null. at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:344) at com.jaspersoft.jasperserver.api.engine.jasperreports.util.JRTimezoneJdbcQueryExecuter.createDatasource(JRTimezoneJdbcQueryExecuter.java:169) at com.jaspersoft.commons.util.JSControlledJdbcQueryExecuter.run(JSControlledJdbcQueryExecuter.java:157) ... 1 more Caused by: java.sql.SQLDataException: ORA-01830: date format picture ends before converting entire input string at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:79) at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:206) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413) at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1034) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194) at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:791) at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:866) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1186) at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3387) at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3431) at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1491) at org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:82) at org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:82) at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:310) ... 3 more ------------------------ SolutionWhile we did not identify the exact cause of this issue as it appears to be environment-specific, the problem can be resolved from JasperReports Server's side by by adding the 'round' function for Oracle SQL generator in ../WEB-INF/applicationContext-semanticLayer.xml file: <entry key="round"> <value>"round(cast (" + sqlArgs[0] + " as numeric), " + sqlArgs[1] + ")"</value> </entry> and modifying the 'Time': <entry key="Time"> <value>"to_date(round((" + sqlArgs[0] + " - trunc(" + sqlArgs[0] + ")) * 86400), 'SSSSS')"</value> </entry> ------------------------Ref. case #01441915
  21. Issue descriptionWhen exporting Dashboard or Chart reports to output formats like PDF, PNG etc. using PhantomJS rendering engine, report outputs are printed with no text. For example a table report rendered in Dashboard may look like this: SolutionWhile PhantomJS is a headless browser which presumably has all required resources to render web pages, in practice it appears that it relies on web fonts to be already present on the system. One simple solution is to install a web browser like Mozilla Firefox onto the system (it is common to not have any web browsers on systems with no user interface). Another potential solution is to explicitely install web fonts onlo the system, like for example discussed in this thread: http://stackoverflow.com/questions/36365860/phantomjs-screenshots-not-showing-text ----------------------------- Ref. case #01448344
  22. Reason for this short articleWhen running a Dashboard with multiple reports it is not obvious how the reports on this Dashboard are executed. The fact that report queries are printed in the the output log one after another may add to the confusion and lead to an assumption that reports are executed one after another, one report at a time. This has been a concern for some of our users. The purpose of this post is to shed some light on how Dashboard reports run ExplanationDashboards in JasperReports Server (JRS) version 6.3 make use of Visualize.js API. If you are using browser tools (common shortcut to open is the F12 key) you can watch the http requests being made by the browser. Visualize.js largely makes use of the REST API, so you should see request for REST 'reportexecutions' service. So the server receives these RESTful http requests in order that the browser sends them, and it queues them up just like every other inbound http request it receives. The JRS webapp is servlet-based, so the application server (tomcat, jboss, websphere) has some threads which process each inbound request and responds when finished (http response flushed back from JRS layers through application server layers through any webserver or proxy to browser). If you ran 6 reports via the web UI in rapid succession the same thing would occur if you ran your 6-dashlet dashboard - appserver worker threads would do session and app-level work, call JR library code, grab DB connections from the DB connection pool, start filling and exporting to respond back. If, for example, you had a single-threaded appserver and just a single connection in the connection pool, then DB queries would be executed in serial. But in practice this isn't the case, you probably have bunches of appserver threads and a minimum of 20 db connections in the pool, which means the report execution requests are generally managed by the app server in parallel. ----------------------------Ref. case #01450315
  23. Use caseThe requirement in this case is to have the % symbol next to a value displayed in an Ad Hoc report. Since Ad Hoc reports utilize the formatting masks provided by Java, when adding the '%' to a number patter the value will automatically get multiplied by 100. When database data is already stored as a percentage value this additional multiplication is redundant and needs to be avoided. SolutionThe basic procedure to add/configure Ad Hoc data format masks is outlined in JRS Admin Guide (see the "Setting Data Format Masks" at the bottom of the page below): http://community.jaspersoft.com/documentation/tibco-jasperreports-server-administrator-guide/v630/creating-locale When using the % sign in a pattern mask, it needs to be additionally put into single quotes to avoid the multiplication of the original value, e.g.: ADH_100_MASK_int_4 = #.##0'%'ADH_100_MASK_dec_5 = #,##0.00'%' Here's how it looks in the adhoc_masks.properties file: For more details on Java pattern masks see the official documentation: https://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html ----------------------------- Ref. case #01450871
  24. Use caseIt is sometimes convenient to use existing Ad Hoc reports as subreports for reports created in Jaspersoft Studio. SolutionStarting from JasperReports Server v6.2.1 it is possible to use Ad Hoc reports as subreports by leveraging the com.jaspersoft.jrs.data.source property and pointig it to an Ad Hoc View correspondent to the Ad Hoc report. This property needs to be configured in the subreport JRXML, not in JRXML of the main report: Attached is a working example (it will be imported into /Public folder) here's how it can be replicated: - create an Adhoc view and a report- copy the report JRXML and set the com.jaspersoft.jrs.data.source property to the path of the Adhoc view- for table reports, you currently need to explicitly pass true for a parameter called _AdHocTableFlattenedDS Note that Adhoc charts currently grow to render on the whole page in the viewer, if the master report page has other elements the chart will likely ruin the layout. ----------------------Ref case #01450923
  25. Problem Description:Running a query in Jaspersoft Studio (JSS) against ORACLE database causes an exception: Caused by: java.sql.SQLSyntaxErrorException: [TibcoSoftwareInc][Oracle JDBC Driver][Oracle]ORA-00911: invalid character Solution:The issue is likely caused by running a query with semicolon ';' at the end. While such query may run fine directly agains the database, it will cause issues in JSS. Here is an example query which caused such issue: select StartDate, EndDate from (WITH My_DateRange AS ( SELECT from_tz(to_timestamp('2016-08-15 00:00', 'YYYY-MM-DD HH24:MI') , 'America/New_York') at time zone 'UTC' as StartDate, from_tz(to_timestamp('2017-01-16 00:00', 'YYYY-MM-DD HH24:MI') , 'America/New_York') at time zone 'UTC' as EndDate FROM DUAL ) SELECT StartDate, EndDate from My_DateRange ); Removing the semicolon at the end resolved the issue: select StartDate, EndDate from (WITH CTE_DateRange AS ( SELECT from_tz(to_timestamp('2016-08-15 00:00', 'YYYY-MM-DD HH24:MI') , 'America/New_York') at time zone 'UTC' as StartDate, from_tz(to_timestamp('2017-01-16 00:00', 'YYYY-MM-DD HH24:MI') , 'America/New_York') at time zone 'UTC' as EndDate FROM DUAL ) SELECT StartDate, EndDate from CTE_DateRange ) --------------------------------Ref. case #01451852
×
×
  • Create New...