sbyrne
Members-
Posts
20 -
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 sbyrne
-
My static method does this: CustomReportDataSource ds = (CustomReportDataSource) RepositoryUtil .getThreadRepositoryContext().getRepository().getResource( null, dataSourceUri, null );Map properties = ds.getPropertyMap();MyDataSourceService service = new MyDataSourceService(); // implements ReportDataSourceService// cut - Read properties from the map and set them to service via it's settersMap params = new HashMap();// cut - Set params from args to static methodservice.setReportParameterValues( params );return params.get( JRParameter.REPORT_DATA_SOURCE );[/code]If I had a better way to get the subreport parameters, I could make this completely generic (for any ReportDataSourceService implementation, not just MyDataSourceService). I figured that Jasper server probably had a method that did just this - give it the URI to the data source, and it creates the ReportDataSourceService, sets the properties, and creates a JRDataSource via setReportParameterValues(Map), but I couldn't find it. So I figured I would write my own, but I cannot find access to the subreport parameters generically.
-
I am using datasourceExpression to call a static method that builds my custom data source. It there a way to access the subreportParameter map from my static method? Instead of this: <subreport> <dataSourceExpression><![CDATA[com.example.MyDataSourceUtil.createDataSource($F{myField},$P{myParam})]]></dataSourceExpression></subreport>[/code]I would like to do this: <subreport> <subreportParameter name="myField"> <subreportParameterExpression><![CDATA[$F{myField}]]></subreportParameterExpression> </subreportParameter> <subreportParameter name="myParam"> <subreportParameterExpression><![CDATA[$P{myParam}]]></subreportParameterExpression> </subreportParameter> <dataSourceExpression><![CDATA[com.example.MyDataSourceUtil.createDataSource()]]></dataSourceExpression></subreport> [/code]and access he parameter map somehow inside createDataSource().
-
/datasources/my_datasource_resource_id
-
I have a report that uses a custom data source using ReportDataSourceService. It works fine. I have another report that uses JDBC for its data source. I want to add a subreport to that report that uses my custom ReportDataSourceService data source. I can run arbitrary code by using datasourceExpression, but I do not know how to get access to my ReportDataSourceService. Is it possibly to get access to it from the RepositoryService returned by RepositoryUtil.getThreadRepositoryContext().getRepository()? I am not sure what I should pass as the URI to RepositoryService.getResource(ExecutionContext,String uri).
-
Post your tomcat logs.
-
I got the same InvalidKeySpecException doing something else. The workaround is to use Oracle's JRE 1.7.0 instead of OpenJDK.
- 12 replies
-
- scheduler
- jasperreports server
-
(and 4 more)
Tagged with:
-
I got the same InvalidKeySpecException doing something else. The workaround is to use Oracle's JRE 1.7.0 instead of OpenJDK.
- 1 reply
-
- connectivity
- jasperreports server
-
(and 3 more)
Tagged with:
-
Using Oracle's 1.7.0_72 fixed this issue. I tried using OpenJDK 1.8.0_31, but that led to the following error: 2015-04-01 12:46:46,183 ERROR ContextLoader,localhost-startStop-1:331 - Context initialization failedorg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'actionModelService' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.ExceptionInInitializerError at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1512) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:633) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5016) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5524) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649) at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1245) at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1895) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) 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.ExceptionInInitializerError at com.jaspersoft.jasperserver.api.engine.common.service.impl.ActionModel.generateActionModelDocument(ActionModel.java:193) at com.jaspersoft.jasperserver.api.engine.common.service.impl.ActionModelServiceImpl.generateActionModelMenus(ActionModelServiceImpl.java:112) at com.jaspersoft.jasperserver.api.engine.common.service.impl.ActionModelServiceImpl.afterPropertiesSet(ActionModelServiceImpl.java:80) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1571) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1509) ... 25 moreCaused by: java.lang.RuntimeException: XPathFactory#newInstance() failed to create an XPathFactory for the default object model: http://java.sun.com/jaxp/xpath/dom with the XPathFactoryConfigurationException: javax.xml.xpath.XPathFactoryConfigurationException: java.util.ServiceConfigurationError: javax.xml.xpath.XPathFactory: jar:file:/var/lib/tomcat7/webapps/jasperserver-pro/WEB-INF/lib/saxonhe-9.2.1.5.jar!/META-INF/services/javax.xml.xpath.XPathFactory:2: Illegal configuration-file syntax at javax.xml.xpath.XPathFactory.newInstance(XPathFactory.java:102) at com.jaspersoft.jasperserver.core.util.XMLUtil.(XMLUtil.java:46) ... 30 more
-
I am developing a custom JRDataSource that hits a REST service using TLS using jersey-client. I have test code that works when run on the AWS instance using the same JVM that tomcat uses, using a classpath of "/usr/share/tomcat7/webapps/jasperserver-pro/WEB-INF/lib/*". (The test code is in the jar with my custom JRDataSource in that directory.) At report generation time in jasper, I get this error: com.sun.jersey.api.client.ClientHandlerException: javax.net.ssl.SSLException: Server key at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:151) at com.sun.jersey.api.client.filter.HTTPBasicAuthFilter.handle(HTTPBasicAuthFilter.java:81) at com.sun.jersey.api.client.filter.GZIPContentEncodingFilter.handle(GZIPContentEncodingFilter.java:120) at com.sun.jersey.api.client.Client.handle(Client.java:648) at com.sun.jersey.api.client.WebResource.handle(WebResource.java:680) at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74) at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:507) at com.mycompany.jasper.MyDaoImplJersey1.getData(MyDaoImplJersey1.java:87) at com.mycompany.jasper.MyDataSourceService.setReportParameterValues(MyDataSourceService.java:56) at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.fillReport(EngineServiceImpl.java:1721) at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportFill.runWithDataSource(EngineServiceImpl.java:1082) at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportFill.runReport(EngineServiceImpl.java:1011) at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportRunnable.run(EngineServiceImpl.java:904) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745)Caused by: javax.net.ssl.SSLException: Server key at sun.security.ssl.Handshaker.throwSSLException(Handshaker.java:1212) at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:279) at sun.security.ssl.Handshaker.processLoop(Handshaker.java:878) at sun.security.ssl.Handshaker.process_record(Handshaker.java:814) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323) at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1300) at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468) at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:338) at com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke(URLConnectionClientHandler.java:249) at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:149) ... 15 moreCaused by: java.security.spec.InvalidKeySpecException: key spec not recognised at org.bouncycastle.jcajce.provider.asymmetric.util.BaseKeyFactorySpi.engineGeneratePublic(Unknown Source) at org.bouncycastle.jcajce.provider.asymmetric.ec.KeyFactorySpi.engineGeneratePublic(Unknown Source) at java.security.KeyFactory.generatePublic(KeyFactory.java:334) at sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.(HandshakeMessage.java:1057) at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:274) ... 28 moreObviously it is not an issue of the US_export_policy.jar, because my test code works fine with the same JVM.
-
Although using STARTTLS on port 587 is preferred, you can do it on port 25, and many mail servers do.
- 12 replies
-
- scheduler
- jasperreports server
-
(and 4 more)
Tagged with:
-
Studio 6.0.x includes jersey-client and jersey-common 2.4.1. Jasper Server 6.0.x includes jersey-core 1.13. Really TIBCO!? Be warned if you are trying to write a custom data source using jersey client.
-
I am not saying that Studio is having a problem talking to Server, but that the API available to hook into Server for customization is different from that on Studio.
-
I am trying to implement a custom JRDataSource to get data from a webservice. I modeled it on the webscraper example (https://community.jaspersoft.com/documentation/tibco-jasperreports-server-ultimate-guide/v60/custom-data-source-examples). I have an implementation of ReportDataSourceService with property definitions defined in the applicationContext-X.xml, where I define the base URL, username, and password for the data source. I then define report parameters in the JRXML for the query parameters for the specific report. I create a new JRDataSource instance each time MyReportDataSourceService.setReportParameterValues(Map) is called. This all works great. Now I want to use my custom JRDataSource in Studio Pro. I want to use a JRDataSourceProvider (as shown here: http://community.jaspersoft.com/wiki/how-create-and-use-jrdatasourceprovider-adapter) so I can implement getFields(JasperReport) so the report builders do not have to type in all the fields manually. But that interface gives me no way to configure my properties like I can with my ReportDataSourceService implementation, nor does it give me access to the report parameters at run time, which makes JRDataSourceProvider seem pretty useless. So, despite that I have no actual query, I implemented a QueryExecuterFactory. I put the properties in a file on the local file system, which is slightly inconvenient, but it works. So now the report builder needs to: define a Data Adapter using my custom JRDataSourceProviderselect the JRDataSourceProvider-based Data Adapter and click "Read Fields".select the "Domain JRS" data adapter.select my custom language, and leave the query box blank This seems convoluted. There is a disconnect between the server API and studio API. What am I missing? Is there something analogous to ReportDataSourceService for Studio that I am not aware of?
-
Oh yeah. That would not help me anyway, because I do not have access to the JasperReportsContext from the JRDataSourceProvider. I do not need a query, I just need parameters. Do I have to make a QueryExecuterFactory just to get the JasperReportsContext?
-
I created a custom JRDataSource, that is created by a custom ReportDataSourceService in Jaspersoft Server AWS, so I defined my properties in the applicationContext-x.xml and configured them for the data sources on the server. For Jaspersoft Studio Professional, I created a custom JRDataSourceProvider. How do I set my properties so I can get them from the JasperReport instance passed to JRDataSourceProvider.create(JasperReport)?
-
Ah, I thought the server would pick it up automatically, as it has the name and type in the jrxml. I set it up manually on the server, and now that works Now I have to figure out how to get this to work in Studio Pro.
-
I made a custom data source with a ReportDataSourceService, based on the Webscraper example. I can create the data source and run the report. But how do I get it to prompt for parameters, and make those parameters available to my JRDataSource? In my JRXML, I have, in the : I do not get prompted for "xxx, and I do not see them in the parameter map passed to ReportDataSourceService.setReportParameterValues(Map).
-
I have a web service that I want to get data from and put it into a Jasper report, and I am having a hard time figuring out how to do this from the available documentation. It started out trying define a custom Data Adapter based on an implementation of JRDataSourceProvider, but I cannot figure out how to configure it (e.g.: with URL and credentials). And even if I could, how do I get parameters from the report context to get the right data? I made a custom JRQueryExecutor and got it registered via a custom ExtensionsRegistry. I can put my configuration (URL, credentials) in the report parameters, but that configuration should not have to be done per-report, it should come from a Data Adapter (studio terminology). It seems like I should have a custom Data Adapter, and that it should be available to my JRQueryExecutor, but I do not see how to do this. Can somebody point me in the right direction?
-
I have to implement a custom JRQueryExecutor instead of a JRDataSourceProvider because I need acecss to the JasperReportsContext to get the data. How to I provide the list of fields for the JRDataSource returned from the createDatasource() method in my custom JRQueryExecutor? Something ala JRDataSourceProvider.getFields(JasperReport).
-
Is it possible to register a JRClauseFunction that will be used for any query executor? I have a custom ExtensionRegistry implementation. In Server 6.0.0, getExtensions(Class) is called with parameter net.sf.jasperreports.engine.query.QueryClauseFunctionBundle. I was hoping I could use this to support a custom clause to make string replacements in any query language. But on Studio Pro 6.0.0, I do not get a call to getExtensions(Class). The documenation (Ultimate Guide Third Edition page 80) says: I do not see anywhere in JRQueryExecutor to register a JRClauseFunction. Does this imply that I must do it internal to my JRQueryExecutor implementation, and cannot register one for use with arbitrary query languages?