首页 > 解决方案 > CWNEN0030E 在 Websphere Liberty 中查找数据源 JNDI 时出错

问题描述

我正在尝试将 WAS 传统 8.5 websphere 配置转换为 websphere liberty 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 / 类文件的引用。

连接的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 绑定。

标签: javadb2webspherewebsphere-liberty

解决方案


配置中有错误。 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 文档中找到


推荐阅读