如何配置JNDI操作记实

1.登陆管理界面
http://localhost:8080/admin

密码和用户名在你安装的时候设定的,如果忘记(或没有)的话,去改tomcat\conf\tomcat-users.xml,添加admin和manager两个role,一个用户,该用户的role为admin和manager就可以了,按原有的xml复制修改就可以。

2.设置步骤
2.1 点击左边框架中Service菜单项左边的小圆,展开列表.
2.2 点击左边框架中Host (localhost)菜单项左边的小圆,展开列表.
2.3 点击左边框架中你要添加连接池的工作目录的菜单项左边的小圆,展开列表.
2.4 点击左边框架中Data Sources蔡单项,右边框架出现设置页。
2.5 从右边框架中右上角的Data Source Actions下拉列表中选择create new data source
2.6 填写示例:
JNDI Name: jdbc/MyDataSource
Data Source URL: jdbc:oracle:thin:@localhost:1521:MyOracle
JDBC Driver Class: oracle.jdbc.driver.OracleDriver
User Name: test
Password: test


2.7 点击右边框架中右上角save按钮
2.8 点击顶部框架Commit Changes按钮。


进入Data Sources 项 ,在右上角的下拉菜单中选择Create New Data Source ,在其下边的输入框中输入需要的配置信息:

JNDI Name:jdbc/XXX(XXX自己命名,jdbc/XXX为建立的jndi实体名称)

Data Source URL:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=ObjectDataBaseName(目标数据源设置)

JDBC Driver Class: com.microsoft.jdbc.sqlserver.SQLServerDriver 即使用的数据库驱动程序

User Name: 连接数据库的用户名

Password: 数据库密码

Max. Active Connections: 最大连接数

Max. Idle Connections: 是最大的空闲连接数

Max. Wait for Connection: 最大等待连接数

如果要部署的是个WEB应用程序,则将该应用程序放在 $TOMCAT_HOME/webapps目录下,有两种方式可以引用我们所配置的JNDI数据源
(1)[这种方法可以进行多个项目的建设和发布]
可以在TOMCAT_HOME/conf/Catalina/localhost下新建XXX.xml文件,XXX为所发布的WEB应用程序的名字,如我所发布的WEB应用程序是JndiTest,则.xml文件命名为JndiTest.xml,该文件内容为:
<?xml version='1.0' encoding='utf-8'?>

           <Context debug="1" docBase="$Tomcat 5.0_Home/webapps/JndiTest" path="/JndiTest" reloadable="true" workDir="work\Catalina\localhost\JndiTest">

           <Resource name="jdbc/test" type="javax.sql.DataSource"/>

           <ResourceParams name="jdbc/test">

            <parameter>

               <name>factory</name>

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

            </parameter>

            <parameter>

               <name>password</name>

               <value>DataBasePassword</value> 

            </parameter>

            <parameter>

               <name>maxActive</name>

               <value>4</value>

            </parameter>

            <parameter>

               <name>maxWait</name>

               <value>5000</value>

            </parameter>

            <parameter>

               <name>url</name>

               <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=ObjectDataBaseName</value>

</parameter>

            <parameter>

               <name>driverClassName</name>

               <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
 
            </parameter>

            <parameter>

               <name>username</name>

               <value>DataBaseUserName</value>

            </parameter>

            <parameter>

               <name>maxIdle</name>

               <value>2</value>

            </parameter>

           </ResourceParams>

           </Context>
(2)上面的方法只能实现一个项目,建议熟练了以后用(1)中的方法
为了避免每个WEB应用程序都创建XXX.xml文件,可以修改TOMCAT_HOME/conf下的server.xml文件,修改如下:

在<Host></Host>之间加入:
 <Context path="/JndiTest" docBase="$Tomcat 5.0_Home/webapps/JndiTest" debug="1" reloadable="true">

             <Resource name="jdbc/test" type="javax.sql.DataSource"/>

             <ResourceParams name="jdbc/test">

                <parameter>

                   <name>url</name>

                   <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=ObjectDataBaseName</value>

</parameter>

                <parameter>

                   <name>driverClassName</name>

                   <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>

                </parameter>

                <parameter>

                   <name>maxWait</name>

                   <value>5000</value>

                </parameter>

                <parameter>

                   <name>maxActive</name>

                   <value>4</value>

                </parameter>

                <parameter>

                   <name>password</name>

                   <value>DataBasePassword</value>

                </parameter>

                <parameter>

                   <name>maxIdle</name>

                   <value>2</value>

</parameter>

                <parameter>

                   <name>username</name>

                   <value>DataBaseUserName</value>

                </parameter>

                <parameter> 

                   <name>factory</name> 

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

                </parameter> 

          </ResourceParams>

          </Context>
 
(3)在相应的web.xml里加入
<resource-ref>
             <description>SqlServer Datasource example</description>
             <res-ref-name>jdbc/SqlServerDB</res-ref-name>
             <res-type>javax.sql.DataSource</res-type>
             <res-auth>Container</res-auth>
          </resource-ref>
四.测试:

以上工作都完成后,便可进行测试。首先用普通的jsp页面测试不进行数据库操作时的情况,无误后进行数据库操作测试。

(1)新建一数据源test,含表T_test,并存如数据

(2)在项目的lib文件下部署commons-pool.jar, commons-dbcp.jar

(3)如下为jsp测试页面代码
<%@ page contentType="text/html;charset=gb2312"%> 

           <%@ page import="java.sql.*"%>

<%@ page import="javax.sql.*"%>  

           <%@ page import="javax.naming.*"%>  

           <html> 

             <body> 

               <%  Context ctx = new InitialContext();

                   Connection conn=null;

                   ctx = new InitialContext();

                   DataSource ds =(DataSource)ctx.lookup("java:comp/env/jdbc/test");

                   conn = ds.getConnection();

                   Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); 

                   String sql="select * from T_Test"; 

                   ResultSet rs=stmt.executeQuery(sql);
               %> 
               
               <%  while(rs.next()) {

                   out.println(rs.getString(1));

                   out.println(rs.getString(2));

                   out.println(rs.getString(3));

   }
               %> 
               <% out.print("数据库操作成功!");

                  rs.close(); 

                  stmt.close(); 

                  conn.close(); 

               %> 

             </body> 

           </html>
http://heisetoufa.ggblog.com
1群:5302559
2群:5358308
3群:43605976
4群:43605925(