您好我正在尝试使用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配置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:无法自动装配字段:private app.contact.service.ContactService app.contact.controller.ContactController.contactService;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为'contactServiceImpl'的bean时出错:注入自动连接的依赖项失败;嵌套异常是org.springframework.beans.factory.BeanCreationException:无法自动装配字段:private app.contact.dao.ContactDAO app.contact.service.ContactServiceImpl.contactDAO;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为'contactDAOImpl'的bean时出错:注入自动连接的依赖项失败;嵌套异常是org.springframework.beans.factory.BeanCreationException:无法自动装配字段:private org.hibernate.SessionFactory app.contact.dao.ContactDAOImpl.sessionFactory;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建在ServletContext资源[/WEB-INF/spring-servlet.xml]中定义名为'sessionFactory'的bean时出错:在设置bean属性时无法解析对bean'DataSource'的引用'数据源';嵌套异常是org.springframework.beans.factory.BeanCreationException:创建在ServletContext资源[/WEB-INF/spring-servlet.xml]中定义名称为'dataSource'的bean时出错:设置属性值时出错;嵌套异常是org.springframework.beans.NotWritablePropertyException:bean类的无效属性'jdbc / pluto'[org.springframework.jndi.JndiObjectFactoryBean]:Bean属性'jdbc / pluto'不可写或具有无效的setter方法 . setter的参数类型是否与getter的返回类型匹配?相关原因:org.springframework.beans.factory.BeanCreationException:在ServletContext资源[/WEB-INF/spring-servlet.xml]中定义创建名为'dataSource'的bean时出错:设置属性值时出错;嵌套异常是org.springframework.beans.NotWritablePropertyException:bean类的无效属性'jdbc / pluto'[org.springframework.jndi.JndiObjectFactoryBean]:Bean属性'jdbc / pluto'不可写或具有无效的setter方法 . setter的参数类型是否与getter的返回类型匹配?
1 回答
你有一个bean定义
属性名称
jdbc/pluto
应该匹配一个setter,所以Spring期望类似于setJdbc/Pluto()
,但这显然不是正确的java语法 .看看JndiObjectFactoryBean,看起来你想要
JndiObjectLocator
超类的setJndiName()方法 .所以你的bean应该是这样的