当前位置: 首页 > 知识库问答 >
问题:

在Websphere Liberty中查找数据源JNDI时出现CWNEN0030E错误

宗政权
2023-03-14

我试图转换一个传统的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>

...

服务器顶部的配置。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连接:

司机经理。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。国际商用机器公司wsspi。注射引擎。InjectionException:CWNEN0030E:服务器无法获取java:comp/env/jdbc/db2a引用的对象实例。异常消息是:CWNEN1003E:服务器无法找到与java的jdbc/db2a绑定。java的对象类型:comp/env/jdbc/db2a参考。

共有2个答案

慕祯
2023-03-14

配置中有一个错误<代码>com。国际商用机器公司db2。jcc。DB2Driver不是javax的实现。sql。数据源

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

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

袁成化
2023-03-14

您需要将一个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.2、jndi-1.0、json-1.0、jsp-2.3、ldapRegistry-3.0、localConnector-1.0、servlet-3.1、ssl-1.0]。

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

一些有用的链接供参考:

  • https://openliberty.io/docs/latest/reference/feature/jdbc-4.3.html
  • https://openliberty.io/docs/latest/relational-database-connections-JDBC.html
 类似资料:
  • 我正在用Hibernate和Websphere application Server 8.0开发一个应用程序。 我已经在Websphere中创建了一个数据源,它可以成功地与数据库连接。 但从应用程序我得到以下错误: 系统错误创建会话:org。冬眠服务jndi。JndiException:无法查找JNDI名称[java:comp/env/jdbc/OracleDS] 以下是我所做的设置: Websp

  • 我已经为使用外部Tomcat的Spring Boot应用程序的JNDI数据源连接进行了bellow提到的配置。 context.xml类似 为spring boot定义了Application.Properties 更新了web.xml,如

  • 我有一个MS SQLServer 2008 a数据库,名为:“conpool”。并在那里创建了一个具有id、全名和年龄的表。现在,我已经在Netbeans 7.3和Tomcat 7.0.30中的Java中实现了一个连接池,以避免每次都将连接绑定到我的数据库,并且我可以对数据库进行查询。 我的连接池: //------------------------Beginn JDBC连接池---------

  • 问题内容: 我正在尝试设置一些jUnit测试。我们的数据库由服务器使用JNDI连接。我们在root.xml中有一个描述设置的xml。如何设置jUnit以连接数据库?我希望它只是从root.xml中读取内容,但是无论如何我都愿意进行设置。 问题答案: 我发现最好的方法是使用称为Simple- Jndi的 东西。 我将此添加到Maven文件中: 您可以在此处下载软件包,下载内容包含说明手册。 http

  • 问题内容: 我设置了以下环境: Java 1.5 Sun application server 8.2 Oracle 10 Xe *Pillar 2 hibernate 我想知道如何为Java客户端(即,Web应用程序外部)编写代码,该代码可以引用应用程序服务器提供的JNDI数据源。 Sun Application Server的端口均为默认端口。服务器配置中有一个名为jdbc / xxxx的JN

  • 我正在使用嵌入式Jetty 9.2,并试图设置一个需要通过JNDI访问的Oracle数据源。我相信我已经正确地设置了这个,但是它不起作用,尽管花了一天的大部分时间在网上搜索。有人能帮忙吗? 以下是我的启动代码: 这是我的jetty-env.xml(在我的战争的WEB-INF目录中): 这是我的web.xml参考资料: 我得到两个错误。当我启动服务器时,我得到 JAVAlang.IllegalSta