使用工具: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() ;
%>
?
只要能輸出數據庫的連接信息就沒問題了。
?
如果注解不能使用,就不要糾結了,換種方式。
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

