tomcat+MySQL 配置JNDI 访问 Dataresource

来源:互联网 发布:淘学家淘宝网店培训班 编辑:程序博客网 时间:2024/05/17 08:25

1.在webapp下的META-INFO下新建文件context.xml

2.编辑context.xml

<Context path="/test" docBase="test" debug="5" reloadable="true"> 
   
<Resource name="jdbc/MySQL" auth="Container" type="javax.sql.DataSource"
         factory
="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
         driverClassName
="com.mysql.jdbc.Driver"
         url
="jdbc:mysql://localhost:3306/你的DB名字"
         username
="用户名" password="密码"
         maxActive
="20" maxIdle="10" maxWait="-1" />
   
</Context>

 3.重启tomcat

如果是使用全局Datasource

在server.xml中加入

 

<Resource name="jdbc/MySQL" auth="Container" type="javax.sql.DataSource"
         factory
="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
         driverClassName
="com.mysql.jdbc.Driver"
         url
="jdbc:mysql://localhost:3306/你的DB名字"
         username
="用户名" password="密码"
         maxActive
="20" maxIdle="10" maxWait="-1" />

 

重复步骤 1,在context中加入

<ResourceLink global="你的JNDI名字" name="你的JNDI名字" type="javax.sql.DataSource"/>

如果是使用admin配置JNDI

Tomcat
+Service
+Host
+[要使用JNDI的文件夹]
+Resources
+Data Sources 

接下来设定右边
下拉的选Data Sources Actions -> 选择 Create New Data Source

接下來设定 
JNDI Name: jdbc/MySQL
Data Source URL: jdbc:mysql://localhost:3306/你的数据库名字

JDBC Driver Class: com.mysql.jdbc.Driver
User Name: 用户名

Password: 密码

接著按 Save

最後按上方 Commit Changes 按鈕就可以了

 

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import javax.naming.*;
import javax.sql.*;

public class DB extends HttpServlet {
 DataSource pool;
 public void init() throws ServletException {
   Context context = null;
   try {
    context = (Context)new InitialContext();
    pool = (DataSource)context.lookup("java:comp/env/jdbc/MySQL");
    
    if(pool == null) throw new ServletException ("mysqlis an unknow DataSource");
    
   }
   catch(NamingException ne) {
    throw new ServletException(ne.getMessage());
   }
 }
 public void doGet(HttpServletRequest request,HttpServletResponse response )throws ServletException,java.io.IOException {
  String sql = "select * from test";
  Connection conn = null;
  Statement stmt = null;
   ResultSet rs = null;
   ResultSetMetaData rsm = null;
   
   response.setContentType("text/html");
   java.io.PrintWriter out = response.getWriter();
   out.println("<html><head><title>Database Access</title></head><body>");
   
   try{
    conn = pool.getConnection();
    stmt = conn.createStatement();
    rs = stmt.executeQuery(sql);
    rsm = rs.getMetaData();
    out.println("<table border=1><tr>");
    int colCount = rsm.getColumnCount();
    for(int i = 1;i <=colCount; ++i) {
     out.println("<td>"+rsm.getColumnName(i)+"</td>");
    }
    out.println("</tr><br>");
    while(rs.next()) {
     out.println("<tr>");
     for(int i = 1;i<=colCount; ++i)
      out.println("<td>"+rs.getXXX(i); + "</td>");
      out.println("</tr>");
    }
   }
   catch(Exception e) {
    throw new ServletException(e.getMessage());
    
   }
   finally {
    try{
     if(stmt != null)
      stmt.close();
        if(conn != null)
         conn.close();
    }
    catch(SQLException sqle) {
    }
   }
   
   out.println("</table></body></html>");
 }
}