我想在我的webapp中使用JDBC Connetion,这是在WebSphere中配置的. (像这里一样:
How to use JDBC in JavaEE?)
我之前通过JPA使用过这个DataSource,但是我们的客户希望拥有原生sql …不要问.
我找到了很多例子和教程(例如http://www.wickcentral.com/java/dl/ds_resreferencesetts_Websphere.pdf,Websphere JNDI lookup fails),但没有什么可以想要的.
WebSphere中的DataSource具有JNDI名称“jdbc / myDS”
我在我的web.xml中添加了一个resource-ref:
<resource-ref> <res-ref-name>jdbc/myDS</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope> </resource-ref>
我试着在我的Dao中获取DataSource:
ds = (DataSource) new InitialContext() .lookup("java:comp/env/jdbc/myDS");
但我得到的是一个
com.ibm.wsspi.injectionengine.InjectionException: CWNEN0044E: A resource reference binding could not be found for the following resource references [jdbc/myDS],defined for the MyAPP component.
我尝试了很多.有没有人看到这个错误?
解决方法
在安装过程中,您是否将Web-app定义的数据源与Websphere定义的数据源匹配? Websphere通常会要求您在安装过程中检测到资源时绑定资源(如果我没记错的话,它位于名为“将参考资源映射到资源”的步骤中).
其他常见问题是与您的应用程序不同的上下文(Cell / Node / Server)中的Websphere数据源,因此无法在运行时找到它.