在WebSphere 8.5中查找JDBC DataSource

时间:2013-07-03 13:13:48

标签: java java-ee jdbc websphere jndi

我想在我的webapp中使用JDBC Connetion,这是在WebSphere中配置的。 (就像这里的那个:How to use JDBC in JavaEE?

我之前通过JPA使用过这个DataSource,但是我们的客户希望拥有原生SQL ...不要问。

我找到了很多示例和教程(例如http://www.wickcentral.com/java/dl/ds_resreferencesetts_Websphere.pdfWebsphere JNDI lookup fails),但没有任何工作要做。

WebSphere中的DataSource具有JNDI-Name“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.

我尝试了很多。有没有人看到这个错误?

2 个答案:

答案 0 :(得分:9)

在安装过程中,您是否将Web-app定义的数据源与Websphere定义的数据源匹配? Websphere通常会要求您在安装过程中检测到资源时绑定资源(如果我没记错的话,它位于名为“将参考资源映射到资源”的步骤中。)

其他常见问题是与您的应用程序不同的上下文(Cell / Node / Server)中的Websphere数据源,因此无法在运行时找到它。

答案 1 :(得分:2)

您需要在ibm-web-bnd.xml中添加绑定:

<resource-ref name="jdbc/myDS" binding-name="jdbc/myDS" />