嗨,我正在尝试使用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>
在spring-servlet config 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:无法
autowire字段:private app.contact.dao.ContactDAO
app.contact.service.ContactServiceImpl.contactDAO;嵌套异常为
org.springframework.beans.factory.BeanCreationException:错误
创建名称为“ contactDAOImpl”的bean:自动接线的注入
依赖失败;嵌套异常为
org.springframework.beans.factory.BeanCreationException:无法
autowire字段:私有org.hibernate.SessionFactory
app.contact.dao.ContactDAOImpl.sessionFactory;嵌套异常为
org.springframework.beans.factory.BeanCreationException:错误
创建在ServletContext中定义的名称为'sessionFactory'的bean
资源[/WEB-INF/spring-servlet.xml]:无法解析对
设置bean属性“ dataSource”时的bean“ dataSource”;嵌套的
异常是org.springframework.beans.factory.BeanCreationException:
创建在ServletContext中定义的名称为“ dataSource”的bean时出错
资源[/WEB-INF/spring-servlet.xml]:设置属性值时出错;
嵌套异常为
org.springframework.beans.NotWritablePropertyException:无效
bean类的属性“ jdbc / pluto”
[org.springframework.jndi.JndiObjectFactoryBean]:Bean属性
'jdbc / pluto'不可写或具有无效的setter方法。是否
setter的参数类型与getter的返回类型匹配吗?
相关原因:
org.springframework.beans.factory.BeanCreationException:错误
创建在ServletContext中定义的名称为“ dataSource”的bean
资源[/WEB-INF/spring-servlet.xml]:设置属性值时出错;
嵌套异常为
org.springframework.beans.NotWritablePropertyException:无效
bean类的属性“ jdbc / pluto”
[org.springframework.jndi.JndiObjectFactoryBean]:Bean属性
'jdbc / pluto'不可写或具有无效的setter方法。是否
setter的参数类型与getter的返回类型匹配吗?
最佳答案
你有这样的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
好像是要setJndiName()
超类的JndiObjectLocator
方法。所以你的豆子看起来应该像
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/pluto"/>
</bean>
关于spring - Spring jndi数据源设置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16466759/