1

可能重复:
web.xml 中的资源引用是做什么用的?

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

    <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-ref标签的含义是web.xml什么?

4

2 回答 2

2

您必须使用以下代码查找

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

在您的 Web 应用程序中,

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

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

于 2012-07-18T19:34:13.600 回答
2

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

于 2012-07-18T18:07:34.383 回答