(本文档仅供参考)
问题现象
smartbi部署在Tomcat8中,请问smartbi如何使用jndi方式创建数据源?
解决方案
1、用文本编辑器打开tomcat\conf目录中的server.xml文件并添加如下配置,docBase的路径请根据实际部署情况进行修改。
<Context path="/smartbi" reloadable="false" docBase="F:/Smartbi/Tomcat/apps/smartbi"> <Resource name="jdbc/repo" auth="Container" type="javax.sql.DataSource" username="admin" password="admin" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:6688/smartbi_smartbix_v10_5?characterEncoding=GBK" maxTotal="8" maxIdle="4"/> </Context>
对上述内容说明如下:
配置项及内容 | 说明 |
---|---|
<Context path="/smartbi" reloadable="false" docBase="F:/Smartbi/Tomcat/apps/smartbi"> | docBase的路径为war包存放的位置:配置了server.xml后如webapps目录下仍有war包,会启动两次,为避免该情况,需要将webapps下面的war包移动到新建的目录下,并将webapps下的war包删除,例如此处是新建名为apps的文件夹存放该war包。 |
Resource name="jdbc/repo" | 此处的名称可以自定义,需 |
driverClassName="com.mysql.jdbc.Driver" | com.mysql.jdbc.Driver 为对应数据库的JDBC链接驱动的字符串。 |
username="admin" | 对应的smartbi_smartbix_v10_5为数据库用户名。 |
password="admin" | 对应smartbi_smartbix_v10_5为数据库用户的密码。 |
url="jdbc:mysql://localhost:6688/smartbi_smartbix_v10_5?characterEncoding=GBK" | url 值为 JDBC 链接字符串。 |
2、修改smartbi.war\WEB-INF\web.xml,需增加如下配置项:
<resource-ref> <description> aaa </description> <res-ref-name> jdbc/repo </res-ref-name> <res-type> javax.sql.DataSource </res-type> <res-auth> Container </res-auth> </resource-ref>
对上述内容说明如下:
- <description>aaa</description>中的aaa可自定义。
- <res-ref-name> jdbc/repo</res-ref-name>中jdbc/repo对应1中的填写的Resource name。
- <res-type> javax.sql.DataSource </res-type>
- <res-auth> Container </res-auth>
3、修改smartbi-config配置,此处配置对应的数据源中的连接字符串:
<server-name>JNDI:java:comp/env/jdbc/repo</server-name>
JNDI:java:comp/env/jdbc/repo,jdbc/repo对应2中的Resource name
4、配置完毕重启应用服务,配置数据源连接:
①登录 Smartbi,并切换到 管理 > 系统管理 页面。
②点击"新建关系数据源",并输入 JNDI 数据源的相关信息。
③上述设置说明如下:
- 驱动程序类型部分仍然选择对应的数据库类型。
- 连接字符串改为3中配置的即可。即填写为:JNDI:java:comp/env/jdbc/repo