Объект, на который ссылается имя JNDI java: comp / env / HRONLINEFSDEV2, не может быть создан в Liberty - PullRequest
0 голосов
/ 07 декабря 2018

Здесь я пытаюсь перенести приложение из WAS 8 в Liberty.Во время работы приложения появляется сообщение об ошибке поиска JNDI,

ОШИБКА

CWNEN1001E: Объект, на который ссылается имя JNDI java: comp / env / HRONLINEFSDEV2, можетне быть созданнымЕсли имя ссылки отображается на имя 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 голосов
/ 08 декабря 2018

Чтобы файл привязки связал ссылку на ресурс в web.xml с ресурсом сервера в server.xml, res-ref-name в web.xml должен соответствовать name в IBM-WEB-BND.XMLт. е. изменить <resource-ref name="HRONLINEFSDEV2" на <resource-ref name="HRONLINEFSQA2" (или наоборот).Кроме того, ваш java-код должен искать имя jndi, указанное в файле привязки, по binding-name="jdbc/hronline/ds_FSDEV2" следующим образом

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

...