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



我有一个Tomcat 5.5和一个用于JDBC池连接的资源:

<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控制器上。在弹簧控制器中,我收到消息:

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        

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

相关内容

最新更新