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



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

错误

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

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"/>

服务器。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");

为了使绑定文件将web.xml中的资源引用与server.xml中的服务器资源相关联,web.xml中res-ref-name需要与IBM-web-BND中的name相匹配。XML,即将<resource-ref name="HRONLINEFSDEV2"更改为<resource-ref name="HRONLINEFSQA2"(反之亦然(。此外,您的java代码需要查找binding-name="jdbc/hronline/ds_FSDEV2"在绑定文件中指定的jndi名称,如以下

ds=(DataSource(initContext.lowlup("java:comp/env/jdbc/hronline/ds_FSDEV2(;

最新更新