我在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-ref
中web.xml
代码的含义是什么?
答案 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。所以,应用程序可以访问这些资源。应用程序上下文和容器上下文之间的交叉引用是在部署时完成的。