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

Java 在Spring控制器中找不到JNDI资源,但可以在JSP中工作,java,spring,tomcat,jndi,Java,Spring,Tomcat,Jndi,我有一个Tomcat 5.5,其中一个资源用于JDBC池连接: <Resource name="jdbc/orcl" auth="Container" type="oracle.jdbc.pool.OracleDataSource" driverClassName="oracle.jdbc.driver.OracleDriver" factory="oracle.jdbc.pool.OracleData

我有一个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控制器中。在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和SpringJDBC支持—因为手动操作也不起作用?试着在你的上下文中声明它并连接到你的控制器。谢谢你的提示。使用jndi查找也可以在本地工作。我将向客户端发送一个带有此配置的应用程序版本,以查看它是否有效,并在此处发回结果。我还将尝试在applicationContext.xml中定义一个bean:查看打印JNDI内容的代码片段,或者了解如何转储JNDI树。这将给你一个提示,到底出了什么问题。好吧,我再次向客户机发送WAR,附带一些额外的调试代码,最后它工作了。我想我会在一次与cast的战争之前发送到OracleDataSource,而不是Spring控制器中的DataSource。如果应用程序仍然不稳定,我将尝试这两种方法之前评论。谢谢大家的提示!