今天在自己WIN7电脑上好好的 html5+ajax+servlet 部署到另外一台WINDSERVER2008 居然无法访问操作数据库的servlet
晚上研究 连接池,看明天去换一下 连接池是否能解决。
先解决 tomcat+jdbc连接池再说
1 JAVA工程 web-inf/lib/ 放入 sqljdbc4.jar (可以访问 sqlserver2005和 2008)
2 在 webproject目录的 WebRoot/WETA-INF目录下
创建 context.xml文件, 如果有,就在 <context>下添加 <Resource >
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<Context>
<Resource name="jdbc/zcdb"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="sa"
password="1113"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433; DatabaseName=AssentManage2"
/>
</Context>
3 在 myeclipse中
新建一个工具类 ,在工具类中增加如下函数
public static Connection dbconnet()
{
Context ctx;
try {
ctx = new InitialContext();
Context envctx = (Context) ctx.lookup("java:comp/env");
DataSource ds = (DataSource) envctx.lookup("jdbc/zcdb");
count=count+1;
System.out.println("产生第"+count+"个连接");
Connection conn=ds.getConnection();
return conn;
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
4 编写 客户端
// 根据userid 查询自己的 设备
public static List<DevInfo> getMyDevinfo(int userid ) {
Connection conn;
java.sql.Statement stmt = null;
java.sql.ResultSet rs = null;
String sql ="select servername,currentposition, loginaccount,loginpassword from server_info where id in ( select ser_id from user_server where user_id="+userid +")";
List<DevInfo> list1=new ArrayList<DevInfo>();
try {
System.out.println("根据userid获取服务器信息" + sql);
conn = dbconnet();
stmt = conn.createStatement();
boolean ret = stmt.execute(sql);
//rs = stmt.executeQuery(sql);
if(ret){
rs = stmt.getResultSet();
while (rs.next()) {
DevInfo tm=new DevInfo();
tm.setSbname(rs.getString("servername"));
tm.setSbpos(rs.getString("currentposition"));
tm.setSbaccount(rs.getString("loginaccount"));
tm.setSbpwd(rs.getString("loginpassword"));
list1.add(tm);
}
rs.close();
stmt.close();
conn.close();count=count-1; System.out.println("释放一个,还有"+count+"个");
return list1;
}
} catch (SQLException e) {
e.printStackTrace();
return null;
}
return null;
}