扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:中国IT实验室 来源:中国IT实验室 2007年9月30日
关键字:
在本页阅读全文(共4页)
其他文章说以上配置就OK了,对于web.xml的配置可有可无,其实不是这样子的。如果在web应用中访问了由Servlet容器管理的某个JNDI Resource,则必须在web.xml中声明对这个JNDI Resource的引用。表示资源引用的元素为<resource-ref>,该元素加在<wepapp></ wepapp >中。
<resource-ref> <descryiption>DB Connection</descryiption> <res-ref-name>jdbc/JNDI名字 </res-ref-name> <res-type>javax.sql.DataSource </res- type> <res-auth>Container </res-auth> </resource-ref> |
<resource-ref>元素的属性如下:
属性 | 描述 |
description | 对所引用的资源的说明 |
res-ref-name | 指定所引用资源的JNDI名字,与<Resource>元素中的name属性保持一致 |
res-type | 指定所引用资源的类名字,与<Resource>元素中的type属性保持一致 |
res-auth | 指定所引用资源的Manager,与<Resource>元素中的auth属性保持一致 |
到这里,数据源就已经配置成功了。但是我在测试的时候除了一点小麻烦,主要原因是对DataSource的概念没搞清楚。我是这么测试的,写一个测试类,然后在eclipse中进行junit测试,捕获的异常为:
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial。
同样的代码在JSP文件中正常运行,后来翻了一些资料,终于找到了问题的所在了。原来DataSource是由容器(TOMCAT)提供的,所以我的测试会抛出异常。为了再次验证想法是否正确,在jsp文件中import刚才抛出异常的类,在进行连接数据库,结果一切正常。
下面的例子是实际应用中使用DataSource,在jsp文件中连接oracle。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page import="java.sql.*"%> <%@ page import="javax.naming.*"%> <%@ page import="javax.sql.*"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <% Context initContext = new InitialContext(); Context envContext = (Context) initContext.lookup("java:/comp/env"); DataSource db = (DataSource)envContext.lookup("jdbc/javablogorl"); //javablogorl为<Resource>元素中name属性的值 Connection conn = db.getConnection( ); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM blog_systemadmin"); while(rs.next()){ out.print(rs.getString("admin_name")+" "); out.print(rs.getString("admin_password")+"<br>"); } rs.close(); stmt.close(); conn.close(); %> </body> </html> |
另:tomcat5.5的配制方法为:
<Resource name="jdbc/JNDI名字" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="用户名" password="密码" driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@ip:端口:sid"/>
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者