我有一个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" />
我在这里缺少什么?
感谢阅读!
答案 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>