我在这里尝试将应用程序从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");
答案 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);