Tutorial :Getting DataSource resource in a Java web app



Question:

I have the following resource tag in my context.xml file:

<?xml version="1.0" encoding="UTF-8"?>  <Context antiJARLocking="true" path="/myApp">    <Resource name="jdbc/myDS" auth="Container"       type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="1000"      username="user" password="passwd"      driverClassName="com.mysql.jdbc.Driver"      url="jdbc:mysql://localhost:3306/myDB" />  </Context>

I am developing a Java web app using the Stripes framework in NetBeans.

How can I get this resource from within a Java class?


Solution:1

You need your bean to be instantiated by something (a dependecy injection framework) which knows how to handle the @Resrouce annotation. JSP itself doesn't know how.

In this case it would be simpler to locate the DataSource in the JNDI context:

Context initContext = new InitialContext();  Context envContext  = (Context) initContext.lookup("java:/comp/env");  DataSource ds = (DataSource) envContext.lookup("jdbc/myDS");  


Solution:2

Thank you Bozho for the answer. I only had to change the lookup string to get it to work:

Context ctx = new InitialContext();  DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/myDS");  Connection conn = ds.getConnection();

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »