如何在Jasper Server中部署Jaspersoft Bean数据源?

时间:2016-04-06 06:32:33

标签: jasper-reports jasperserver jaspersoft-studio

任何人都可以帮助我在Jaspersoft Server中添加Bean DataSource(bean集合)的分步过程吗?是否有一个直接推送jar文件的过程,以便服务器可以识别它?

这是我做的步骤(简化名称)

在Studio项目中

  • 创建一个名为 Person 的Java Bean,其中包含字段和getter / setter

  • 创建一个连接到名为 com.company.test.PersonFactory 的数据库的简单Java类,它有一个方法 generator(),它返回一个 List ,它使用简单的jdbc调用,这两个类都在我的Jasper项目中

  • 创建名为 testBean 的数据适配器,并将 com.company.test.PersonFactory 作为Factory类和生成器输入为Factory中的静态方法。 / p>

  • 创建新的jasper报告( testReport1 )并使用数据适配器 testBean ,单击Java Bean选项卡,输入作为类名,添加所有字段,验证数据预览,然后保存

在资源库资源管理器中

  • 创建新数据源>数据源Bean,输入 bean1 作为名称和ID

  • 在Bean Name and Bean方法页面,选择从Jaspersoft Studio导入并选择 testBean ,单击完成

在Studio项目中

  • 验证Jaspersoft Studio中的数据预览是否有效后,在Jasper Server中发布报告

  • 选择 bean1 数据源并发布

在Jaspersoft Server中

运行报告testReport1

得到错误

  

org.springframework.beans.factory.NoSuchBeanDefinitionException:没有   名为'com.company.test.PersonFactory'的bean定义于   org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:575)

     

org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1111)   在

     

org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:276)   在   org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191)   在   org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1119)   在   com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.BeanReportDataSourceServiceFactory.createService(BeanReportDataSourceServiceFactory.java:76)   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   ....

任何人都可以帮我做一些关于如何在Jaspersoft Server中识别Bean和Factory的最简单步骤吗?

由于

1 个答案:

答案 0 :(得分:1)

我在最初的问题后一周解决了这个问题。我只想分享答案:

应该通过实现 ReportDataSourceService 的类来访问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服务器,您需要定义工厂类,该工厂类调用您创建的 ReportDataSourceService 实现的类的构造函数,并返回ReportDataSourceService类型