我的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>
以下是我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>
<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>
<property name="jndiEnvironment">
<props>
<prop key="....">value</prop>
...
</props>
</property>
不配置jndiEnvironment,Spring不知道到何处找jndi