部署带有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>
答案 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>
希望这会起作用
谢谢 卡尔提克