现在的位置: 首页 > 综合 > 正文

Tomcat中使用jndi例子

2013年10月08日 ⁄ 综合 ⁄ 共 3695字 ⁄ 字号 评论关闭
说明:
       主要使用jndi对tomcat中的 env 以及 source 进行调用
问题:
        .注意 jdbc驱动需要放在 ${CATALINA_HOME}/common/lib 目录下
         在tomcat的配置文件中需要注意 标签的次序问题

#server.xml的配置如下


<Context path="/tomtest" reloadable="true" docBase="E:/admin/workspace/javaWS/tomtest" workDir="E:/admin/workspace/javaWS/tomtest/work/org/apache/jsp" >

    <!--Loader className="org.apache.catalina.loader.DevLoader" reloadable="true" debug="1"/-->

    <!--server level Environment-->

    <Environment name="greetings" type="java.lang.Integer" value="15"/>

    <Resource name="jdbc/ds" scope="Shareable" type="javax.sql.DataSource"/>

    <ResourceParams name="jdbc/ds">

       <!-- use dbcp pool-->

       <parameter>

        <name>factory</name>

        <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>

       </parameter>

       <!-- DBCP database connection settings -->

       <!-- MS SQL Server -->

       <parameter>

        <name>url</name>

        <value>jdbc:jtds:sqlserver://HOST:1433/Northwind</value>

       </parameter>

       <parameter>

        <name>driverClassName</name>

        <value>net.sourceforge.jtds.jdbc.Driver</value>

       </parameter>

       <parameter>

        <name>username</name>

        <value>sa</value>

       </parameter>

       <parameter>

        <name>password</name>

        <value>******</value>

       </parameter>      

       <!-- DBCP connection pooling options -->

       <parameter>

        <name>maxWait</name>

        <value>3000</value>

       </parameter>

       <parameter>

        <name>maxIdle</name>

        <value>100</value>

       </parameter>

       <parameter>

        <name>maxActive</name>

        <value>10</value>

       </parameter>

    </ResourceParams>

</Context>


#web.xml配置如下

<!--resource reference for datasource... it use "source" in server.xml-->
    <resource-env-ref>
      <description> data source entry test</description>
      <resource-env-ref-name>jdbc/ds</resource-env-ref-name>
      <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type>
    </resource-env-ref>
    <!-- Web level Environment-->
    <env-entry>
      <description>test entry</description>
      <env-entry-name>webEnv</env-entry-name>     
      <env-entry-value>i am environment in web.xml...</env-entry-value>
      <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>


#JSP测试使用如下

<%@page contentType="text/html;charset=gb2312"
    import="javax.naming.*,java.sql.*,javax.sql.*"
%>

<%
//建立一个context 作为查找源 这里为myenv ctx为初始源
Context ctx =new InitialContext();
//注意 tomcat中的对配置的查找都在java:comp/env下面
Context myenv =(Context)ctx.lookup("java:comp/env");

//这里得到一个 server级的环境变量
Integer greetings= (Integer)myenv.lookup("greetings");
out.println("serverEnv is: "+greetings+"<br/>");
//这里的是web级的环境变量
out.println("WebEnv is:"+(String)myenv.lookup("webEnv")+"<br/>");

/*
    使用tomcat中配置的datasource 进行数据库操作
*/
Connection conn=null;
DataSource ds=null;
Statement stat=null;
ResultSet res=null;

try{
    //Class.forName("net.sourceforge.jtds.jdbc.Driver");
   
    //得到tomcat配置的datasource引指
    ds=(DataSource)myenv.lookup("jdbc/ds");
   
    //使用datasource得到connection
    if(ds!=null){
        conn=ds.getConnection();
        out.println("had data source ...");
    }
   
    stat=conn.createStatement();           
    //执行语句并返回一个ResultSet
    res=stat.executeQuery("select distinct top 20 * from Orders");           
    //打印ResultSet
    out.print("<br/>");
    while(res.next())
    {
        out.print(res.getInt(1)+":"+res.getString(2)+"<br/>");
    }
   
}
catch(Exception e){
    out.println(e);
}
finally{
    if(res!=null)
        res.close();
    if(stat!=null)
        stat.close();
    if(conn!=null)
        conn.close();
   

}
//关闭context 据说context最好关了
ctx.close();
myenv.close();

%>


#显示结果如下

serverEnv is: 15
WebEnv is:i am environment in web.xml...
conn
10248:VINET
10249:TOMSP
10250:HANAR
10251:VICTE
10252:SUPRD
10253:HANAR
10254:CHOPS
10255:RICSU
10256:WELLI
10257:HILAA
10258:ERNSH
10259:CENTC
10260:OTTIK
10261:QUEDE
10262:RATTC
10263:ERNSH
10264:FOLKO
10265:BLONP
10266:WARTH
10267:FRANK


抱歉!评论已关闭.