先吐槽一下,又是一个让人郁闷的事情,互联网上的信息让人眼花缭乱,一些不负责任的人总会把一些信息、文字复制来复制去,完全不经过思考,不去实践验证信息的真伪,导致一些错误的信息被广泛传开,让真正需要这些信息的人却只能被这些错误的东西误导,以至于浪费大量的时间。
所以强烈呼吁,请尊重原创,尊重知识,尊重他人,不要随便轻易的复制别人的原创文章。
OK,这次遇到一个关于数据库JNDI在Tomcat和WebSphere中配置的问题。两者的配置是不同的,而网上大量的资料都没有说出两者的不同,不进行强调,直接等同处理,将错误的配置放出来了,误导他人。
众所周知,数据库连接过程中通过JNDI的方式在安全性和效率上都有着一定优势,我的这个项目就是用JNDI进行数据库连接的。在WebSphere环境中完全可以运行,但是放到Tomcat上轻量级调试的时候,数据库连接总是错误。后来,多方验证才知道原来JNDI连接字符串在Tomcat和WebSphere中是不一样的,而网上搜索所得到的信息是两者的连接字符串都是一致的,所以耽误了我大量的时间。
下面说说JNDI数据库连接字符串在Tomcat和WebSphere中配置的不同,以及tomcat中JNDI的配置。数据库使用的是Oracle。
在Tomcat的目录中找到conf/context.xml文件,加上如下代码:
<Resource name="jdbc/bbs" <!-- JNDI字符串-->
auth="Container"
type="javax.sql.DataSource"
username="yovisun" <!-- 用户名 -->
password="12345" <!-- 密码 -->
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:xe" <!-- 数据库连接字符串 -->
maxActive="100"
maxIdle="30"
maxWait="10000"/>
具体参数根据情况调整,这里配置JNDI时使用的字符串为jdbc/bbs。而在Tomcat运行环境下,程序实际使用的JNDI连接字符串为java:/comp/env/jdbc/bbs。
注意,对于tomcat而言必须在前面加上java:/comp/env/,websphere则不需要,直接是jdbc/bbs即可。
对于我的项目,再修改src/conf/datasource/dataSource.xml为以下内容即可:
<?xml version="1.0" encoding="UTF-8"?>
<dataSources>
<dataSource dsName="project" dsTitle="" isJndi="true" jndi="java:/comp/env/jdbc/bbs" isEnabled="true" isDrm="false">
</dataSource>
</dataSources>
JNDI的名称,即jdbc/bbs,可以根据情况调整,切记对于tomcat,在运行的时候,使用的JNDI名称前面必须加上java:/comp/env/,网上搜索的很多文章没有说明这一点。
希望看到这篇文章的人对你有用。
博士哥,这文章对我没用,但是通过第一段,我觉得你身上那种严谨的态度对我很有用哎。
不敢不敢。。你身上有更多的东西值我的去学习。