当前位置: 首页 > 知识库问答 >
问题:

spring jndi数据源设置

宋鸿
2023-03-14

嗨,我正在尝试使用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:创建名为“Contact Controller”的bean时出错:注入autowired依赖项失败;嵌套异常为org.SpringFramework.Beans.Factory.BeanCreationException:无法自动连接字段:private App.Contact.Service.ContactService App.Contact.Controller.ContactController.ContactService;嵌套异常为org.springframework.beans.factory.beanCreationException:创建名为“Contact ServiceImpl”的bean时出错:注入autowired依赖项失败;嵌套异常为org.springframework.beans.factory.beanCreationException:无法自动连接字段:private app.contact.dao.contactdao app.contact.service.contactserviceimpl.contactdao;嵌套异常为org.springframework.beans.factory.beanCreationException:创建名为“contact daoImpl”的bean时出错:注入autowired依赖项失败;嵌套异常为org.springframework.beans.factory.beancreationexception:无法自动连接字段:private org.hibernate.sessionfactory app.contact.dao.contactdaoimpl.sessionfactory;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建ServletContext资源[/WEB-INF/-servlet.xml]中定义的名称为“会话工厂”的bean时出错:设置bean属性“data source”时无法解析对bean“data source”的引用;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建名为“data source”的bean时出错,该bean在ServletContext资源[/web-inf/-servlet.xml]中定义:设置属性值时出错;嵌套异常为org.springframework.beans.NotWritablePropertyException:bean类[org.springframework.jndi.jndiobjectfactorybean]的属性“jdbc/pluto”无效:bean属性“jdbc/pluto”不可写或具有无效的setter方法。setter的参数类型是否与getter的返回类型匹配?相关原因:org.springframework.beans.factory.BeanCreationException:创建ServletContext资源[/WEB-INF/-servlet.xml]中定义的名为“Data Source”的bean时出错:设置属性值时出错;嵌套异常为org.springframework.beans.NotWritablePropertyException:bean类[org.springframework.jndi.jndiobjectfactorybean]的属性“jdbc/pluto”无效:bean属性“jdbc/pluto”不可写或具有无效的setter方法。setter的参数类型是否与getter的返回类型匹配?

共有1个答案

段干恺
2023-03-14

您有这样一个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应该看起来像

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:comp/env/jdbc/pluto"/>
</bean>
 类似资料:
  • 问题内容: 我正在尝试设置一些jUnit测试。我们的数据库由服务器使用JNDI连接。我们在root.xml中有一个描述设置的xml。如何设置jUnit以连接数据库?我希望它只是从root.xml中读取内容,但是无论如何我都愿意进行设置。 问题答案: 我发现最好的方法是使用称为Simple- Jndi的 东西。 我将此添加到Maven文件中: 您可以在此处下载软件包,下载内容包含说明手册。 http

  • 我试图存储以前播放过的歌曲的uri,使用share d首选项。但是当为了播放歌曲而获取和重建uri时,我会收到以下错误消息: 05-03 20:43:14.642 8617-8716/com.stopwatch.appW/MediaPlayer:无法在客户端打开文件;尝试服务器端:java.lang.安全异常:权限拒绝:打开提供程序com.android.providers.media.Media

  • 我的系统有三个数据源,都以名为datasourceA、datasourceB、datasourceC的bean的形式公开。我试图将spring batch的数据源设置为datasourceB,但我遇到了一些问题。 我的Spring班 在这个设置中,我在启动时会遇到这个错误 我无法将我的任何数据源设置为@Prime,因为我的Spring批处理编写器使用所有3个数据源进行读取和写入。我正在使用JPA存

  • 如何动态设置数据源?像下面的Spring: 我可以从Spring导入这个功能到Java的EE 7企业应用程序吗?

  • 我需要为SpringBoot应用程序设置两个数据源。目前,用于(成功地)处理MariaDB服务器上超时的单个数据源工作解决方案在application.properties中设置了以下三个参数 我使用基于Java的数据源配置检查过的各种示例大致如下:

  • 定义 SHOW RESOURCES [FROM schemaName] 说明 列 说明 name 数据源名称 type 数据源类型 host 数据源地址 port 数据源端口 db 数据库名称 attribute 数据源参数 示例 mysql> show resources; +------+-------+-----------+------+------+----------------