繁体   English   中英

CWNEN0030E 在 Websphere Liberty 中进行数据源 JNDI 查找时出错

[英]CWNEN0030E error on DataSource JNDI lookup in Websphere Liberty

我正在尝试将 WAS 传统 8.5 websphere 配置转换为 websphere自由 20.x 配置并出现错误。 我相信连接设置正确,名称正确,驱动程序的 jar 文件存在,但出现以下错误。

这里基本上是配置。

<dataSource jndiName="jdbc/db2a" type="javax.sql.DataSource">       
       <jdbcDriver javax.sql.DataSource="com.ibm.db2.jcc.DB2Driver" libraryRef="DB2JCCLib"/>
       <properties.db2.jcc  driverType="4" databaseName="DB1" serverName="host.name" portNumber="446"/>             
    </dataSource>


<web-bnd
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://websphere.ibm.com/xml/ns/javaee"
    xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-bnd_1_0.xsd" version="1.0">
  <virtual-host name="default_host"/>
  <resource-ref name="jdbc/db2a" binding-name="jdbc/db2a"/>
</web-bnd>

...

server.xml 顶部的配置

<!-- Enable features -->
<featureManager>
    <feature>appSecurity-2.0</feature>
    <feature>jaxrs-2.0</feature>
    <feature>jsp-2.3</feature>
    <feature>localConnector-1.0</feature>
    <feature>jaxws-2.2</feature>
    <feature>ldapRegistry-3.0</feature>
</featureManager>

jar 文件是:db2jcc4-4.22.29.jar

并作为对那个 jar/class 文件的引用。

连接的java代码是标准jdbc连接:

DriverManager.getConnection(connStr);

和这个:

            InitialContext initialContext = new InitialContext();
            Context context = (Context)initialContext.lookup("java:comp/env");
            DataSource dataSource = (DataSource)context.lookup(string5);
            logger.info((Object)"CVDBBackendHandler.getConnection() out");
            return dataSource.getConnection();

错误如下。

根异常是 com.ibm.wsspi.injectionengine.InjectionException:CWNEN0030E: 服务器无法获取 java:comp/env/jdbc/db2a 引用的对象实例。 异常消息是:CWNEN1003E:服务器无法为 java:comp/env/jdbc/db2a 引用找到具有 java.lang.Object 类型的 jdbc/db2a 绑定。

配置中有错误。 com.ibm.db2.jcc.DB2Driver不是javax.sql.DataSource的实现。

您可以删除配置属性javax.sql.DataSource="com.ibm.db2.jcc.DB2Driver"并让 Liberty 中的内置知识从 JDBC 驱动程序 jar 中推断它,或者您可以将其指定为javax.sql.DataSource="com.ibm.db2.jcc.DB2DataSource"

上面的数据源类名可以在这里的DB2 文档中找到

您需要将 JDBC 功能之一添加到您的功能列表中,例如

<featureManager>
    <feature>jdbc-4.3</feature>
</featureManager>

(或较早的 JDBC 功能之一,例如jdbc-4.2等)。

尽管您的messages.log应该显示这样的功能集(包括从您明确启用的功能中提取的功能):

CWWKF0012I:服务器安装了以下功能部件:[appSecurity-2.0、distributedMap-1.0、el-3.0、federatedRegistry-1.0、jaxb-2.2、jaxrs-2.0、jaxrsClient-2.0、jaxws-2.2、jndi-1.0、json- jsp-2.3、ldapRegistry-3.0、localConnector-1.0、servlet-3.1、ssl-1.0]。

此列表不包括任何激活 JDBC 功能,因此您必须显式启用它。 (另一方面,请注意执行 JNDI 查找所需的jndi-1.0功能已包含在内,即使它不是您直接添加到 server.xml 的功能,因为其他功能之一包含它)。

一些有用的链接供参考:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM