[经典问题????]struts里配置的连接池,如果在java的类和javabean中调用
就是想获得struts中配置文件中配置的连接池,在类中把连接这个过程封装起来
以后要得到连接时就只用new下这个类就行了
但struts的连接池的使用好像非要是action才行是吗 ???????
如果解决马上给分!
问题点数:100、回复次数:11Top
1 楼startstrong()回复于 2006-05-03 20:02:31 得分 0
upTop
2 楼startstrong()回复于 2006-05-03 20:03:16 得分 0
给个例子,如果可以马上结贴,分不够可以再加!!!!!!!!!!!!!!!!Top
3 楼usegirls()回复于 2006-05-03 20:43:59 得分 0
关注!!!!
帮助顶!Top
4 楼usegirls()回复于 2006-05-03 21:15:11 得分 0
帮助顶!Top
5 楼zsq666(bluechina)回复于 2006-05-04 13:00:05 得分 0
顶!Top
6 楼zsq666(bluechina)回复于 2006-05-04 23:17:36 得分 0
upTop
7 楼Michael_javavb()回复于 2006-05-05 08:22:07 得分 0
package com.ntsky.datasource;
import javax.naming.*;
import java.util.Hashtable;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import java.sql.Connection;
import javax.sql.DataSource;
import javax.naming.InitialContext;
import org.apache.log4j.Logger ;
import java.sql.*;
/**
* <p>Title: Ntsky OpenSource BBS</p>
* <p>Description: 从Jboss线程池中获取连接</p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: WWW.FM880.COM</p>
* @author 姚君林
* @version 1.0
*/
public class DBConnectionManager {
private static DBConnectionManager dbc = null;
private static Object object = new Object();
public DBConnectionManager(){}
// private final static Logger logger = Logger.getLogger(DBConnectionManager.class);
public static DBConnectionManager getInstance() {
if (dbc == null) {
synchronized(object){
if(dbc == null)
dbc = new DBConnectionManager();
}
}
return dbc;
}
/**
* 获取上下文
* @throws NamingException
* @return Context
*/
/*private Context getInitialContext() throws NamingException {
Hashtable environment = new Hashtable();
environment.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
environment.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
environment.put(Context.PROVIDER_URL, "jnp://127.0.0.1:1099");
return new InitialContext(environment);
}*/
/**.
* 获取连接
*/
public Connection getConnection() {
DataSource ds = null;
Connection conn = null;
try {
Context ctx = new InitialContext();
//tomcat ds = (DataSource) ctx.lookup("java:comp/env/ntsky");
//ds = (DataSource) ctx.lookup("java:comp/env/ntsky");
ds = (DataSource) ctx.lookup("java:/ntsky");
conn = ds.getConnection();
//logger.info("GET sql Connection scuess : conn = " + conn);
return conn;
}
catch (Exception ex) {
System.out.println(ex.getMessage());
//logger.error("get sql Connection failure : " + ex.getMessage());
}
return null;
}
public ResultSet rs_row(){
Connection conn = DBConnectionManager.getInstance().getConnection();
System.out.println("conn = " + conn);
String sql = "select * from t_user;";
ResultSet rs = null;
try {
Statement stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
return rs;
}
catch (Exception ex) {
System.out.println("ex"+ex.getMessage());
}
finally{
/*try{
rs.close();
}
catch(Exception e){
logger.error("DB rs_row 关闭指针错误 "+ e.getMessage());
}*/
try {
conn.close();
}
catch (Exception e) {
// logger.error("DB conn 关闭数据库连接错误 " + e.getMessage());
}
}
return null;
}
public String testProc(){
Connection conn = DBConnectionManager.getInstance().getConnection();
ResultSet rs = null;
CallableStatement cs = null;
String a = null;
try{
System.out.println("start");
//cs = conn.prepareCall("{ call procPara(?) }");
CallableStatement cStmt = conn.prepareCall("{call demoSp(?, ?)}");
System.out.println("start1");
cStmt.setString(1,"1");
cStmt.setString(2,"1");
System.out.println("start2");
rs = cStmt.executeQuery();
rs.next();
a = rs.getString(1);
}
catch(Exception e){
System.out.println("hahad"+e.getMessage());
}
finally{
try {
conn.close();
}
catch (Exception ex) {
System.out.println("ex : "+ ex.getMessage());
}
}
return a;
}
public static void main(String[] args) {
DBConnectionManager dbcm =DBConnectionManager.getInstance();
ResultSet rs = dbcm.rs_row();
try{
System.out.println("1 : " + rs.getString(1));
}
catch(Exception e){
System.out.println("main "+e.getMessage());
}
}
}
Top
8 楼Michael_javavb()回复于 2006-05-05 08:23:47 得分 0
上面的源码是我下的论坛系统所使用的。
下面给出我自己写的,简化了的Top
9 楼Michael_javavb()回复于 2006-05-05 08:25:49 得分 0
数据源的配置我就不说了,网上n多
package com.mich.stock.datasource;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
/**
* @author Michael Wang 从Tomcat数据库连接池(DBCP)中获取连接
*/
public class DBConnectionManager {
private static DBConnectionManager dbcm = null;
private static Object object = new Object();
public static DBConnectionManager getInstance() {
if (dbcm == null) {
synchronized (object) {
if (dbcm == null)
dbcm = new DBConnectionManager();
}
}
return dbcm;
}
public Connection getConnection() {
DataSource ds = null;
Connection conn = null;
try {
InitialContext ctx = new InitialContext();
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/stock");
if (conn == null)
conn = ds.getConnection();
return conn;
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
return null;
}
public ResultSet execQuery(String sql) {
Connection conn = DBConnectionManager.getInstance().getConnection();
System.out.println("conn = " + conn);// for test the DBCP
ResultSet rs = null;
try {
Statement stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
//System.out.println("rsnext="+rs.next());
return rs;
} catch (Exception ex) {
System.out.println("ex" + ex.getMessage());
} finally {
try {
System.out.println("finally Conn close");
conn.close();
} catch (Exception e) {
System.out.println("DB conn 关闭数据库连接错误 " + e.getMessage());
}
}
return null;
}
public void execUpdate(String sql) {
Connection conn = DBConnectionManager.getInstance().getConnection();
System.out.println("conn = " + conn);// for test the DBCP
try {
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
} catch (Exception ex) {
System.out.println("ex" + ex.getMessage());
} finally {
try {
conn.close();
} catch (Exception e) {
System.out.println("DB conn 关闭数据库连接错误 " + e.getMessage());
}
}
}
public DBConnectionManager() {
// TODO Auto-generated constructor stub
}
}
Top
10 楼Saro(这也不是江水,这是二十年流不尽的英雄血。)回复于 2006-05-05 12:04:39 得分 0
我在你的这个帖子里已经给了个例子。真是奇怪的需求,为什么一定要用struts的连接池啊???
http://community.csdn.net/Expert/topic/4730/4730672.xml?temp=.3928644Top
11 楼lulu123ma(抵制虚黄,支持实黄(扫黄现状))回复于 2006-05-05 19:08:38 得分 0
不要在这一层来作数据库的操作!!Top




