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

7cjasjjr  于 2022-11-07  发布在  DB2
关注(0)|答案(2)|浏览(272)

我正在尝试将WAS传统8. 5 WebSphere配置转换为WebSphereLiberty 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连接:
(连接字符串);
还有这个:

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。注入异常:CWNEN0030E:服务器无法获取java:comp/env/jdbc/db 2a引用的对象示例。异常错误消息为:CWNEN1003E:服务器找不到java:comp/env/jdbc/db 2a引用的java.lang.对象类型的jdbc/db 2a绑定。

8ehkhllq

8ehkhllq1#

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

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

(or较早的JDBC特性之一,例如jdbc-4.2等)。
尽管您的messages.log应该显示这样的特性集(包括从您明确启用的特性中提取的特性):
CWWKF 0012 I:服务器已安装下列功能:[应用安全2.0版、分布式Map1.0版、el 3.0版、联合注册表1.0版、jaxb 2.2版、jaxrs 2.0版、jaxrs客户端2.0版、jaxws 2.2版、jndi 1.0版、json 1.0版、jsp 2.3版、ldap注册表3.0版、本地连接器1.0版、servlet 3.1版、ssl 1.0版]。
这个列表不包括任何激活JDBC特性的功能,因此您必须显式地启用它。(另一方面,请注意,执行JNDI查找所需的jndi-1.0特性被包括在内,即使它不是您直接添加到server.xml中的特性,因为其他特性之一包括了它)。
一些有用的参考链接:

mpbci0fu

mpbci0fu2#

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

相关问题