(本文档仅供参考)
问题现象
smartbi部署在Tomcat8中,请问smartbi如何使用jndi方式创建数据源?
解决方案
1、用文本编辑器打开tomcat\conf目录中的server.xml文件并添加如下配置:
<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" | jdbc/repo:此处的名称可以自定义。 |
driverClassName="com.mysql.jdbc.Driver" | com.mysql.jdbc.Driver:为对应数据库的JDBC链接驱动的字符串。 |
username="admin" | admin:对应的smartbi_smartbix_v10_5为数据库用户名。 |
password="admin" | admin:对应smartbi_smartbix_v10_5为数据库用户的密码。 |
url="jdbc:mysql://localhost:6688/smartbi_smartbix_v10_5?characterEncoding=GBK" | 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>
对上述内容说明如下:
配置项 | 说明 |
---|---|
<server-name>JNDI:java:comp/env/jdbc/repo</server-name> | jdbc/repo对应2中的Resource name里填写的信息。 |
4、将数据库驱动放tomcat的lib下。
如下图:
5、配置完毕重启应用服务,配置数据源连接。
①登录 Smartbi,并切换到 管理 > 系统管理 页面。
②点击"新建关系数据源",并输入 JNDI 数据源的相关信息。
驱动程序类型部分仍然选择对应的数据库类型。
连接字符串改为3中配置的即可。即填写为:JNDI:java:comp/env/jdbc/repo