web.xml的一些配置信息详解

1、web.xml中的<resource-ref>

Q:在使用数据库连接池的时候,书上说需要配置这个属性,但是试了试,不配也没关系,照样用。那我请教的是,这个属性的作用是什么呢?

A:

你是在tomcat中配置连接池吗?

在tomcat中配置好了,web.xml是不用再配的。

直接用就可以。

程序中取:
Context intitCtx = new InitialContext();
Context envCtx = (Context)intitCtx.lookup("java:comp/env");//从JNDI取出java环境上下文对象
DataSource ds = (DataSource)envCtx.lookup("jdbc/pro");//取数据源
Connection conn = ds.getConnection();//从连接池获取连接对象

---项目中使用的(报表平台)DataSourceHelper

    public static Connection getConn() {
        Connection conn = null;
        DataSource ds = null;
        try {
            InitialContext ctx = new InitialContext();
            Context ctx2 = (Context) ctx.lookup("java:comp/env");
            ds = (DataSource) ctx2.lookup("jdbc/report");
            conn = ds.getConnection();
        } catch (Exception ex) {
            log.warn(ex);
            ex.printStackTrace();
        }
        return conn;
    }

 

    public static Connection getConn(String jndiName) {
        Connection conn = null;
        DataSource ds = null;
        if (StringUtils.isEmpty(jndiName))
            jndiName = "jdbc/report";
        try {
            InitialContext ctx = new InitialContext();
            Context ctx2 = (Context) ctx.lookup("java:comp/env");
            ds = (DataSource) ctx2.lookup(jndiName);
            conn = ds.getConnection();
        } catch (Exception ex) {
            log.warn(ex);
            ex.printStackTrace();
        }
        return conn;
    }

web.xml中的配置:

 <resource-ref>
     <description>DB Connection</description>
     <res-ref-name>jdbc/report</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
 </resource-ref>

resource-ref子元素的描述如下:
● res-ref-name是资源工厂引用名的名称。该名称是一个与java:comp/env上下文相对应的JNDI名称,并且在整个Web应用中必须是惟一的。
● res-auth表明:servlet代码通过编程注册到资源管理器,或者是容器将代表servlet注册到资源管理器。该元素的值必须为Application或Container。
● res-sharing-scope表明:是否可以共享通过给定资源管理器连接工厂引用获得的连接。该元素的值必须为Shareable(默认值)或Unshareable。

tomcat中配置:

server.xml

 <Context docBase="new_rpt" path="/new_rpt" workDir="work" reloadable="true">
 <Resource                                                                 
         name="jdbc/report"                                                
         type="javax.sql.DataSource"                                       
         maxActive="10"                                                    
         maxIdle="8"                                                      
         username="xxx"                                                  
         maxWait="5000"                                                    
         driverClassName="oracle.jdbc.OracleDriver"                        
         password="xxx"                                                  
         url="jdbc:oracle:thin:@127.0.1.1:1521:report"/>                 
         </Context>    

Tomcat先找到web.xml下的<resource-ref>,然后再找server.xml下面的<Resource>。如果没有找到<Resource name=”JDBC/TestDB”>,或者名字错了,则会报“Cannot create JDBC driver of class '' for connect URL 'null'”错误。

意思也就是web.xml中<resource-ref>下<res-ref-name></res-ref-name>中的名称要与Resource 标签中的一致, 否则会报这个错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值