6

我想在 WebSphere 中配置的 web 应用程序中使用 JDBC 连接。(就像这里的这个:How to use JDBC in JavaEE?

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

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

WebSphere 中的数据源具有 JNDI 名称“jdbc/myDS”

我在 web.xml 中添加了一个资源引用:

<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>

我试图在我的道中获取数据源:

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.

我尝试了很多。有人看出错了吗?

4

2 回答 2

9

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

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

于 2013-07-03T13:52:10.443 回答
2

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

<resource-ref name="jdbc/myDS" binding-name="jdbc/myDS" />
于 2014-09-04T13:49:51.703 回答