javax.naming.NameNotFoundException:名称[jdbc / skynetdb]未绑定在此Context中。无法找到[jdbc]

时间:2017-02-27 11:11:06

标签: java spring spring-mvc jdbc

部署带有jndi资源的项目时遇到此错误。

javax.naming.NameNotFoundException:名称[jdbc / skynetdb]未绑定在此Context中。无法找到[jdbc]

这里“jdbc / skynetdb”是context.xml文件中定义的jndi资源的名称:

<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver"
        global="jdbc/skynetdb" maxActive="100" maxIdle="30" maxWait="10000"
        name="jdbc/skynetdb" password="" type="javax.sql.DataSource"
        url="jdbc:mysql://localhost:3306/skynetdb" username="root" />

spring.xml文件中的dataSource bean声明为:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="jdbc/skynetdb" />
</bean>

2 个答案:

答案 0 :(得分:1)

问题解决了: 我刚修改了spring.xml文件中的dataSource bean,如下所示:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="java:comp/env/jdbc/skynetdb" />
</bean>

答案 1 :(得分:0)

为类JndiObjectFactoryBean将此属性设置为'resourceRef'

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="jdbc/skynetdb" />
    <property name="resourceRef" value="true" />
</bean>

希望这会起作用

谢谢 卡尔提克