在Spring控制器中找不到JNDI资源,但在JSP中工作

时间:2011-09-06 20:40:21

标签: java spring tomcat jndi

我有一个Tomcat 5.5,其中一个资源用于JDBC Pool连接:

<Resource name="jdbc/orcl"
           auth="Container"
           type="oracle.jdbc.pool.OracleDataSource"
           driverClassName="oracle.jdbc.driver.OracleDriver"
           factory="oracle.jdbc.pool.OracleDataSourceFactory"
           url="jdbc:oracle:thin:@myip:myport:mydatabase"
       user="..."
       password="...
           implicitCachingEnabled="true"
           connectionCachingEnabled="true"
           connectionCacheProperties="{InitialLimit=10, MinLimit=10, MaxLimit=50, MaxStatementsLimit=0, ConnectionWaitTimeout=20}"
           connectionCacheName="cacheOrcl"
        />

我有以下代码来获取连接:

Object o = new InitialContext().lookup("java:comp/env/jdbc/orcl");
if( o instanceof DataSource ) {
  DataSource ds = (DataSource) o;
  con = ds.getConnection();
  LOGGER.debug(ds);
}

有趣的是,它正在处理JSP,而不是在一个Spring Controller中。在弹簧控制器中,我收到消息:

Name jdbc is not bound in this Context  
org.apache.naming.NamingContext NamingContext.java      770 lookup
org.apache.naming.NamingContext NamingContext.java      153 lookup
org.apache.naming.factory.ResourceLinkFactory        

1 个答案:

答案 0 :(得分:0)

我不知道为什么会出现这个问题,但我可以建议一个更好的方法来使用jdbc和spring - 使用JdbcTemplate和spring jdbc支持 - see here用于手册