- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经创建了一个 bean 数据源来连接到我的数据库。我创建此数据源的目标是根据给定的参数切换数据源。但是,当我使用 bean 数据源运行报告时,它不会将连接释放回池中。我的连接池大小为 20,因此当我运行第 21 个报告时,服务器挂起并在 JConsole 上打印以下消息
Name: pool-7-thread-9
State: WAITING on org.apache.commons.pool.impl.GenericObjectPool@1f8ed84
Total blocked: 0 Total waited: 4
Stack trace:
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:485)
org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:748)
org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:95)
com.loits.jasper.ds.SwitchDS.setReportParameterValues(SwitchDS.java:75)
com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.fillReport(EngineServiceImpl.java:1725)
com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportFill.runWithDataSource(EngineServiceImpl.java:1086)
com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportFill.runReport(EngineServiceImpl.java:1015)
com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportRunnable.run(EngineServiceImpl.java:908)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)
这是我在我的 bean 中所做的
package com.loits.jasper.ds;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.sql.SQLException;
import net.sf.jasperreports.engine.JRParameter;
import org.springframework.security.context.SecurityContextHolder;
import com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.ReportDataSource;
import com.jaspersoft.jasperserver.api.metadata.jasperreports.service.ReportDataSourceService;
import com.jaspersoft.jasperserver.api.metadata.user.domain.Role;
import com.jaspersoft.jasperserver.api.metadata.user.domain.client.ProfileAttributeImpl;
import com.jaspersoft.jasperserver.api.metadata.user.domain.impl.client.MetadataUserDetails;
import com.jaspersoft.jasperserver.api.common.domain.ExecutionContext;
import com.jaspersoft.jasperserver.api.common.service.BeanForInterfaceImplementationFactory;
import com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.JdbcDataSourceService;
import com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.JdbcReportDataSourceServiceFactory;
import com.jaspersoft.jasperserver.war.common.JasperServerUtil;
import com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService;
public class SwitchDS implements ReportDataSourceService {
private JdbcDataSourceService connection;
private RepositoryService repositoryService;
private BeanForInterfaceImplementationFactory dataSourceServiceFactory;
// private DataSourceServiceFactory dataSourceServiceFactory;
public SwitchDS(RepositoryService repositoryService,
BeanForInterfaceImplementationFactory dsServiceFactory) {
super();
this.repositoryService = repositoryService;
this.dataSourceServiceFactory = dsServiceFactory;
System.out.println("repositoryService " + repositoryService);
System.out.println("dataSourceServiceFactory "
+ dataSourceServiceFactory);
}
@SuppressWarnings({ "unchecked", "rawtypes" })
public void setReportParameterValues(Map parametersValue) {
String ds_name = (String) parametersValue.get("P_SCM");
String ds_uri = "";
if(ds_name.equalsIgnoreCase("D_001_S")){
ds_uri = "/datasources/lolc_fusion";
}
else if(ds_name.equalsIgnoreCase("D_005_S")){
ds_uri = "/datasources/lofc_fusion";
}
else if(ds_name.equalsIgnoreCase("D_009_S")){
ds_uri = "/datasources/lomc_fusion";
}
else if(ds_name.equalsIgnoreCase("D_010_S")){
ds_uri = "/datasources/clc_fusion";
}
else if(ds_name.equalsIgnoreCase("D_025_S")){
ds_uri = "/datasources/lofac_fusion";
}
if(connection == null){
connection = getRepositoryDatasource(ds_uri);
}
try {
parametersValue.put(JRParameter.REPORT_CONNECTION, connection
.getDataSource().getConnection());
} catch (SQLException e) {
e.printStackTrace();
}
}
public JdbcDataSourceService getRepositoryDatasource(String repositoryURI) {
try {
ExecutionContext context = JasperServerUtil.getExecutionContext();
ReportDataSource datasource = (ReportDataSource) repositoryService
.getResource(context, repositoryURI);
System.out.println("datasource " + datasource.getName());
System.out.println("datasource class " + datasource.getClass());
JdbcReportDataSourceServiceFactory factory = (JdbcReportDataSourceServiceFactory) dataSourceServiceFactory
.getBean(datasource.getClass());
JdbcDataSourceService DSservice = (JdbcDataSourceService) factory
.createService(datasource);
return DSservice;
} catch (Exception ex) {
System.out.println(ex);
return null;
}
}
@Override
public void closeConnection() {
if (connection != null) {
connection.closeConnection();
System.out.println("Connection closed .. ");
}
}
public static void main(String[] args) {
}
}
最佳答案
在我看来,您正在关闭连接而不是将其返回到池中。
西蒙
关于mysql - Bean 数据源的连接池问题 - Jasperserver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31318396/
我需要知道 Jasperserver 用于存储来自 IReport 的上传资源的物理位置。 最佳答案 它将所有 Assets 存储在数据库中,包括您上传的任何二进制文件。没有任何东西直接存储在文件系统
我们使用的是 JasperReports Server Community Edition 5.5,并且单选查询存在问题。 如果下拉列表中有一个值,并且如果下拉列表有多个值,那么它必须有一个下拉列表才
摘要:是否可以在同一个 Web 前端中提供使用 2 个不同版本的 iReports 创建的报表? 背景:我继承了大量使用 iReport 2.0.1 编写的(仍在运行的)报告(将它们全部迁移到更高版本
我正在寻找一种在 JasperServer 中的输入控件的 sql 查询中使用当前用户区域设置信息的方法。 更多详情:输入查询应该显示一个值列表,它是通过 sql 查询从我们的数据库中获取的。但是,此
我搜索了几天来修复这个错误,没有什么新东西。 我有一份报告,其中包含多级子报告,在 iReport 3.7.5 上一切正常。我在第一级使用 subreport.jasper 作为子报表表达式,在第二级
我正在定制 jasperserver。我想更改安装格式。当我们安装 jasper 服务器时,它要求安装 My Sql 数据库。我想更改它并添加 Postgress 数据库。 是否有任何可用文档可以指导
我已经安装了 Jasper 服务器,默认值捆绑了 tomcat 和 pgsql。当我启动服务时,tomcat 启动了,pgsql 也启动了。但几秒钟后,jasper tomcat停了下来。 当我检查控
我正在尝试在 JasperReports Server 4.5 中绕过登录凭据,因此用户可以直接登录而无需输入任何用户名和密码,我通过直接在 URL 中传递用户名和密码来完成此操作: http://l
我已经创建了一个 bean 数据源来连接到我的数据库。我创建此数据源的目标是根据给定的参数切换数据源。但是,当我使用 bean 数据源运行报告时,它不会将连接释放回池中。我的连接池大小为 20,因此当
尝试使用 /jrs-rest-java-client 上传报告单元时遇到错误请求。 我一直在JasperServer 社区中寻找解决方案,但找不到答案。 Exception in thread "ma
我刚刚安装了 Windows 版本的 JasperServe,它在脚本中自动创建了两个数据库(sugarcrm 和 foodmart),一切正常。现在我想用现有的表和数据添加我自己的数据库模式。我试图
我正在努力使用 jasperserver 提供客户端休息服务来生成报告。我使用以下代码来实现: 我在设置服务器 URL 和报告路径时遇到问题,对于服务器网址,我输入 http://localhost:
我刚刚接手了一个关于JasperReports的项目。问题是我所拥有的只是 JasperServer (3.5) 存储库上的报告。 当我使用 iReport 连接到存储库时,我无法直接在服务器上进行更
我有一个非常简单的报告,可以在我的工作站上的 iReports (4.5.0) 中完美运行。当我上传 JasperServer CE (4.5.0) 时,出现以下错误。 1 - Unable to g
请帮我解决这个问题,我真的不知道!请 /* - 要更改此模板,请选择“工具”|“模板 - 并在编辑器中打开模板。 */ - 封装pdfprint; import com.jaspersoft.irep
我的 Linux 服务器中安装了 JasperServer Community Edition 5.5.0a。它运行良好。所以我现在想设置报告调度程序,以便能够每天、每周或每月将报告发送到邮箱中。我点
我最近一直在使用 JasperServer 上的 JasperReports。阅读他们的文档后,他们说 JasperServer 存储库上的任何报告都可以通过直接 URL 访问。通过 URL (GET
我在 JasperServer 论坛上发布了这个,但我在 StackOverflow 上的运气通常要好一些。如果可以,请帮忙。 关于 JasperServer 我最大的提示是它的行为完全不同于 Jas
有了这段代码我得到了错误: Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/axis
有没有办法将 JasperServer 集成/嵌入到另一个网络应用程序中?问题是应该以某种方式绕过 JasperServer 的登录页面。是否可以通过 Web 服务/REST 进行身份验证,跳过登录页
我是一名优秀的程序员,十分优秀!