我正在尝试将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绑定。
2条答案
按热度按时间8ehkhllq1#
您需要将其中一个JDBC功能添加到功能列表中,例如
(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中的特性,因为其他特性之一包括了它)。
一些有用的参考链接:
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中找到