Jasperserver连接Oracle Autonomous Database(OADB)失败如何解决?
Jasperserver 7.8 CE 连接Oracle Autonomous Database(OADB)解决方案
Jasperserver Community Edition 7.8 完全支持连接Oracle Autonomous Database,你遇到的连接字符串校验不通过问题是web界面的输入规则限制导致的,并非功能不兼容,可参考以下方案解决:
前置准备
- 首先将OADB的钱包压缩包解压到Jasperserver进程可读取的路径,例如
/opt/jasperserver/config/oadb_wallet/,给该目录赋予Jasperserver运行用户的可读权限:chown -R jasperserver:jasperserver /opt/jasperserver/config/oadb_wallet/ - 确认
ojdbc8.jar、oraclepki.jar、osdt_cert.jar、osdt_core.jar四个依赖包已放入Jasperserver的lib目录,路径通常为[Jasperserver安装目录]/apache-tomcat/webapps/jasperserver/WEB-INF/lib/,放置完成后重启一次Jasperserver服务。
解决web界面连接字符串不识别问题
可选以下两种方案之一:
方案一:修改连接字符串格式(适合快速测试场景)
- 登录Jasperserver web后台,进入数据源创建页面,驱动选择Oracle Thin Driver
- 连接字符串按以下格式填写,替换为你自己的OADB服务名和钱包路径即可:
jdbc:oracle:thin:@//[OADB服务名]?TNS_ADMIN=/opt/jasperserver/config/oadb_wallet/ - 填写正确的数据库用户名和密码后即可测试连接。
方案二:配置JNDI数据源(稳定可靠,推荐生产环境使用)
该方案可绕过web界面的输入规则校验,连接稳定性更高:
- 编辑Tomcat的context.xml文件,路径通常为
[Jasperserver安装目录]/apache-tomcat/webapps/jasperserver/META-INF/context.xml,添加如下资源配置:
<Resource name="jdbc/OADBDataSource" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=你的OADB主机地址))(connect_data=(service_name=你的OADB服务名))(security=(ssl_server_cert_dn="CN=你OADB的证书DN")))" username="你的OADB用户名" password="你的OADB密码" maxTotal="100" maxIdle="30" maxWaitMillis="10000"/>
- 保存文件后重启Tomcat服务,回到Jasperserver web后台创建数据源时,选择JNDI数据源,JNDI名称填写
java:comp/env/jdbc/OADBDataSource,测试连接即可通过。
常见排错点
- 若提示钱包找不到,确认
TNS_ADMIN填写的是绝对路径,且Jasperserver运行用户有该路径的读取权限 - 若报SSL相关错误,建议将ojdbc8升级到19c及以上版本,确保和OADB版本兼容
- 确认服务器防火墙已放开访问OADB 1522端口的出站规则
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

