嗨,我正在尝试使用jndi数据源。下面是代码
context.xml
<Context antiJARLocking="true" path="/SpringMVCTest">
<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver"
maxActive="20" maxIdle="10" maxWait="10000"
name="jdbc/pluto" password=""
type="javax.sql.DataSource"
url="jdbc:mysql://localhost:3306/spring?zeroDateTimeBehavior=convertToNull"
username="pluto"/>
</Context>在配置bean中是:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jdbc/pluto" value="java:comp/env/jdbc/pluto"/>
</bean>我收到了这个错误
org.springframework.beans.factory.BeanCreationException:错误创建名为“contactController”的bean :自动关联注入失败;嵌套异常为org.springframework.beans.factory.BeanCreationException:无法自动创建字段:私有app.contact.service.ContactService app.contact.controller.ContactController.contactService;嵌套异常是org.springframework.beans.factory.BeanCreationException:错误创建名为“contactServiceImpl”的bean :注入自动关联失败;嵌套异常是org.springframework.beans.factory.BeanCreationException:不能自动更新字段:私有app.contact.service.ContactServiceImpl.contactDAO;嵌套异常是创建名称为“contactDAOImpl”的bean的org.springframework.beans.factory.BeanCreationException:错误:自动关联注入失败;嵌套异常是org.springframework.beans.factory.BeanCreationException:不能自动更新字段:私有org.hibernate.SessionFactory app.contact.dao.ContactDAOImpl.sessionFactory;嵌套异常是在设置bean属性'dataSource‘的同时创建名称为’org.springframework.beans.factory.BeanCreationException:‘的ServletContext资源/ setting /Spring-servlet.xml:无法解析对bean 'dataSource’的引用的ServletContext错误;嵌套异常是创建具有ServletContext资源/ setting /Spring-servlet.xml:错误设置属性值中定义的dataSource名称的bean的org.springframework.beans.factory.BeanCreationException:错误;嵌套异常是bean类的org.springframework.beans.NotWritablePropertyException:无效属性'jdbc/pluto‘,org.springframework.jndi.JndiObjectFactoryBean: Bean属性'jdbc/pluto’是不可写的,或者具有无效的setter方法。setter的参数类型是否与getter的返回类型匹配?相关原因:在org.springframework.beans.factory.BeanCreationException:资源/WEB/Spring-servlet.xml中定义了名为“dataSource”的bean创建dataSource错误:错误设置属性值;嵌套异常是bean类org.springframework.jndi.JndiObjectFactoryBean: Bean属性'jdbc/pluto‘的org.springframework.beans.NotWritablePropertyException:无效属性'jdbc/pluto’不可写或具有无效的setter方法。setter的参数类型是否与getter的返回类型匹配?
发布于 2013-05-09 17:46:21
您有这样的bean定义
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jdbc/pluto" value="java:comp/env/jdbc/pluto"/>
</bean>属性名jdbc/pluto应该与setter匹配,因此Spring需要类似于setJdbc/Pluto()的内容,但这显然是不正确的java语法。
从JndiObjectFactoryBean的角度来看,您似乎需要来自JndiObjectLocator超类的setJndiName()方法。
所以你的豆子应该看起来像
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/pluto"/>
</bean>https://stackoverflow.com/questions/16466759
复制相似问题