在tomcat中数据库连接使用JNDI时,在spring配置文件中的名字前需要加上一个前缀:
java:comp/env/,否则系统启动时会报Name jdbc is not bound in this Context。
比如在tomcat的Context.xml中配的JNDI如下
<Resource name="myds"
auth="Container"
type="
javax.sql.DataSource"
username="user"
pass
word="pass
word"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@192.168.2.2:1521id"
maxActive="10"
maxIdle="4"/>
这时jndi的名字为myds,则在spring的配置文件中写法如下:
<beans>
<jee:jndi-lookup id="dataSource" jndi-name="
java:comp/env/myds"/>
</beans>
如果在代码中取DataSource,则用如下方式:
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("
java:comp/env");
DataSource ds = (DataSource)envCtx.lookup("myds");