在web.xml中,resource-ref标记是什么意思?

时间:2012-07-18 17:14:13

标签: java database tomcat jdbc datasource

  

可能重复:
  What is resource-ref in web.xml used for?

我在Tomcat的context.xml中添加了以下标记:

    <Resource name="jdbc/PollDatasource" auth="Container" type="javax.sql.DataSource"
    driverClassName="org.apache.derby.jdbc.ClientDriver" url="jdbc:derby://localhost:1527/poll_database;create=true"
    username="suhail" password="suhail" maxActive="20" maxIdle="10" maxWait="-1" />

当服务器启动并部署应用程序时,将读取上述标记。我还在我项目的web.xml中添加了以下内容:

 <resource-ref>
  <description>my connection</description>
  <res-ref-name>jdbc/PollDatasource</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
 </resource-ref>

以上标签的含义是什么?

因为当我写下如下声明时:

DataSource ds = (DataSource)envContext.lookup("jdbc/PollDatasource")

是不是直接查看服务器的context.xml?我知道我错了。在这种情况下,请帮助我了解resource-refweb.xml代码的含义是什么?

2 个答案:

答案 0 :(得分:2)

我认为它意味着您的Web应用程序希望能够访问具有特定名称和其他属性的JNDI资源的“提示”或实时文档。 context.xml文件是一个Tomcat工件,虽然许多应用服务器嵌入了Tomcat引擎,但它远非通用。

答案 1 :(得分:2)

您必须使用以下代码进行查找

DataSource ds = (DataSource)envContext.lookup("java:comp/env/jdbc/PollDatasource");

在您的网络应用程序中,

JNDI上下文在应用程序内部和应用程序外部是不同的,在本例中是context.xml,您在其中定义了资源。

resouce-ref部分中定义的所有资源都映射到应用程序的Env Context。所以,应用程序可以访问这些资源。应用程序上下文和容器上下文之间的交叉引用是在部署时完成的。