在Tomcat中配置數據源


使用工具:TOMCAT 7.0.52、IntelliJ IDEA 13.0.2、JSF 2.0+、SqlServer、jtds-1.2.5.jar

搞了好久都沒成功,開始使用注解引入DataSource,可是一直不成功,后來使用lookup方式,寫了一個本地主類(包含main方法)測試,也是不成功,艹,都快崩潰了,后來經過各種測試,終於搞定了,本地主類測試是無效的,必須通過web訪問才能成功,真尼瑪蛋疼。注解估計跟版本有關,沒精力去弄了。

以下是配置步驟(相應的路徑換成自己的):

1、把jtds-1.2.5.jar放到Tomcat目錄里的lib目錄下。如:D:\IntelliJ\tomcat7\lib

2、在D:\IntelliJ\tomcat7\conf目錄里的context.xml文件里加上如下代碼:

1 <Context>
2     <WatchedResource>WEB-INF/web.xml</WatchedResource>
3     <Resource name="jdbc/sqlserver" auth="Container" type="javax.sql.DataSource"
4               driverClassName="net.sourceforge.jtds.jdbc.Driver"
5               url="jdbc:jtds:sqlserver://localhost:1433/yourDatabaseName"
6               username="username" password="password" maxActive="100"  maxIdle="30"/>
7 </Context>

3、在你項目里的web.xml文件里加入如下內容:

1     <!--配置數據源-->
2     <resource-ref>
3         <description>Sqlserver Datasource</description>
4         <res-ref-name>jdbc/sqlserver</res-ref-name>
5         <res-type>javax.sql.DataSource</res-type>
6         <res-auth>Container</res-auth>
7     </resource-ref>

4、在你的代碼里引用數據源:

 1     private DataSource ds;
 2 
 3     public LoginBean() {
 4 
 5         try {
 6             // 初始化查找命名空間
 7             Context ctx = new InitialContext();
 8             ds = (DataSource)ctx.lookup("java:comp/env/jdbc/sqlserver") ;
 9         } catch (NamingException e) {
10             System.out.println("使用lookup找不到數據源.");
11             e.printStackTrace();
12         }
13 
14     }

5、測試test.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8" %>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%!
    final String JNDINAME = "java:comp/env/jdbc/sqlserver" ;
%>
<%
    Connection conn = null ;
    try
    {
        // 初始化查找命名空間
        Context ctx = new InitialContext() ;
        // 找到DataSource
        DataSource ds = (DataSource)ctx.lookup(JNDINAME) ;
        conn = ds.getConnection() ;
        String sql="select passwd,logincount from credential where username=?";
        PreparedStatement pwdQuery=conn.prepareStatement(sql);
        pwdQuery.setString(1,"admin");
        ResultSet result=  pwdQuery.executeQuery();
        if(!result.next()){
             return;
         } 
        System.out.println(result.getString("passwd")) ;
    }
    catch(Exception e)
    {
        System.out.println(e) ;
    }
%>
<%=conn%>
<%
    // 將連接重新放回到池中
    conn.close() ;
%>

 

只要能輸出數據庫的連接信息就沒問題了。

 

如果注解不能使用,就不要糾結了,換種方式。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM