Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jasper reports 如何在Jasper服务器中部署Jaspersoft Bean数据源?_Jasper Reports_Jasperserver_Jaspersoft Studio - Fatal编程技术网

Jasper reports 如何在Jasper服务器中部署Jaspersoft Bean数据源?

Jasper reports 如何在Jasper服务器中部署Jaspersoft Bean数据源?,jasper-reports,jasperserver,jaspersoft-studio,Jasper Reports,Jasperserver,Jaspersoft Studio,谁能帮我一步一步地在Jaspersoft服务器中添加Bean数据源(Bean集合)吗?是否有一个直接的过程来推送JAR文件以便服务器能够识别它 以下是我所做的步骤(简化名称) 工作室内项目 创建一个名为Person的Javabean,其中包含字段和getter/setter 创建一个简单的Java类,该类连接到名为com.company.test.PersonFactory的数据库,它有一个方法generator(),返回一个列表,它使用简单的jdbc调用,这两个类都在我的Jasper项目中

谁能帮我一步一步地在Jaspersoft服务器中添加Bean数据源(Bean集合)吗?是否有一个直接的过程来推送JAR文件以便服务器能够识别它

以下是我所做的步骤(简化名称)

工作室内项目

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

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

  • 创建了名为testBean的数据适配器,并在工厂中输入com.company.test.PersonFactory作为工厂类,输入generator作为静态方法

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

在存储库资源管理器中

  • 创建一个新的数据源>数据源Bean,输入bean1作为名称和id

  • 在Bean名称和Bean方法页面,选择import from Jaspersoft Studio并选择testBean,单击finish

工作室内项目

  • 验证Jaspersoft Studio中的数据预览是否正常后,在Jasper服务器中发布报告

  • 选择bean1数据源并发布

在Jaspersoft服务器中

运行报告testReport1

获取错误信息

org.springframework.beans.factory.noSuchBean定义异常:否 名为“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) 位于的sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)

有谁能帮我做一些最简单的步骤,说明如何在Jaspersoft服务器中识别bean和工厂


谢谢

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

jaspersoft Bean数据源应该通过实现ReportDataSourceService的类进行访问

然后,它应该有一个私有变量

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类型

您需要按照“JasperReports服务器管理指南”中“Bean数据源”一章中的说明进行操作。这意味着您需要在服务器的WEB-INF/lib中部署一个带有类的JAR,并编辑一些Spring文件来声明您的bean数据源。