使用工具: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() ;
%>
只要能输出数据库的连接信息就没问题了。
如果注解不能使用,就不要纠结了,换种方式。

