如何在 Jasper Server 中部署 Jaspersoft Bean Datasource?
How can Jaspersoft Bean Datasource be deployed in Jasper Server?
任何人都可以帮助我逐步完成在 Jaspersoft 服务器中添加 Bean DataSource(bean 集合)的过程吗?是否有直接推送 jar 文件以便服务器可以识别它的简单过程?
这是我执行的步骤(简化名称)
在 Studio 项目中
创建一个名为 Person 的 Java Bean,其中包含字段和 getter/setters
创建一个简单的 Java Class 连接到名为 com.company.test.PersonFactory 的数据库,它有一个方法 generator() 其中 returns 一个 List,它使用简单的 jdbc 调用,两个 类 都在我的 Jasper 中项目
创建了一个名为 testBean 的数据适配器并输入 com.company.test.PersonFactory 作为工厂 Class 和生成器作为工厂中的静态方法。
创建一个新的jasper报告(testReport1)并使用数据适配器testBean,点击Java Bean选项卡,输入Person作为类名,添加所有字段,验证数据预览,保存
在资源库资源管理器中
创建一个新的数据源>数据源Bean,输入bean1作为名称和id
在Bean名称和Bean方法页面,Select从Jaspersoft Studio导入和selecttestBean,点击finish
在 Studio 项目中
验证 Jaspersoft Studio 中的数据预览正常后,在 Jasper Server 中发布报告
Select bean1 数据源并发布
在 Jaspersoft 服务器中
运行 报告testReport1
得到错误
org.springframework.beans.factory.NoSuchBeanDefinitionException: No
bean named 'com.company.test.PersonFactory' is defined at
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:575)
org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1111)
at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:276)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191)
at
org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1119)
at
com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.BeanReportDataSourceServiceFactory.createService(BeanReportDataSourceServiceFactory.java:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
....
任何人都可以帮我做关于如何在 Jaspersoft 服务器中识别 Beans 和 Factory 的最简单的步骤吗?
谢谢
我在最初提出问题一周后解决了这个问题。我只是想分享答案:
应该通过实现 ReportDataSourceService.
的 class 访问 jaspersoft Bean DataSource
那么,它应该有一个私有变量
private JRBeanCollectionDataSource dataSource;
此外,您需要覆盖 2 个方法
@Override
public void closeConnection() {
// TODO Auto-generated method stub
}
@Override
public void setReportParameterValues(Map parameterMap) {
parameterMap.put(JRParameter.REPORT_DATA_SOURCE, dataSource);
}
然后从 Jasper 服务器,您需要定义工厂 class,它调用 ReportDataSourceService 的构造函数实现 class 您创建的同时返回一个ReportDataSourceService 类型
任何人都可以帮助我逐步完成在 Jaspersoft 服务器中添加 Bean DataSource(bean 集合)的过程吗?是否有直接推送 jar 文件以便服务器可以识别它的简单过程?
这是我执行的步骤(简化名称)
在 Studio 项目中
创建一个名为 Person 的 Java Bean,其中包含字段和 getter/setters
创建一个简单的 Java Class 连接到名为 com.company.test.PersonFactory 的数据库,它有一个方法 generator() 其中 returns 一个 List,它使用简单的 jdbc 调用,两个 类 都在我的 Jasper 中项目
创建了一个名为 testBean 的数据适配器并输入 com.company.test.PersonFactory 作为工厂 Class 和生成器作为工厂中的静态方法。
创建一个新的jasper报告(testReport1)并使用数据适配器testBean,点击Java Bean选项卡,输入Person作为类名,添加所有字段,验证数据预览,保存
在资源库资源管理器中
创建一个新的数据源>数据源Bean,输入bean1作为名称和id
在Bean名称和Bean方法页面,Select从Jaspersoft Studio导入和selecttestBean,点击finish
在 Studio 项目中
验证 Jaspersoft Studio 中的数据预览正常后,在 Jasper Server 中发布报告
Select bean1 数据源并发布
在 Jaspersoft 服务器中
运行 报告testReport1
得到错误
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'com.company.test.PersonFactory' is defined at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:575)
org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1111) at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:276) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1119) at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.BeanReportDataSourceServiceFactory.createService(BeanReportDataSourceServiceFactory.java:76) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at ....
任何人都可以帮我做关于如何在 Jaspersoft 服务器中识别 Beans 和 Factory 的最简单的步骤吗?
谢谢
我在最初提出问题一周后解决了这个问题。我只是想分享答案:
应该通过实现 ReportDataSourceService.
的 class 访问 jaspersoft Bean DataSource那么,它应该有一个私有变量
private JRBeanCollectionDataSource dataSource;
此外,您需要覆盖 2 个方法
@Override
public void closeConnection() {
// TODO Auto-generated method stub
}
@Override
public void setReportParameterValues(Map parameterMap) {
parameterMap.put(JRParameter.REPORT_DATA_SOURCE, dataSource);
}
然后从 Jasper 服务器,您需要定义工厂 class,它调用 ReportDataSourceService 的构造函数实现 class 您创建的同时返回一个ReportDataSourceService 类型