Spring错误:org.springframework.beans.factory.BeanCreationException

时间:2011-12-13 06:10:07

标签: spring web-applications websphere jndi

我有一个Web应用程序,我将其导出为EAR并尝试在Websphere 6.1应用程序服务器上部署。

部署顺利。甚至,索引页面加载很好,这是一个登录屏幕。

但是,在输入凭据并按Enter键时,不会加载下一页并抛出HTTP 500内部服务器错误。

下载的页面是一个具有国家/地区下拉的JSP,其值通过hibernate从数据库中获取。

我在Websphere中创建了数据源,其中包含所有详细信息,甚至测试连接也成功。

但是,我在检查服务器System.out日志时遇到以下错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ds': 
Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: 
Context: uschwasvmdev04Cell01/clusters/URMDUS, name: jdbc/mydbXA: First component in name 
mydbXA not found. [Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: 
IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]

NameNotFoundException的描述说:

“如果名称的某个组件未绑定,则会抛出此异常,因为它未绑定。”

我的services.xml中的JNDI Lookup看起来也很好:

<jee:jndi-lookup id="ds" jndi-name="jdbc/mydbXA" resource-ref="true" />

我在这里缺少什么?

感谢阅读!

2 个答案:

答案 0 :(得分:3)

您正在使用resource-ref="true"。您是否在web.xml中创建了resource-reference,并为map the DataSource to the application做了什么?

如果将其设置为false,则可以进行全局查找。否则你必须配置它。

答案 1 :(得分:0)

这很有趣,但我做了相反的事情:我创建了资源引用,但我忘了告诉Spring使用它。

以防万一,在命名空间中,如上所示:resource-ref="true"

如果您手动配置bean:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
      <property name="jndiName" value="jdbc/database" /> 
      <property name="resourceRef" value="true" /><!-- It's false by default -->
</bean>