把连接池部分做成一个类, 其它servlet调用这个类中的getConnection()方法就可以了.
解决方案 »
- 【Java程序员】程序员成长体系之高手练成!--必看
- 以下几行代码的意思和关于HQL的问题?Thankyou~
- Java连接Oracle数据库
- 请教:SSH异常处理问题?
- SQL数据执行错误
- stp为什么不生成wdsl文件呀
- bean:write如何取得一个对象中嵌套的另一对象中的值
- 关于structs-config.xml的一个奇怪问题
- 求weblogic8.1+jbuilder9+mysql配置,无限分。
- 银联支付,后台回调接口,一直请求不到
- 访问WEB SERVICE 返回403?????
- 我做了两个JAVA文件和一个html。安装了JDK和TOMCAT,但我不知道应该放在哪里才能运行,该怎样运行
http://community.csdn.net/Expert/topic/3340/3340504.xml?temp=.8272821
把连接池部分做成一个类, 其它servlet调用这个类中的getConnection()方法就可以了.例子:public class OracleDB {
String url_ = "192.168.1.41:1521:gxcring";
//String url_ = "172.18.51.101:1521:SUNDB";
String id_ = "user";
String pass_ = "12345"; Connection conn = null;
Statement stmt = null; public OracleDB() {
try {
//Class.forName("oracle.jdbc.driver.OracleDriver");
//conn = DriverManager.getConnection("jdbc:oracle:thin:@" + url_, id_, pass_);
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
DataSource ds = (DataSource) envContext.lookup("jdbc/OracleDB");
conn = ds.getConnection(); stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
} catch (NamingException ne) {
System.out.println("Initial DataSource error.");
ne.printStackTrace();
} catch (SQLException e) {
System.out.println("ORACLE: " + e);
e.printStackTrace();
}
} /**
* 返回Connction对象
* @param none
* @return Connction
*/
public Connection getConn() {
return this.conn;
}
}
在其它的servlet中,只要
OracleDB DB = new OracleDB();
Connection conn = DB.getConn();
就可以用了。
我的意思是构造器中这部分代码只执行一次,然后都从第一次产生的DataSource得到conn
有没办法
public class OracleDB { Connection conn = null;
static DataSource ds = null;
public static Connection getConnect() {
if(ds==null){
try {
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
ds = (DataSource) envContext.lookup("jdbc/OracleDB");
} catch (NamingException ne) {
System.out.println("Initial DataSource error.");
ne.printStackTrace();
} catch (SQLException e) {
System.out.println("ORACLE: " + e);
e.printStackTrace();
}
}
}
return ds.getConnect();
}
}
对了java的基础我都忘记了
静态字段是以什么形态存在的
<Context path="/pcmateweb" docBase="" debug="0" reloadable="true">
<Resource name="jdbc/DbConnect" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/DbConnect">
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>removeAbandonedTimeout</name>
<value>60</value>
</parameter>
<parameter>
<name>logAbandoned</name>
<value>false</value>
</parameter>
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value>sa</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>net.sourceforge.jtds.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:jtds:sqlserver://dbserver:1433/dbname;SelectMethod=Cursor</value>
</parameter>
</ResourceParams>
</Context>然后代码理:
public static Connection getConnection()
{
Context ctx = null;
Connection conn = null; try
{
ctx = new InitialContext();
if (ctx == null)
System.out.println("initial context failed");
DataSource ds =
(DataSource)ctx.lookup("java:comp/env/jdbc/DbConnect");
if (ds == null)
{
System.out.println("java:comp/env/jdbc/DbConnect not found");
}
else
{
conn = ds.getConnection();
}
}
catch (Exception ex)
{
System.err.println("[getConnection]-" + ex.getMessage());
}
return conn; }
就可以了。
能不能只创建一次啊各位?这样多浪费啊!
public Static Connection getConnection()就行了。这样以后你就不需要创建对象,只接通过类名就可以调用而得到数据库的连接了。