applicationContext.xml<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="oracle.jdbc.driver.OracleDriver" />
<property name="jdbcUrl" value="jdbc:oracle:thin:@127.0.0.1:1521:oracle"/>
<property name="user" value="sa" />
<property name="password" value="sa" />
<!-- 最大线程数 -->
       <property name="maxPoolSize" value="50"></property>
       <!-- 最小线程数 -->
       <property name="minPoolSize" value="10"></property>
       <!-- 初始线程数 -->
       <property name="initialPoolSize" value="30"></property>
       <!-- 每次追加线程数 -->
       <property name="acquireIncrement" value="5"></property>
       <property name="maxIdleTime" value="10"></property>
                <property name="idleConnectionTestPeriod" value="60"></property> 
</bean>InitialContext rootctx = new InitialContext();
   com.mchange.v2.c3p0.ComboPooledDataSource ds = (com.mchange.v2.c3p0.ComboPooledDataSource) rootctx
     .lookup("dataSource");这出错:
javax.naming.NameNotFoundException: Name dataSource is not bound in this Context
那里写的不对了?

解决方案 »

  1.   

    我测试了一下,这样写就OK了package util;import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {
    /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    ApplicationContext ctx = new
    ClassPathXmlApplicationContext("applicationContext.xml");
    com.mchange.v2.c3p0.ComboPooledDataSource ds = (com.mchange.v2.c3p0.ComboPooledDataSource)ctx.getBean("dataSource");
    System.out.println(ds.getMaxPoolSize());
    }}
      

  2.   

    spring配置的这个数据源应该跟JNDI没啥关系吧,如果是在tomcat配置的数据源,才能用JNDI去访问吧
      

  3.   

    楼上正解,
    你这个datasource和JNDI有什么关系啊?
    先看看LDAP等再学一下JNDI再说吧。
      

  4.   

    如果用struts2的话,可以这样搞
    //servletContext可以通过action实现struts2的ServletContextAware接口获得
         ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);
         com.mchange.v2.c3p0.ComboPooledDataSource ds = (com.mchange.v2.c3p0.ComboPooledDataSource)ctx.getBean("dataSource");