无法在Liberty中实例化java:comp / env / HRONLINEFSDEV2 JNDI名称引用的对象

时间:2018-12-07 14:27:24

标签: java websphere jndi websphere-liberty

我在这里尝试将应用程序从WAS 8迁移到Liberty。在运行应用程序时,出现有关JNDI查找的错误,

错误

  

CWNEN1001E:java:comp / env / HRONLINEFSDEV2引用的对象   JNDI名称无法实例化。如果参考名称映射到   应用程序的部署描述符绑定中的JNDI名称   执行JNDI查找,请确保JNDI名称映射在   部署描述符绑定正确。如果是JNDI名称映射   是正确的,请确保可以使用   相对于默认初始上下文的指定名称。 [根   com.ibm.wsspi.injectionengine.InjectionException是例外:   CWNEN0030E:服务器无法获取该对象的对象实例   java:comp / env / HRONLINEFSDEV2参考。异常消息为:   CWNEN1004E:服务器无法找到默认的HRONLINEFSDEV2   与javax.sql.DataSource类型的绑定   java:comp / env / HRONLINEFSDEV2参考。]

WEB.XML

<resource-ref>
    <description>
    </description>
    <res-ref-name>HRONLINEFSDEV2</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Application</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

IBM-WEB-BND.XML

<resource-ref name="HRONLINEFSDEV2" binding-name="jdbc/hronline/ds_FSDEV2"/>

SERVER.XML

<dataSource id="HRONLINEFSDEV2" jndiName="jdbc/hronline/ds_FSDEV2" type="javax.sql.DataSource" jdbcDriverRef="Oracle_12.1.0.2">
        <properties.oracle databaseName="SF304D03" serverName="ECCDB1382.ECC1Q.FORD.COM" portNumber="1521" URL="jdbc:oracle:thin:@ECCDB1382.ECC1Q.FORD.COM:1521:SF304D03" statementCacheSize="50" name="HRONLINEFSDEV2" description="Data source template"/>
        <connectionManager agedTimeout="1200" connectionTimeout="180" maxIdleTime="1800" maxPoolSize="100" minPoolSize="1" reapTime="300"/>
    </dataSource>

JAVA文件

initContext = new InitialContext();
ds = (DataSource) initContext.lookup("java:comp/env/jdbc/hronline/ds_FSDEV2");

1 个答案:

答案 0 :(得分:1)

为了使绑定文件将web.xml中的资源引用与server.xml中的服务器资源相关联,web.xml中的let images: [UIImage] = (1...10).map { return UIImage(named: "Jump_\($0)") } 必须与IBM-WEB中的UIImage(named:)相匹配-BND.XML,即,将res-ref-name更改为name(反之亦然)。此外,您的Java代码需要像这样<resource-ref name="HRONLINEFSDEV2"查找绑定文件中指定的jndi名称

ds =(DataSource)initContext.lookup(“ java:comp / env / jdbc / hronline / ds_FSDEV2);