在Java Web应用程序中获取DataSource资源

时间:2010-02-11 07:51:00

标签: java mysql jsp javabeans

我的context.xml文件中有以下资源标记:

<?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>

我正在使用NetBeans中的Stripes框架开发Java Web应用程序。

如何从Java类中获取此资源?

2 个答案:

答案 0 :(得分:4)

您需要通过某种(依赖注入框架)实例化您的bean,它知道如何处理@Resrouce注释。 JSP本身不知道如何。

在这种情况下,将数据源定位在JNDI上下文中会更简单:

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

答案 1 :(得分:1)

谢谢Bozho的回答。我只需更改查找字符串即可使其工作:

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