求助:将HSQLDB从2.7.0升级到2.7.1后测试失败
解决HSQLDB 2.7.1调用Java方法权限问题
问题原因
HSQLDB 2.7.1为修复CVE-2022-41853漏洞,默认限制了Java方法的调用,必须显式指定允许调用的类,才能创建依赖Java方法的自定义函数。
具体配置步骤
你需要在HSQLDB的JDBC URL中添加hsqldb.method_class_names参数,指定允许调用的Java类(多个类用逗号分隔)。
修改applicationContext-test.xml中的数据源配置
找到hsqlDataSource的url属性,追加参数:
<property name="url" value="jdbc:hsqldb:mem:test;sql.syntax_pgs=true;hsqldb.sqllog=3;hsqldb.applog=3;hsqldb.method_class_names=com.source.fix.PostgresDate"/>
如果有多个需要授权的类,格式如下:
<property name="url" value="jdbc:hsqldb:mem:test;sql.syntax_pgs=true;hsqldb.sqllog=3;hsqldb.applog=3;hsqldb.method_class_names=com.source.fix.PostgresDate,com.source.fix.AnotherClass"/>
额外说明
- 参数值为自定义函数依赖的Java类全限定名,需确保这些类在类路径中能被HSQLDB正常加载。
- 配置完成后重新运行测试,自定义函数
DATE即可正常创建和调用。
内容的提问来源于stack exchange,提问作者fonap
相关产品推荐
相关产品推荐

