在项目的META-INF里面定义了数据源,如下
<Resource name="db" auth="Container" 
    省略
/>在applicationContext的配置
<bean id="myDateSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/db" />
</bean>一直都没问题。
在我将tomcat6/config/下的server.xml做了修改以后修改情况如下
由于原来的(默认设置) <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      </Host>
</Engine>
改为如下:
<Engine name="Catalina" defaultHost="www.ipm.com">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>
<Host name="www.ipm.com"  appBase="/"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="D:\work\ipm\WebRoot" reloadable="true" crossContext="true">
</Context>
      </Host>
</Engine>
修改后运行
提示 javax.naming.NameNotFoundException: Name db is not bound in this Context也就是在spring 的applicationContext找不到数据源了

解决方案 »

  1.   

    <Resource name="db" auth="Container"
        省略
    />中的url也需要做相应修改啊
      

  2.   

    <Resource name="db" auth="Container" 
    type="com.mchange.v2.c3p0.ComboPooledDataSource"
    driverClass="com.mysql.jdbc.Driver"
    jdbcUrl="jdbc:mysql://192.168.0.2/ipm"
    user="ipm" 
    password="guet"
    factory="org.apache.naming.factory.BeanFactory"
    maxPoolSize="50" 
    minPoolSize="5" 
    initialPoolSize="5" 
    acquireIncrement="5"
    idleConnectionTestPeriod="600" 
    maxIdleTime="600"
    />
    angelseyes ,你指的是哪个URL?
      

  3.   

    Tomcat  里面的数据源 没设置好 context.xml