Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

The object referenced by the java:comp/env/HRONLINEFSDEV2 JNDI name could not be instantiated in Liberty

Ask Question

Here Am trying to migrating application from WAS 8 to Liberty. While running the application am getting error about JNDI lookup,

ERROR

CWNEN1001E: The object referenced by the java:comp/env/HRONLINEFSDEV2 JNDI name could not be instantiated. If the reference name maps to a JNDI name in the deployment descriptor bindings for the application performing the JNDI lookup, make sure that the JNDI name mapping in the deployment descriptor binding is correct. If the JNDI name mapping is correct, make sure the target resource can be resolved with the specified name relative to the default initial context. [Root exception is com.ibm.wsspi.injectionengine.InjectionException: CWNEN0030E: The server was unable to obtain an object instance for the java:comp/env/HRONLINEFSDEV2 reference. The exception message was: CWNEN1004E: The server was unable to find the HRONLINEFSDEV2 default binding with the javax.sql.DataSource type for the java:comp/env/HRONLINEFSDEV2 reference.]

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 FILE

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

In order for the binding file to associate a resource reference in web.xml with an server resource in server.xml, the res-ref-name in web.xml needs to match the name in IBM-WEB-BND.XML, ie, change <resource-ref name="HRONLINEFSDEV2" to <resource-ref name="HRONLINEFSQA2" (or vice versa). Also, your java code needs to lookup the jndi name specified in the binding file by binding-name="jdbc/hronline/ds_FSDEV2" like this

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

I changed as HRONLINEFSDEV2 in WEB.XML but in I given "ds = (DataSource) initContext.lookup("java:comp/env/HRONLINEFSDEV2");" but it throwing same error – Sankar Dec 10, 2018 at 6:23 You're using an incorrect JNDI name to lookup the resource, read the last sentence and lookup code of my answer above. – F Rowe Dec 10, 2018 at 13:12

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.