java jndi的使用
?
java jndi的使用
1.配置jndi
1-1:在WebRoot/META-INF/新建context.xml文件(也可以把tomcat/conf/下的context.xml复制过来;
文件格式如下;把这段放上面这个文件Context这个节点里面就行了
1-1-1:mysql
<Resource name="jdbc/test" auth="Container" type="javax.sql.DataSource"
maxActive="600" maxIdle="32" maxWait="32" username="root" password="123"
driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.0.11:3306/test" />
1-1-2:oracle
<Resource name="jdbc/test" auth="Container" type="javax.sql.DataSource"?
maxActive="600" maxIdle="32" maxWait="32" username="root" password="123"?
driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@192.168.0.11:1521:test"/>
1-2;在tomcat/server.xml里面配置也行;也就是上面这段话,放下相同的节点下也行
2.有些说需要在web.xml里面配置;
<resource-ref>
<description>de</description>
<res-ref-name>jdbc/test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
//上面这话我也配置也行
3.在java中使用
?
import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import javax.naming.Context;import javax.naming.InitialContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.sql.DataSource;public class Test{ public Connection getInstance()throws Exception{Connection conn = null;try{Context context = new InitialContext(); DataSource ds = (DataSource) context.lookup("java:comp/env/jdbc/test"); //jdbc/test这是上面配置好的System.out.println(ds);conn = ds.getConnection(); }catch (Exception e) {e.printStackTrace();}return conn;}public void queryUserInfo(){Connection conn=null;PreparedStatement prep=null;ResultSet rs=null;try {conn = this.getInstance();String sql="select * from userInfo";prep = conn.prepareStatement(sql);rs = prep.executeQuery();if(rs!=null){while(rs.next()){System.out.println("username:"+rs.getString("USERNAME")+"\t"+"password"+rs.getString("password"));}}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {rs.close();prep.close();conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public static void main(String [] args){queryUserInfo();//执行}}?4.问题
?org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1136)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
//上面这错是因为mysql.jar没有在tomcat/lib下,加下lib下就ok了