Jasper - 在“net.sf.jasperreports.data.adapter”类别

时间:2018-04-06 12:07:05

标签: java java-8 jasper-reports

我们使用jasper和java 1.7生成报告。它适用于Java 1.7版本。在Java版本更新到Java1.8之后获取以下指定的异常。

问题

No secret found for "XXXXXX" key in "net.sf.jasperreports.data.adapter" category. 

此处“XXXXXX”是我的数据库密码。

我的数据库配置是:

<?xml version="1.0" encoding="UTF-8" ?>
<jdbcDataAdapter class="net.sf.jasperreports.data.jdbc.JdbcDataAdapterImpl">
<name>DataAdapter</name>
<driver>org.postgresql.Driver</driver>
<username>XXXX_user</username>
<password>XXXXX</password>
<savePassword>true</savePassword>
<url>jdbc:postgresql://XXXXXXX:5432/XXXXXdb</url>
<database></database>
<serverAddress></serverAddress>
</jdbcDataAdapter>

无法找出问题的解决方案。任何人都可以帮忙解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您的问题不应与Java版本相关。它与JasperReports配置有关,用于处理数据适配器文件中的密码。

以纯文本格式存储在数据适配器文件中的密码可能会引起安全问题。

这就是为什么JasperReports依赖于net.sf.jasperreports.util.SecretsProvider实现来解析密码的原因。需要通过扩展机制插入此SecretsProvider。默认情况下没有插入任何提供程序。

对于生产用途,需要在您身边实施并注册解密密码的正确SecretsProvider

出于基本测试目的,您可以通过将以下配置添加到类路径根目录中的jasperreports_extension.properties来注册内置扩展net.sf.jasperreports.util. IdentitySecretsProviderExtensionsRegistryFactory

net.sf.jasperreports.extension.registry.factory.identity.secrets.provider=net.sf.jasperreports.util.IdentitySecretsProviderExtensionsRegistryFactory
net.sf.jasperreports.extension.identity.secrets.category.da=net.sf.jasperreports.data.adapter