I am using tomcat connection pool, jpa, hibernate. The datasource i created in context.xml of tomcat works fine if I try to get it using :
source = (DataSource) ((Context) c.lookup("java:comp/env")).lookup("jdbc/kids");
but if i specify this jndi datasource in persistence.xml
<persistence-unit name="kids-tomcat" transaction-type="JTA">
<jta-data-source>jdbc/kids</jta-data-source>
</persistence-unit>
I am getting following exception: org.hibernate.service.jndi.JndiException: Unable to lookup JNDI name [jdbc/kids]
Any idea why it could happen !
Maybe try the persistence.xml JNDI defined name including both the namespace ("java:comp/env") as well as the JNDI path ("jdbc/kids") in a single-string (i.e put them together).
Finally it worked today after i specified the properties below.. because just mentioning the datasource is not enough; we need to specify some properties like which dialect to use. If we specify datasource; we need not specify username , password url of the database ( as all are specified in the datasource configuration itself) .
Most important point is the way you specify the datasource. It should be complete path: java:/comp/env/jdbc/kids . All this while I was missing the slash just before comp.