这样做可以么?

小_Y 2009-06-02 01:17:30
现在我写了一个类 初始化的时候10个连接。
每次需要用时直接获得连接。 用完在放回去。
这样有什么问题。
还有 有一个用户来了 new 了10个连接用了一个连接
又来一个 也是的。
怎么让这个类在tomcat初始化时就创建10个连接共给所有用户。 用servlet 的 init 可以么?

code:
import java.util.*;
import java.sql.*;
public class ConnectionsPool {
private String url = "jdbc:mysql://localhost:3306/test";
private Connection conn = null;
private LinkedList <Connection> list = null;
public ConnectionsPool(){
System.out.println("** 初始化5个连接");
list = new LinkedList <Connection>();
try{
for(int i=0; i <5; i++){
conn = DriverManager.getConnection(url,"root","luxing");
System.out.println(conn);
list.addLast(conn);
}
} catch(Exception e){}
}

public LinkedList <Connection> getAll(){
return list;
}


public Connection getConnection()throws Exception{
conn = list.removeFirst();
System.out.println("使用对象:" + conn);
return conn;
}

public Connection getConn() throws Exception {
return conn;
}

public void free(Connection conn){
System.out.println("收回对象:" + conn);
list.addLast(conn);
}
}

怎样让Tomcat初始化时候就调用他?
...全文
40 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dinghun8leech 2009-06-02
  • 打赏
  • 举报
回复
刚找到了,这样配置你所写的那个带有override的init方法的servlet:

<servlet>
<servlet-name>Servlet小名</servlet-name>
<servlet-class>Servlet的全线路径</servlet-class>
<load-on-startup>2</load-on-startup><!--这里是加载优先级,填2即可-->
</servlet>
dinghun8leech 2009-06-02
  • 打赏
  • 举报
回复
具体那个怎么配我忘记了,但是能达到楼主想要的功能,在服务启动时自动运行一次,之后不再运行。
dinghun8leech 2009-06-02
  • 打赏
  • 举报
回复
怎样让Tomcat初始化时候就调用他?
写一个servletClass,重写他的init方法,并在web.xml里进行配置(需要配一个运行优先级,实际配置方式与普通请求映射的配置方式不同)
保存若干数据库连接的容器可以作静态化处理,这样服务从开启到停止这些连接对象都会存在,然后再给出获取连接和归还连接的同步方法,但是这其中如何高效的找到“空闲”连接给需要的客户,就要花些时间在算法上了。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧