我的jndi配置没有问题,我用其他程序测试过。就是在spring配置数据源的时候出了问题,访问不了。
以下是我spring代码:<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"><bean id="datasource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/cms</value>
</property>
</bean>
<!--
<bean id="datasource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="org.gjt.mm.mysql.Driver">
</property>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/cms?characterencoding=gbk"></property>
<property name="username" value="root"></property>
<property name="password" value="ld"></property>
</bean>
-->
<bean id="hibernateInterceptor"
class="org.springframework.orm.hibernate3.HibernateInterceptor">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="datasource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/cms/vo/Admin.hbm.xml</value>
<value>com/cms/vo/Newsitems.hbm.xml</value>
<value>com/cms/vo/News.hbm.xml</value></list>
</property>
</bean>

<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate"
>
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="iadmindao" class="com.cms.dao.IAdminDao" 
abstract="true">
</bean>
<bean id="iadmindaoimpl" class="com.cms.dao.impl.IAdminDaoImpl" parent="iadmindao">
<property name="hibernateTemplate">
  <ref bean="hibernateTemplate"/>
</property>
</bean>
<bean id="inewsitemsdao" class="com.cms.dao.INewsItemsDao" 
abstract="true">
</bean>
<bean id="inewsitemsdaoimpl" class="com.cms.dao.impl.INewsItemsDaoImpl" parent="inewsitemsdao">
<property name="hibernateTemplate">
<ref bean="hibernateTemplate"/>
</property>
</bean>
<bean name="/jsp/admin" class="com.cms.struts.action.AdminAction">
<property name="iadmindao">
<ref bean="iadmindaoimpl"/>
</property>
</bean>
<bean name="/jsp/admin/newsitems" class="com.cms.struts.action.NewsitemsAction">
<property name="inewsitemsdao">
<ref bean="inewsitemsdaoimpl"/>
</property>
</bean>
</beans>

解决方案 »

  1.   

        <property name="jndiName">
                <value>java:comp/env/jdbc/cms</value>
            </property>
    java:comp/env/jdbc/cms 这个 其它地方也需要配置才 可以,,在tomcat/conf/server.xml中,或则 在META-INF/context.xml
    也可以, 像下面的列子一样
    <Context path="/ROOT" docBase="ROOT"  debug="9" privileged="true" verbosity="4">
       <Resource name="jdbc/cms" auth="Container" type="javax.sql.DataSource"
          url="jdbc:mysql://localhost:3306/"
          driverClassName="com.mysql.jdbc.Driver"
          username="root"
          passwore="passwd"
          removeAbandoned="true"
          logAbandoned="true"
      />
    </Context>
      

  2.   

    我在楼上说的地方也配置了,要不jndi就不能用了,用在别的地方都可以,就是用在spring中不行
      

  3.   

    你的JNDI是从哪里来的?要配置环境。
      

  4.   

    你的JNDI是从哪里来的?要配置环境。
    <property name="jndiEnvironment">
    <props>
    <prop key="....">value</prop>
    ...
    </props>
    </property>
    不配置jndiEnvironment,Spring不知道到何处找jndi